Perl QAH 2016

This past week I once again attended the annual Perl Quality Assurance Hackathon in Rugby, U.K.

This event centers around a bunch of Perl enthusiasts getting together to work on the Perl Toolchain - the underlying systems, processes, tools, and vast testing infrastructure that ensure Perl and its modules (CPAN) are available and installable on a wide array of architectures.

At this particular event, I spent some time familiarizing myself with the PAUSE code base (with the help of rjbs), and fixing up a bunch of low hanging fruit:

  • Allowing build-fresh-cpan (a debugging/development tool) to:
    • Pre-populate the database from 02packages and 06perms
    • Store generated emails on disk so that they can be examined
  • Update various little bits of documentation
  • Add SHA1 checksums along side MD5 checksums in file upload notification emails

At the request of rjbs and with the help of Mithaldu, I also added some functionality to PPI to provide access to the version in package declarations like:

package Thing 2.31;

Along the way I filed a few bugs and minor PRs in some other projects that popped up through the course of my work.

On day 3, rjbs had released a trial version of Dist::Zilla 6.0 which included some semi-significant changes to previous Dist::Zillas.

I thought it'd be neat to have a way to easily test the new release against all of its various plugins and compare the results to the existing release, and so I wrote p5-distribution-smoke, which let me do something like...

./dist-smoke.pl Dist::Zilla@5.047 Dist::Zilla@6.000 'Dist::Zilla::Plugin::Readme*' results
 Generating report...
 Report:
 =======

     Now failing:

        Dist::Zilla::Plugin::ReadmeMarkdownFromPod
        Dist::Zilla::Plugin::ReadmeAnyFromPod


 2 distributions continued to pass
 1 distributions continued to fail

...and then examine the output of the failed builds to see what broke.

I'm really excited about this project, and I have plans to expand its functionality significantly so you can easily do things like:

  • Compare a release in development with the latest release on CPAN against all modules that directly depend on it
  • Compare two releases against all modules that indirectly depend on them
  • Compare releases against a list of specific modules
  • Compare multiple releases and generate comparisons for each

After that, I spent a large amount of time tracking down a bug that was preventing CHI::Driver::Memcached from installing when a newish version of Memcached::libmemcached was installed. (Thanks to Tim Bunce for giving me the itch to do so...)

I also attended a few of the various meetings (mostly as an interested party in the discussions), played some board games, ate some wonderful food, and had an all-in-all great time talking with friends and meeting new people.

I'd like to thank the sponsors who make this event possible, for without them, we wouldn't have accomplished so much.

Also huge props to Neil Bowers, Barbie, and Jon Allen for organizing, and thanks to Wendy as always for helping out.

Thank you!

-- Matthew Horsfall (alh)