The QA Hackathon 2016 was a great success!
As you're probably very aware by now, the Perl QA Hackathon was last weekend, and it was a great success. Just under 40 people assembled in Rugby in the UK, to work on the Perl and CPAN infrastructure that everyone using Perl relies on. Many bugs were fixed, problems solved, ideas germinated, and cans kicked down the road. Those same people working alone for 4 days would not have achieved anywhere near as much, and that's why we do this, every year.
We gathered on the Wednesday night, and most of us had beer and pub grub over the road from the hotel. The first evening is to renew friendships and start getting into QAH mode. We kicked off on Thursday with a stand-up: introducing yourself and what you plan to work on, helping people identify common areas of interest. We had other stand-ups through the weekend, to share progress and anything new that had come up. People then split up and got down to work. On the Thursday evening we had a group meal paid for by one of the sponsors, Perl Careers. On other evenings people did their own things, then typically went back to the hotel to get more hacking done.
We took over most of the hotel where we were all staying: during the day we had two meeting rooms and also used various other spaces to spread out. This worked well, as some people worked alone, some in pairs, some in groups, and some people moved across all of those.
I'm not going to try and summarise everything that was done, as that would take too long, and you can read a more detailed list on the wiki. Instead I'll try to give a flavour of the attendees and the work that went on.
PAUSE is one of the lynchpins of the Perl ecosystem: it's the service used to upload releases to CPAN. Andreas König (on the left in the picture) is the guy who created PAUSE, and he comes to the QAH every year to continue hacking on it. He merged a load of pull requests and worked with a number of people on PAUSE-related projects (Andreas's blog post). In particular he worked with Kenichi Ishigaki (on the right), to complete the work Ishigaki-san started last year to port it to Plack (Ishigaki-san's blog post). This will make it much easier to test PAUSE, and thus for other people to hack on it. Pete Sergeant came with certain plans, but ended up working on tests for the PAUSE web front-end. Colin Newell pulled various people together to agree how PAUSE should be changed to ensure consistent permissions on all modules in a distribution (Colin's blog post).
MetaCPAN is the search engine that most of us use to find CPAN modules these days. More than that, it's how we read documentation, and find out all sorts of useful information about modules and their authors. The MetaCPAN team set up shop in the corner of the dining room and beavered away. Olaf Alders (least amount of hair) and Mickey Nasriachi (happiest looking) had come with one main goal: work on updating MetaCPAN to work with Elasticsearch 2.x (upgrading from 0.x). Leo Lapworth (on the right) joined them for the first two days of the hackathon, and Sawyer X ("helping" Leo) ended up being roped in too. They didn't quite complete the task, but made great progress. Blog posts: Olaf's, Sawyer's, Leo's.
Liz and Tadeusz came to work on Perl 6. It's serious business, as you can tell from this snap. Throughout the weekend various people would drop by their table to discuss various Perl 6 issues and pair with them on specific tasks. Liz had a lot of discussions with people on how Perl 6 will fit into PAUSE and CPAN.
We had invited a good few more Perl 6 hackers to join us, but for various reasons they were sadly unable to attend.
For a long time Merijn "Tux" Brand (on the left) has been the maintainer of the metaconfig and Configure parts of Perl 5. This is the subsystem used to build Perl 5. Aaron Crane (on the right) has volunteered to help, so they spent a lot of time working together (Tux on the left, Aaron on the right). A lot of their work will be included in Perl 5.24, due for release any day now (Aaron's blog post).
Abe Timmerman (red top) worked on improvements to the Smoke Reports website, which lets you slice and dice results from test builds of blead (the latest development version of Perl 5), and released a new version of Test::Smoke. Barbara Veloso was meant to be on holiday, as her partner Breno was attending the QAH. But when we heard she's a front-end designer we put her to work. She worked with Leo on improving the look of various Perl web sites, and help on a proposal related to the River of CPAN (see below). Matt Trout (on the left) joined in various areas, in particular helping out the MetaCPAN crew.
CPAN Testers is another of the jewels in Perl's crown, and for the last 10 years Barbie (far left) has kept the service running. He's now in the process of handing the reins over to Doug Bell (second from the right), so they worked through some of that handover (Doug's blog post). Barbie fixed a number of issues, and Doug also worked on tools to make it easier to set up test instances. The people invited to the QAH are those who have been working on the key modules and systems over the last year or so, but this year we tried an experiment in the same vein as the "send a newbie" program. Oriol Soriano (on the right) came along to help out with CPAN Testers, and embraced his role as the "QAH Intern" (Oriol's blog post). It worked really well, so I hope we do the same next year.
Chris "BINGOS" Williams (left) does all sorts of things in the CPAN toolchain. In particular he's the lead on the venerable ExtUtils::MakeMaker (EUMM), the module used to build and install a good percentage of the modules on CPAN. He released a new version of EUMM, worked on smokers, did a raft of other things and helped plenty of other people out too. Leon Timmermans (centre) is another toolchain guy who pops up everywhere, so no surprise that he was snapped in a discussion with Chris. He worked on EUMM, Perl 6 build, Dist::Zilla, the test harness, and participated in the Test2 discussions (see below).
One of the benefits of the QAH is that people can get together in a room to hammer out issues and make hard decisions. One good example of that related to Test2. This is a project to replace the core test harness used in Perl with a modern framework. Replacing critical components is tricky and requires a lot of thought and hard work. This has been led for the last two years by Chad "Exodist" Granum (black shirt on the left). A group of attendees got together to talk about the current status, and the right way to move this project forward. For something like this you'll never find a way that will satisfy everyone, but worked hard to understand all concerns, and decide the least painful way forward. Joel Berger (bearded guy with arm plunging into laptop screen) came to help with Test2 (his blog post on Test2), but ended up helping out in various places, including MetaCPAN (Joel's other blog post).
You've probably heard of Rik Signes (on the left) -- he's been the Pumpking for the last 4 stable releases, and will do one more before he hands the reins over to Sawyer. He worked on v6 of Dist::Zilla, his author tool use by many CPAN authors; did the second release candidate of Perl 5.24, led a discussion on the Software::License module, and paired with a lot of different people to help solve problems (including me) (Rik's blog post). Breno de Oliviera (back to the wall) worked on test reporters for CPAN Testers. This are plugins for CPAN clients which upload test results to CPAN Testers when you install modules from CPAN. Karen "ETHER" Etheridge (on the right) did a developer release of Moose, fixed a bug in Dist::Zilla's DynamicPrereq's plugin, worked on a bunch of other issues, and participated in many discussions. Matt Horsfall (back to camera) fixed a number of PAUSE bugs, and submitted pull requests to various parts of the toolchain (Matt's blog post).
Steffen Schwigon (on the left) working on benchmarking Perl and a release of Net::SSH::Perl, amongst other things. Aristotle Pagaltzis (on the right) was working on a modern replacement for Module::CoreList, which will provide an API for finding out which modules were shipped with which versions of Perl. It's functionality that's very useful for other people developing CPAN tools.
Christian Walde worked on PPI, which lets you parse Perl code. A number of tools use PPI, for example to parse modules and scripts looking for dependencies. Matt Horsfall helped out on PPI as well. Daniel "Bulk" Dragan worked on a range of Windows-related issues, in particular fixing a challenging Heisenbug in Test::Harness.
Tim Bunce is the author of DBI, and current maintainer of Devel::NYTProf. At the QAH he released a new version of DBI, and joined in a number of the discussions.
Olivier Mengué worked on some Dist::Zilla plugins and did a new release of Pod::Spell. Paul Johnson is the author of Devel::Cover, Perl's awesome test coverage tool. He worked on CPAN Cover, his service which runs Devel::Cover on all CPAN modules, and continued discussions with Olaf Alders on getting the coverage data in MetaCPAN (Paul's blog post).
Philippe Bruhat (BOOK, left) worked on Git::Database, did some Perl 6 work, and with Olivier started working on collecting CPAN dependency information for Linux distros (Philippe's blog post). Slaven Rezic worked on CPAN::Plugin::Sysdeps, a new plugin for the CPAN module which will install non-CPAN dependencies (eg C libraries) automatically.
A group of us got together to discuss the River model for CPAN - a way to think about the dependency graph, and improving the reliability of CPAN. We agreed to add this information to MetaCPAN, and Joel Berger coded the changes up for MetaCPAN, and Barbara worked on ideas for the UI changes. I took some actions to work on (blog post on River discussion).
No summary of the QAH is complete without Wendy (seen here with Colin Newell): every year she comes and helps things run smoothly. Each day she would go and buy fresh fruit and veg, then chop them up into healthy snacks. And provide less healthy snacks too. She'd run errands and basically do whatever would help everyone stay focussed. And then she'd go into the discussions, take notes, and transcribe them (Wendy's blog post). Thank you Wendy!
And finally, the obligatory group photo:
Hopefully that gives you a feel for the QAH, and why it's the favourite event of the year for so many attendees. You're in a room with a bunch of other people who care about the same things, and you get lots of stuff done. You also go away with a long list of things to work on for the coming year, and fired up to do them.
It wouldn't be possible to hold the event without the support of our fantastic sponsors. If you get a chance, please thank them, as we all do: FastMail, ActiveState, ZipRecruiter, Strato, SureVoIP, CV-Library, OpusVL, thinkproject!, MongoDB, Infinity, Dreamhost, Campus Explorer, Perl 6, Perl Careers, Evozon, Booking, Eligo, Oetiker+Partner, CAPSiDE, Perl Services, Procura, Constructor.io, Robbie Bow, Ron Savage, Charlie Gonzalez, Justin Cook.
This year's QAH was organised by Barbie, JJ Allen, and me. We don't know where next year's QAH will be yet, but it will be somewhere in Europe.
Most of the photos used here were taken by JJ, and lifted from his QAH album on flickr. The not-so-good pictures were taken by me.