One night back in Cambridge I found myself dining on waffle fries at Charlie’s Kitchen in the company of a few local games-n-tech people. The subject turned to interactive fiction, an interest of many at the booth, and the person sitting across from me tried to goad me into taking the parser’s side in an impromptu Twine-versus-Inform debate. I demurred, offering some lines about the equal validity of both approaches. Another friend then decided to take my position for me: “Listen, he just likes Inform because it’s weird and difficult. He also programs in Perl.”
This memory arose while I gathered my thoughts to write about a pair of exciting, inspirational events I watched unfold over the past year. Though unrelated, I see them as coming from similar places. In both cases, individual members of relatively small communities centered around somewhat non-mainstream creative technologies stepped up to organize a challenge for their colleagues. They met with surprising success, not just in terms of fun and novelty, but in finding a simple, surprising route to shunt a fresh current of positive energy and vitality into their respective communities, by way of their own members.
Last spring, Sam Kabo Ashwell held the first ShuffleComp, which I consider far and away the best thing to happen to the hobbyist text-game community that year, and among the best since the banner year of 2010. Participants got to have fun in three distinct stages: sharing songs they love with one another (without stress over matching songs to receivers), rising to the challenge of creating new games based on the songs they received, and then playing folks’ resulting work.
Thirty-three new IF works resulted, including my own Barbetween, which (with most of a year to look back on it) I consider one of the best things I’ve ever made. My game and Jason Dyer’s More (which, coincidentally, I helped playtest) got short writeups in Rock Paper Shotgun, and in general the community lit up with energy and discussion for months, straight through the tallying of the event’s list of most-favored entries. It all brings to mind IFComp’s own origin story, except updated for the IF community 20 years on, part of a contemporary internet vastly wider in terms of population, bandwidth, and the low-cost creative resources these make feasible; ShuffleComp’s playlists would have proved logistically impossible without YouTube.
One of the highest-commended entries, Mæja Stefánsson’s An Earth Turning Slowly, combines hypertext and a text parser in an entirely novel way (via the always-beautiful Undum IF platform), and furthermore came from a first-time IF author. This fact alone demonstrates ShuffleComp’s success, as far as I can see.
This year, Nigel Jayne organizes “Disc 2” of ShuffleComp. I admit that part of me thinks of ShuffleComp as rather like a World’s Fair, something amazing to catalyze imaginations and imprint memories for years to come, rather than acting as another cyclical event. For this reason and others, I choose to stay out of the running this time around, but I plan to pay attention to the outcome once more, and shall be interested to see if this event has the potential to become a repeating tradition.
And on that note: Last month I signed up for the CPAN Pull Request Challenge, a brand-new but monthly-by-design event organized by Neil Bowers. In a manner somewhat reminiscent of ShuffleComp’s randomized playlists, CPAN-PRC participants each receive every month, via an automated system, the name and GitHub address of a single Perl module that (in the algorithmic eyes of said automated system) could use a little extra community help. It then becomes each participant’s personal quest to submit at least one valid pull request to their assigned module, containing an improvement of any sort — whether fixing an open issue, or improving test coverage, or even simply cleaning up its documentation a bit. And the end of every month, those who succeed receive praise in a public tally-sheet, and the process begins again.
A bit of background: CPAN is the long-lived, community-maintained repository for extensions (a.k.a. “modules”) to the Perl programming language. I have used Perl, my favorite general-purpose language, most every day in work and play since 1998, even though its star of global popularity set sometime after the 1990s as more alternatives in the same space — Ruby, Python, and Node, for the most part — came into their own. Perl has remained just on the the right side of community critical mass since those days, with a userbase (including moneyed professional interests) just large enough to allow new developments and continual improvements in the language, in terms of both technology and policy. And CPAN has played a key role through all this, giving the community a single focal point for organizing and sharing its work.
I feel tempted to weave a narrative of the language’s rescue from mortal danger here, starting with “but, there was a problem, see,” and talking about how while the number of modules shared on CPAN always rose, the amount of month-over-month user activity remained dispiritingly flat. But, I don’t actually know this for a fact. What I do know, including a summary of why the Pull Request Challenge makes my heart skip a beat, is visible within this tweet:
While one could argue that the amount of GitHub-based CPAN activity had been trending upwards anyway, the positive effect of the CPAN-PRC, which began in January — the third bar from the right — seems undeniable. The last three months have seen the most Perl-related activity on GitHub ever, and Perl becomes that much stronger for it, and everyone who pitches in gets a chance to feel a little bit more heroic about something they love.
Alas, I had to bow out of this event too. As another credit to Bowers’ organizational skills, I discovered that he sends out reminder emails to participants who still haven’t touched their plates by the start of week three, each month. As much as I love, indeed am energized by the idea of the CPAN-PRC, I knew I’d already agreed to too many other responsibilities (many of them Perlish) prior to my even hearing about the challenge. I gave up my slot so that I wouldn’t prevent another volunteer with more free resources from improving my March-assigned module. I absolutely intend to rejoin the effort once my docket clears up enough for it.