Things I Learned From Having Users
Dave Cross [email_address]
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...
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/Pub...
All bugs get automatically stored in RT
It won't work
AUTHOR Dave Cross, <dave@mag-sol.com>
To report bugs in Perlanet, please use the CPAN request tracker. You can either use the web page at http://rt.cpan.org/Pub...
TLDR
AUTHOR Dave Cross, <dave@mag-sol.com>
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
 
Upcoming SlideShare
Loading in...5
×

Things I Learned From Having Users

1,652

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,652
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Things I Learned From Having Users

  1. 1. Things I Learned From Having Users
  2. 2. Dave Cross [email_address]
  3. 3. It's 10 Years Since I Got A CPAN Account
  4. 4. April 29 2000
  5. 5. Array::Compare 0.01
  6. 6. It's a pretty pointless module
  7. 7. Comparing arrays using a ridiculous algorithm
  8. 8. My second module on CPAN was Symbol::Approx::Sub
  9. 9. There may be a theme developing here
  10. 10. I now have 24 distributions on CPAN
  11. 11. 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
  12. 12. Most of them have tiny numbers of users
  13. 13. Having few users is good
  14. 14. Users are a problem
  15. 15. Users report bugs
  16. 16. Users suggest enhancements
  17. 17. Users expect you to listen to them
  18. 18. Writing unpopular modules is good
  19. 19. You can release what you want
  20. 20. You can release when you want
  21. 21. You can completely change the interface
  22. 22. (Users don't like that)
  23. 23. On the other hand
  24. 24. Users make suggestions that you would never have thought of
  25. 25. Users use your code in new and interesting ways
  26. 26. Users test your code for you
  27. 27. Users report problems
  28. 28. Users supply failing tests
  29. 29. Users write patches
  30. 30. Users are good!
  31. 31. Embrace your users
  32. 32. But!
  33. 33. Popularity brings problems
  34. 34. Too many active users
  35. 35. Too many bug reports
  36. 36. (Why are you releasing buggy code?)
  37. 37. Too many bug reports
  38. 38. Too many bug reports
  39. 39. Too many enhancement requests
  40. 40. Use the tools
  41. 41. CPAN has a great infrastructure
  42. 42. Distribution is handled for you
  43. 43. Testing is handled for you
  44. 44. Cross-platform testing is handled for you
  45. 45. Bug tracking is handled for you
  46. 46. Every CPAN module gets its own RT queue
  47. 47. rt.cpan.org
  48. 48. Add that to your documentation
  49. 49. 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 bug-Perlanet@rt.cpan.org.
  50. 50. All bugs get automatically stored in RT
  51. 51. It won't work
  52. 52. AUTHOR Dave Cross, <dave@mag-sol.com>
  53. 53. 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 bug-Perlanet@rt.cpan.org.
  54. 54. TLDR
  55. 55. AUTHOR Dave Cross, <dave@mag-sol.com>
  56. 56. Install the Redirect add-on for Thunderbird
  57. 57. Install the Redirect add-on for Thunderbird * Dave's Top Tip
  58. 58. Or use the bounce key in Mutt
  59. 59. Send your own bugs to RT
  60. 60. Use RT to remember everything you need to do to your modules
  61. 61. Use RT to remember everything you want to do to your modules
  62. 62. Some examples
  63. 63. Example 1: Moose
  64. 64. Moose is good
  65. 65. I started to Moosify my modules
  66. 66. Remember Array::Compare?
  67. 67. The module that no-one used
  68. 68. I got a bug report
  69. 69. Bug #49270 for Array-Compare: Remove the use of Moose
  70. 70. Padre project was unhappy
  71. 71. Moose was slowing their performance
  72. 72. I thought about it
  73. 73. I blogged about it
  74. 74. Other people blogged about it
  75. 75. In the end I did nothing
  76. 76. Source code is on Github
  77. 77. Feel free to fork it
  78. 78. Moral:
  79. 79. The user is not always right
  80. 80. Example 2: Net::Backpack
  81. 81. Backpack from 37 Signals
  82. 82. Personal information manager
  83. 83. With an API
  84. 84. Net::Backpack
  85. 85. It's a big API
  86. 86. I got bored
  87. 87. Release early Release often
  88. 88. Released a partial implementation
  89. 89. Someone found it useful
  90. 90. Sent a patch completing the implementation
  91. 91. Yay neshura!
  92. 92. Example 3: Perlanet
  93. 93. Perlanet is a web feed aggregator
  94. 94. Wrote it because I didn't want to hack Python
  95. 95. And Plagger was too complex for me to understand
  96. 96. So Perlanet is really simple
  97. 97. Too simple
  98. 98. Users have weird use cases
  99. 99. Users have weird use cases
  100. 100. Users have unexpected use cases
  101. 101. Alex Kapranoff (kappa)
  102. 102. perlplanet.ru
  103. 103. Cyrillic
  104. 104. Кириллица
  105. 105. Lots of Unicode bugs
  106. 106. kappa didn't complain
  107. 107. kappa forked Github repo
  108. 108. kappa fixed the bugs
  109. 109. kappa sent a pull request
  110. 110. kappa++
  111. 111. Planet Iron Man
  112. 112. Originally used Plagger
  113. 113. Wanted to switch to Perlanet
  114. 114. YAML configuration
  115. 115. Simple
  116. 116. Doesn't scale
  117. 117. North West England Perl Mongers
  118. 118. Hackfest
  119. 119. Many improvements
  120. 120. More subclassable
  121. 121. Github pull request
  122. 122. Everybody wins
  123. 123. In summary
  124. 124. Writing software just for yourself is fun
  125. 125. Writing software for users is better
  126. 126. Seeing your software being used is great
  127. 127. Getting feedback about your software is great
  128. 128. Users supply bugs
  129. 129. Users supply patches
  130. 130. Users supply new ideas
  131. 131. Users supply insight
  132. 132. Users appreciate your work
  133. 133. But best of all
  134. 134. Some users show their appreciation...
  135. 135. By buying you beer
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×