CouchDB Turns 1.0!

2010-07-14T20:07:01.398Z

Today CouchDB had its first "software birthday"! CouchDB is now officially tagged with a 1.0 release number, a mark often reserved for projects which have emerged from a development and beta-testing period as stable and production-ready systems. For users this means reliabiity and for developers it means a stable platform to build upon. Exciting times, indeed. Appropriately, this is my first post on this new blog and it runs on CouchDB thanks to the good folks at Couch.io!

My personal CouchDB story started at The Open Planning Project where I spent a summer working on the (now discontinued) Melkjug project. It was to be a news aggregation tool with a focus on ease of tuning: the news you want to read. I was in heaven. I had an internship working on free software with cool people who promised a better civic future. Idealism seemed a misnomer because this felt like very real progress.

Luke, Melkjug's lead developer, had played around with CouchDB as a storage engine, but had let it fall to the wayside in favor of active feature development. After reading up a little bit it seemed that CouchDB was a perfect fit for storing Atom or RSS news items. After all, the world has several different feed formats (while RSS prevails in common usage as an umbrella term for the whole bunch) and CouchDB is schema-less! In other words, when you're storing documents it just makes sense to use a document database (duh?).

So I took it upon myself to revive the CouchDB storage backend. While my involvement with Melkjug ended at the end of the summer my interest in CouchDB continued quietly. My last year of undergraduate education followed, full of multiprocessing, (mostly functional) programming languages, and distributed systems. CouchDB, armed with Erlang and a bad-ass replication model, pulsed quietly at the center of all these things. I lurked on the mailing list. I read all the developer e-mails. I contributed little, but thought a lot.

Finally, in the spring of 2009, with Joe Armstrong's Programming Erlang under my arm, I made a bold proposal to add clustering support to CouchDB. With the classic naivety of an over-eager student I proposed to do in a summer what Meebo and Cloudant were actively engaged in doing with multi-person development teams. No matter that the project never got off the ground because it got me in touch with Meebo and since last September I've been happily contributing to CouchDB-Lounge.

CouchDB has been my triumphant return to free software development. CouchDB got me programming again when I had been focused on theory.

How did CouchDB manage to keep me so hooked? Community. CouchDB has a community which is very much alive with the spirit of collaboration. At first I thought that Erlang scared off the realists and what was left was a bunch of science project geeks with pure hearts. That's just plain false, though. CouchDB is in the wild today, it has proven its usefulness, and it attracts the attention of all kinds of developers.

One side anecdote deserves mention. Last summer, while traveling in Europe, my bank halted and then (repeatedly) failed to reinstate my debit card. Without having ever met me in person, Jan Lehnart, an early CouchDB committer and advocate, spotted me a plane ticket from Oslo to Berlin. That may sound absolutely crazy, but so does the idea of free software to the old institutions of production. Jan had talked to me extensively on IRC and the CouchDB developer mailing list, was largely responsible for putting me in touch with Meebo (and by extension, for getting me a job). He was (is) so sincerely interested in growing the CouchDB community and meeting like-minded developers, and trusted so deeply the goodness of those in the community, that he didn't think twice to extend this helping hand. Trekking around Berlin with my copy of Christopher Kelty's Two Bits and thinking about Chris Anderson's crazy ideas I felt inspired. I felt like part of a revolution. I still do.

Since that time, the Lounge has grown into an even more serious project, supporting day-to-day storage needs at Meebo. It has moved to github to facilitate involvement (please join us!). I've contributed a bunch of performance and bug fix patches to the CouchDB code-base and made a bunch of friends in an amazing community that continues to motivate me every day.

Thanks, everybody. I expect this next year to be even better.