Dependencies and patches - easy fix!

Problem:

I've been upgrading some systems at work recently. Using local::lib so I can test it first without worrying about rolling back being a pain (which it could be with our current build system).

We've had most of our CPAN modules installed for several years and haven't had the need/time to upgrade them. But with the advent of Catalyst 5.8 using Moose and other great projects we'd like to get involved in, such as Gitalist I bit the bullet and started installing into my local::lib so I could then run our tests against it, but then I hit a few problems....

Now remember when I said we had old module? - I'm talking some that haven't been upgraded in 4+ years (they only get upgraded when a newer version is set at a prerequisite).

What I found was although most modules passed their tests, there were a few that wouldn't, and this was because the package either didn't specify the dependency, didn't specify the dependency version, or required a module that now had a broken version on CPAN (and actually didn't need the module anymore because they'd coded around it!).

Solution:

I was glad to find all of the packages which had these issues were on github. So I:


  1. click fork

  2. clone to my local machine

  3. Edited Makefile.PL, Changes and set a new $VERSION

  4. push, back to git up

  5. click 'send pull request' (to inform the author)

Out of 4 distributions patched, I've already had two confirmed as merged in, one release to CPAN and this is all within 24 hours!

I've even submitted a minor one line doc patch to another module this way and it was on CPAN that afternoon.

Git (and github) really does make supplying (and accepting) patches very easy, so the next time you find an issue, see if the distribution has a repository and create a patch, it really doesn't take much time at all.

I've almost finished migrating all my own CPAN modules to Github, so if you'd like to patch those please fork from http://github.com/ranguard/.

Thanks:

Of course all of this wouldn't be possible without the great work people do in maintaining their modules (accepting and uploading patches for example!) in the first place - so once again thanks to the Perl community as a whole, you make my work FUN!

Leave a comment

About Ranguard

user-pic London Perl developer