Things I Learned From Having Users

Embed Size (px)

Citation preview

Things I
Learned
From
Having Users

Dave Cross
[email protected]

It's 10 Years
Since I Got
A CPAN Account

April 29 2000

Array::Compare 0.01

It's a pretty pointless module

Comparing arrays using a ridiculous algorithm

My second module
on CPAN was Symbol::Approx::Sub

There may be
a theme
developing here

I now have 24
distributions
on CPAN

Array::Compare AudioFile::Info AudioFile::Info::MP3::ID3Lib Audiofile::Info::MP3::Info AudioFile::Info::MP3::Tag AudioFile::Info::Ogg::Vorbis::Header AudioFile::Info::Ogg::Vorbis::Header::PurePerl Calendar::Simple Guardian::OpenPlatform::API Net::Backpack Number::Fraction Parse::RPM::Spec Perlanet Symbol::Approx::Sub Template::Plugin::AudioFile::Info Template::Plugin::RPM2 Template::Plugin::XML::Feed Tie::Hash::Cannabinol Tie::Hash::FixedKeys Tie::Hash::Regex WWW::Shorten WWW::Shorten::Qurl WWW::Shorten::Qwer WWW::Shorten::SnipURL

Most of them
have tiny numbers of users

Having few users
is good

Users are a problem

Users report bugs

Users suggest enhancements

Users expect you to listen to them

Writing
unpopular modules
is good

You can release what you want

You can release when you want

You can completely change the interface

(Users don't
like that)

On the other hand

Users make suggestions that you would never have thought of

Users use your code in new and interesting ways

Users test your code
for you

Users report problems

Users supply failing tests

Users write patches

Users are good!

Embrace your users

But!

Popularity brings problems

Too many
active users

Too many
bug reports

(Why are you
releasing
buggy code?)

Too many
bug reports

Too many
bug reports

Too many
enhancement
requests

Use the tools

CPAN has
a great
infrastructure

Distribution
is handled
for you

Testing
is handled
for you

Cross-platform
testing
is handled
for you

Bug tracking
is handled
for you

Every
CPAN module
gets its own
RT queue

rt.cpan.org

Add that
to your
documentation

To report bugs in Perlanet, please use the CPAN request tracker. You can either use the web page at http://rt.cpan.org/Public/Bug/Report.html?Queue=Perlanet or send an email to [email protected].

All bugs get automatically
stored in RT

It won't work

AUTHOR

Dave Cross,

To report bugs in Perlanet, please use the CPAN request tracker. You can either use the web page at http://rt.cpan.org/Public/Bug/Report.html?Queue=Perlanet or send an email to [email protected].

TLDR

AUTHOR

Dave Cross,

Install the
Redirect add-on
for Thunderbird

Install the
Redirect add-on
for Thunderbird

* Dave's Top Tip

Or use
the bounce key
in Mutt

Send
your own bugs
to RT

Use RT
to remember
everything
you need to do
to your modules

Use RT
to remember
everything
you want to do
to your modules

Some
examples

Example 1:
Moose

Moose is good

I started
to Moosify
my modules

Remember
Array::Compare?

The module
that no-one
used

I got a
bug report

Bug #49270
for Array-Compare: Remove the use
of Moose

Padre project was unhappy

Moose was
slowing their
performance

I
thought
about it

I
blogged
about it

Other people
blogged
about it

In the end
I did nothing

Source code
is on Github

Feel free
to fork it

Moral:

The user
is not always
right

Example 2:
Net::Backpack

Backpack
from
37 Signals

Personal
information
manager

With an API

Net::Backpack

It's a
big API

I got bored

Release early
Release often

Released
a partial
implementation

Someone
found it useful

Sent a patch
completing the
implementation

Yay neshura!

Example 3:
Perlanet

Perlanet
is a web feed
aggregator

Wrote it
because
I didn't want
to hack Python

And Plagger
was too complex
for me to
understand

So Perlanet
is really
simple

Too simple

Users have
weird
use cases

Users have
weird
use cases

Users have
unexpected
use cases

Alex Kapranoff
(kappa)

perlplanet.ru

Cyrillic

Lots of
Unicode
bugs

kappa
didn't
complain

kappa
forked
Github repo

kappa
fixed
the bugs

kappa
sent
a pull request

kappa++

Planet Iron Man

Originally
used Plagger

Wanted to
switch to
Perlanet

YAML
configuration

Simple

Doesn't scale

North West
England
Perl Mongers

Hackfest

Many
improvements

More
subclassable

Github
pull request

Everybody wins

In summary

Writing
software
just for
yourself
is fun

Writing
software
for users
is better

Seeing your
software
being used
is great

Getting feedback
about your
software
is great

Users supply
bugs

Users supply
patches

Users supply
new ideas

Users supply
insight

Users
appreciate
your work

But best of all

Some users
show their
appreciation...

By buying
you beer