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::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
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
 

CPAN Module Maintenance