This was an amazing year for open source software. In alphabetical order, here are my favorite releases of 2009.
Beyond playing a massive role in making GitHub fast, BERT is a textbook example of how to do open source correctly. Three well documented and tested libraries double as reference implementations for those who would implement the spec in other languages.
In only a few months it became the canonical example of distributed version control gone right: a simple Safari plugin posted on GitHub got dozens of contributors and was kept surprisingly sane and useful under the guidance of one Rentzsch.
Ruby's gem ecosystem had been in a funk for a while. qrush cured it. Packed with useful features, Gemcutter actually makes it fun to publish gems again.
It seems so obvious in retrospect: a packaging system with packages stored in git, so anyone can easily add (or maintain) a package with the same tools they use to develop software. With almost 200 contributors and nearly 400 packages as of writing, it has certainly proven the viability of this idea. It also helps that it's simple to use and works great - no longer do we dread installing or updating software on our Macs. Now it's fun.
The long awaited silver bullet: a Ruby web-app server that relies on proven Unix technologies to do the hard stuff and do it well. It doesn't hurt that the author is extremely responsive and a great maintainer, either.
Like Unicorn, it leaves the heavy lifting of a hard problem to a proven champion: nginx's famous concurrency. The idea is so simple it's beautiful but, more importantly, the module asks an important and inevitable question: what if persistent connections to the browser were so easy that anyone with a commodity VPS could implement sites with them?
What does a Web with cheap persistent connections look like? We're going to find out soon.
Redis has set the standard for open source databases: simple, sensible, and well commented default configuration file; fantastic documentation; cheat-sheet style command reference; extremely useful command line utility; easy installation; great performance; and a very attentive maintainer. Bonus points for being easy to explain and easy to use.
The missing link, the "tie to go along with jQuery's tux." Even
better: it's DOM free and can be used on the server side. The
noConflict pattern jQuery pioneered is put to great use here and
something I'd love to see more of in the future. Underscore is a good
idea well executed.
JSON is the serialization format of the web. yajl-ruby makes it fast and, more importantly, streams it: yajl-ruby works great with EventMachine and even includes example code so you can quickly get started. Almost every Ruby project I touch uses JSON, and in all of them I now use yajl-ruby.
Thanks to the authors for sharing their creations with us. Now go out there and build something with them!