Maintaining CPAN Modules
Dave Cross [email_address]
CPAN is Perl's Killer App
16,645 modules 7,695 authors 6,129 MB 244 mirrors
I have 24 distributions on CPAN
Array::Compare AudioFile::Info AudioFile::Info::MP3::ID3Lib Audiofile::Info::MP3::Info AudioFile::Info::MP3::Tag AudioFile...
Not actually a huge number
MIYAGAWA has 149 ADAMK has 201
But 24 is enough to make maintenance a chore
Some things you don't need to worry about
Distribution
Installation
Testing
Cross-platform Testing
Some things you do need to worry about
Bug tracking
Source code control
Maintenance and enhancements
So what do you do?
Get help
Use other people's tools
Bug tracking
RT is awesome
Every CPAN module gets an RT queue
rt.cpan.org
Mention that in your module documentation
You'll still get email
RT accepts reports by mail
TIP: Redirect, don't forward
TIP: Send bugs to yourself
Use RT to remember everything you need to do to your modules
Source code control
I used to host my own Subversion repository
Far too much like hard work
Git is Good
Github is Great
Free source code repository for Open Source projects
Distributed source code control
Easy for people to fork and patch your code
Patches are better than bug reports
Patches with associated tests are even better
Github also gives you a wiki
Github also gives you a bug tracker
I ♥ Github
Maintenance and Enhancement
Let's trace a typical change
Change request comes in
RT ticket or CPAN test failure or I have an idea
Check out latest revision from Github
Write tests
Yes Write tests before writing code
Tests tell you when you are finished
Write code until tests pass
Write tests until ALL tests pass
Don't care which editor you use
But use a decent programmer's editor
Take time to configure it to your tastes
Have tests to test quality of distribution
Test::Pod Test::Pod::Coverage Devel::Cover
Tools to monitor quality of code
Perl::Tidy Perl::Critic
Commit changes to Github
Tag for release e.g. RELEASE_1.07
Build distribution upload to CPAN (cpan-upload)
PAUSE takes care of the rest
I also release to my web site code.mag-sol.com
Code available on Github github.com/davorg
Brief aside on building distributions
ExtUtils::MakeMaker Module::Build Module::Install
Helpful stuff on CPAN that I should really investigate
Module::Starter
Module::Release
Maintaining CPAN module need not be hard work
This is supposed to be fun
Plenty of help out there
Plenty of tools to use
Please join in
 
Upcoming SlideShare
Loading in …5
×

CPAN Module Maintenance

3,241 views
3,142 views

Published on

The tools that I use to maintain my CPAN modules.

Published in: Technology, Art & Photos
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,241
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
32
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

CPAN Module Maintenance

  1. 1. Maintaining CPAN Modules
  2. 2. Dave Cross [email_address]
  3. 3. CPAN is Perl's Killer App
  4. 4. 16,645 modules 7,695 authors 6,129 MB 244 mirrors
  5. 5. I have 24 distributions on CPAN
  6. 6. 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
  7. 7. Not actually a huge number
  8. 8. MIYAGAWA has 149 ADAMK has 201
  9. 9. But 24 is enough to make maintenance a chore
  10. 10. Some things you don't need to worry about
  11. 11. Distribution
  12. 12. Installation
  13. 13. Testing
  14. 14. Cross-platform Testing
  15. 15. Some things you do need to worry about
  16. 16. Bug tracking
  17. 17. Source code control
  18. 18. Maintenance and enhancements
  19. 19. So what do you do?
  20. 20. Get help
  21. 21. Use other people's tools
  22. 22. Bug tracking
  23. 23. RT is awesome
  24. 24. Every CPAN module gets an RT queue
  25. 25. rt.cpan.org
  26. 26. Mention that in your module documentation
  27. 27. You'll still get email
  28. 28. RT accepts reports by mail
  29. 29. TIP: Redirect, don't forward
  30. 30. TIP: Send bugs to yourself
  31. 31. Use RT to remember everything you need to do to your modules
  32. 32. Source code control
  33. 33. I used to host my own Subversion repository
  34. 34. Far too much like hard work
  35. 35. Git is Good
  36. 36. Github is Great
  37. 37. Free source code repository for Open Source projects
  38. 38. Distributed source code control
  39. 39. Easy for people to fork and patch your code
  40. 40. Patches are better than bug reports
  41. 41. Patches with associated tests are even better
  42. 42. Github also gives you a wiki
  43. 43. Github also gives you a bug tracker
  44. 44. I ♥ Github
  45. 45. Maintenance and Enhancement
  46. 46. Let's trace a typical change
  47. 47. Change request comes in
  48. 48. RT ticket or CPAN test failure or I have an idea
  49. 49. Check out latest revision from Github
  50. 50. Write tests
  51. 51. Yes Write tests before writing code
  52. 52. Tests tell you when you are finished
  53. 53. Write code until tests pass
  54. 54. Write tests until ALL tests pass
  55. 55. Don't care which editor you use
  56. 56. But use a decent programmer's editor
  57. 57. Take time to configure it to your tastes
  58. 58. Have tests to test quality of distribution
  59. 59. Test::Pod Test::Pod::Coverage Devel::Cover
  60. 60. Tools to monitor quality of code
  61. 61. Perl::Tidy Perl::Critic
  62. 62. Commit changes to Github
  63. 63. Tag for release e.g. RELEASE_1.07
  64. 64. Build distribution upload to CPAN (cpan-upload)
  65. 65. PAUSE takes care of the rest
  66. 66. I also release to my web site code.mag-sol.com
  67. 67. Code available on Github github.com/davorg
  68. 68. Brief aside on building distributions
  69. 69. ExtUtils::MakeMaker Module::Build Module::Install
  70. 70. Helpful stuff on CPAN that I should really investigate
  71. 71. Module::Starter
  72. 72. Module::Release
  73. 73. Maintaining CPAN module need not be hard work
  74. 74. This is supposed to be fun
  75. 75. Plenty of help out there
  76. 76. Plenty of tools to use
  77. 77. Please join in

×