CPAN Day - 317 Uploads and 21 Guns

Sometime in May 2014, ETHER mentioned on IRC that she would soon be passing me up on this leader board. I was number 20 and she wasn't far behind. I guess I took that as a challenge, because this past weekend on CPAN day, I moved into the #6 spot. This post explains how.

I've created a couple CPAN packagers over the years, like Module::Install, and Module::Package, but earlier this year I decided to give up on those and just use Dist::Zilla, so I moved most of my active stuff to that. In the past year, as an Acmeist, I started doing a lot of real programming in Bash, and recently I made a Bash-heavy wrapper around Dist-Zilla called Zilla-Dist.

I've moved about 80 (half) of my CPAN dists to Zilla-Dist. ZD is all about hyper automation and generating everything (including my dist.ini file) from data. It allows me to move really fast and not be afraid to release code. I often just change a line of code, and type `make release`. ZD tests it, commits it and (assuming all good) releases it. I end up releasing about 5-40 times a day!

For CPAN Day I decided to see how many releases I could do in a day. I asked NEILB what the record was and he said 150. I realized that he meant 150 worldwide and asked about the personal record. He did his NEILB math and figured out that one guy had done 42 (and that ETHER and INGY were tied for 2nd place at 41)!

On CPAN Day 2014, I uploaded 317 distributions. NEILB had asked me earlier in the week to do a 21 gun salute, meaning that I do 21 releases on CPAN Day. I set up ZD to upload 21 releases in the first minute of CPAN Day. After that I used my zild-massive-attack script, which looks through all my ZD-enabled repos for some particular issue I want to address, en masse. ZDMA puts me in a Bash shell for that repo and I do the fix and release it. All very Henry Ford automation style.

Last week I made a list of little things to Massive Attack, so I could see how much I could do. I aimed for 500 releases, but fell short. I only slept 4 hours and spent all my waking hours releasing dists. I even set up timed releases for every 1/2 hour while I slept.

All this was just good fun. I don't equate myself with the likes of MIYAGAWA just for passing him on the leaderboard. However, I now have no fear of doing 50 releases a day.



The official final tally for you was 316. The first was App-AYCABTU-0.08.tar.gz at 2014-08-16 00:00:29, and the last was Swim-0.1.22.tar.gz at 2014-08-16 23:58:26. These are based on the unix UTC timestamps of the files rather than PAUSE messages.

All the CPAN stats on the CPAN Testers Statistics site are based on these file timestamps.

So next year I take it you'll be aiming for 500 again? With the rest of contributing that little be extra we should make the 1K mark :)

Ingy, here are the top 5 uploaders in a single day:

  316 : INGY        [2014-08-16]
   60 : KENTNL      [2014-08-16]
   52 : SHARYANTO   [2014-08-16]
   42 : ETHER       [2014-08-16]
   42 : PERFSONAR   [2008-01-16]

Spectacular effort sir!

Disclaimer : What's coming next is a rant. You're free to call me a troll, or simply ignore me on the basis that I have no contributions on CPAN and that non-contributors just have the right to shut up. But as CPAN day passed and I often refreshed MetaCPAN's recent page and looked at the changelogs, I couldn't help but feel appalled by the 'quality' of some releases.
Note : While I'm writing this, I just realized that the problem was fixed 4 hours ago. Still...


What's even more spectacular is that in those 24 hours and with 317 releases, your fancy new release tool didn't catch that most of them -- of which a majority looks more like (meta-)care-taking than bug fixing or improvement, and let's not forget those introducing-a-bug-and-fix-it-5-minutes-later combos -- won't even install on a fresh Perl setup. But I guess it's great that you can release "about 5-40 times a day!"

I was really looking forward to contributing to this CPAN Day and was that close to release my first distribution, but after a few hours watching all these meaningless commits just killed the mood.

If it's going to be a trend in the Perl community to celebrate quantity over quality on the CPAN, I think I'll stick to doing my occasional PRs when I find a bug and pushing some code on github in case anyone is interested.

But yeah, I guess congratulations are in order.

@Honore - I'm pretty sure Ingy was not trying to "win" CPAN day. If anything he's shown that with the right workflow, automation and tools - vim + git or some VCS + bash (!?) - committing changes and updates to CPAN can be done on a what approaches massive scale. That could be useful for a private archive (c.f. Pinto) or the "mother ship" canonical CPAN itself. So to me, even though some of the changes were "staged" (literally and figuratively), this auto-Ingy-ification was still a useful demonstration of the power of CPAN and perl ... errm and bash :-D

But mostly I'm impressed because the CPAN "system" worked and all the folks who contributed put it through its paces to celebrate. If CPAN day becomes a tradition it would be a good thing.

Leave a comment

About Ingy döt Net

user-pic I am an Acmeist Hacker. I program in many languages to meet many people. Perl people are my favorite people. Currently I am working as a Distinguished Technologist for Hewlett Packard Enterprise; developing the future of cloud solutions.