CouchDB is not a Database

Friday, 06 January 2012

CouchDB and it's users have been in a state of flux all year, with declarations of the project's death by outsiders and the rest of community scrambling to fall in-line behind their chosen implementation. Let's relax and ignore the marching drums and nay-sayers for a moment. For me, CouchDB was never about a specific platform or Mongo vs. Couch, but about a more fundamental view of the world. CouchDB offered a refuge from the aggressive centralisation of the web. Its about decentralisation, smart clients and sharing data.

The cloud promised a new era of flexibility and reduced cost, but it's in opposition to one of the most important principles of the 'net. An open network without intermediaries, a network of decentralised services and truly public spaces. The cloud means centralisation. That may not chime with our delusion of the startup dream where anyone can change the world, but in reality Amazon and Facebook are not easily displaced. Centralisation risks control, these intermediaries are far easier to censor and lock-down than the edges of the network.

The most powerful feature CouchDB offers is a protocol for moving data around using HTTP. Master-master replication really shines in decentralised systems, and makes possible the idea of smart clients and services at the edge of the network, without completely throwing out all the benefits of the cloud. Or as Chris Anderson puts it 'Ground Computing'.

There are a number of implementations now working following this protocol, not just Apache CouchDB. There's PouchDB for the browser, the upcoming lightweight TouchDB from CouchBase and of course BigCouch from Cloudant. Rather than seeing this as fragmentation, I see it as a vibrant ecosystem of projects sharing the CouchDB protocol. That means more opportunities to share data between devices without locked down platforms sitting between them.

If replication addresses the difficulties of decentralised data, CouchApps address the difficulties of running web applications at the edges. CouchApps are a structured way of writing a data-powered application so it can be run in multiple places and on multiple platforms. Max Ogden and Mikeal are even exploring running them as Google Chrome extensions. I believe the combination of easy to install web apps and easy to sync data has the potential to unlock nascent demand for data ownership.

This is why I spend my time working on Kanso and CouchApps. The future of CouchDB is not Apache CouchDB, it's all of us working together. The fact that CouchBase Server does not follow the HTTP replication protocol and does not support CouchApps means it has stepped away from the rest of the community and failed to re-kindle the ideas that defined my earliest encounters of the internet. A massively decentralised network of plural participation.

Forget trying to be the next Mongo and get back to changing the world.