284 Days and Counting; Nearly a Year of Perl Commits

I don't remember the why. Something like 300 days ago I had decided to make open source contributions every day for an entire year. (I say 300 because after a week or so into it I had a power outage and was unable, or at so few days in maybe only unwilling, to get a commit made). Funny enough, my only concern was looking like a botter or try hard on the github contributions calender, yet the marks on the website were probably the only thing that kept me going this long. I went out of my way not to cheat myself out of this reward mechanism as well, and made more than one 11:58PM commit that barely worked.

I've learned a lot. Focused primarily on Perl6, I found it fairly easy to find things to contribute to. Never would I have imagined myself hacking on the Perl 5 core, but Rakudo (as well as NQP and Moar) have made hacking the internals fairly straight forward and pain free. I'm not much of an RT system kind of guy, so just being able to fix it myself (due to the low barrier to entry) has been a relief. Since then I've made 10-20 relatively minor pull requests (mostly a single line), but they've all fixed a problem that was stopping me and (hopefully) freed up a few core developer minutes somewhere down the road. Those days have been my favorites.

The majority of the commits have used on the Perl6 parallelized module installer I've been working on, Zef. Thanks to the rapid pace of Perl6 development there have always been new features to play with, and Zef was sort of like a playground in that respect. I like to think the Zef code base evolved with the rapid changes of Perl6 over the last year as well as with my proficiency. It was also my first foray into concurrency and threaded programming in general, so there has been a lot to learn and a lot of mistake to make. Lucky for me a mistake just meant I needed to make a commit to fix it. It's also been a giant yak shaving adventure: Base64 encoding, file path utilities, HTTP library, process manager/wrappers, plugin systems... I don't even remember them all. Necessary? Not really. But having only 1 choice of module to do something isn't a compelling answer either, especially when I know I'm going to make a commit every day and thus know I won't need to wait days for something to be fixed (this isn't the common case; almost all my commits have been accepted the same day).

The last bit of contribution stuff would be issues and bug reports. I've contributed nearly nothing in respects to this area, but only because I could usually figure out the bug after golfing down for a bug report. And honestly filing good bug reports takes a lot of energy. The #perl6 IRC channel serves as my bug report dump, and while I have no expectation of anyone to keep track of the bugs I bring up there, I probably get a better response than I would if I sent an actual ticket (sorry!)

81 more days. At least I'll get a quick recharge before the official release of Perl6 around Xmas of 2015!