Ok, so why are my friends and co-workers noticing my minor obsession about CouchDB? There’s a few reasons. First, I have a long-term unlove-affair with RDBMS. Why?
- I started off working in the UNIX kernel (V6 anyone?) and there’s no stinking databases in there… just some filesystem stuff
- After learning and using C, I jumped to Smalltalk and like a newborn duckling, I was imprinted by the Smalltalk view of the world – which forever set my idea about persistent data + behavior.
- Along the way, I bumped into Thomas Malone’s work on Object Lens and OVAL – which further evolved my thinking about collaborative work, semi-structured data and toolkits to enable end-users to compose their own tools; incuding the notion that not every object needs behavior- sometimes it’s just data (e.g. the archetypical business card is just some useful semi-structure data).
- And finally – the cognitive dissonance between the relational model and the common OO / prototype-based languages / domain models was constantly bothered me.
Yes – I know they’ve been effective and have benefit in lots of scenarios, however…
Secondly, for a piece of ‘middleware’, CouchDB has great elegance and great congruence with the bevy of potential uses, i.e. it appears to afford us the possibility to think about our problem/solution domains and our softwares internal models in in very similar fashions – with some very interesting beneficial side-effects (e.g. eventual consistency, availability)
And finally, there’s some rumblings of a new application model all together – reminiscent of the agents buzz from over a decade ago, i.e. Chris Anderson’s Sharable apps – where a CouchDB instance is sufficiently capable to become an application platform and that via the synchronization model, multiple instances of an application could run in a distributed & isolated manner and then synchronize and migrate as needed to different environments, i.e. run locally on laptops and sync and migrate up to centralized servers and then back down as needed. Instead of a rigid & pre-defined deployment structure, it’s more of an organic ‘shape’ adjusting as needed. If this is a new degree of freedom, the potential is huge.
So, while I’m looking for the right opportunity to try some of these ideas out – I’ll continue this minor obsession and see where it leads.