couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Lehnardt <>
Subject CouchDBX Future
Date Tue, 17 Feb 2009 17:28:25 GMT

remember the Futon mail earlier? Yeah, there's another project
that need love: CouchDBX*.


My idea of CouchDBX is this:

   A single package that can be downloaded and run to evaluate

That sounds simple, but the devil is in the details. The first version
was hand-crafted and what I did there needs automation now.
Several people have expanded the ObjC/Cocoa interface into
interesting directions and I'd like to see this work continued.

I understand that CouchDB is not under the wings of the ASF (yet?)
but I think it is an important enough tool for CouchDB's adoption.

The two major roadblocks are ICU integration and stripping of OTP
for distribution. Let me explain:

CouchDB comes with an erlang port "couch_erl_driver.c/.so" that
interfaces with ICU*. Regular CouchDB requires a regular ICU
installation. CouchDBX's original version was hand-compiled to
use Mac OS X (Leopard)'s bundled ICU. Fat ICU binaries (for ppc,
ppc64 and i386 archs come at ~30MB and that's not too nice
for a "quick download and try" package.


What's the problem: Apple does not provide headers for the
ICU version* that ships with Mac OS X. But you can link to it


(Note: I'd like to target 10.5.0 (Leopard) or higher. Not Tiger or  

What needs to be done:

   1) link couch_erl_driver.c against the system's ICU library
   2) Integrate into the CouchDB build system that this is
     a) done automatically and
     b) only on Mac OS X >= 10.5.0

I got stuck several times on 2a).

Stripping OTP

CouchDB X ships with an Erlang/OTP distribution that is stripped
down to the parts that CouchDB actually needs. This gets rid of
most of the stdlib modules as well as other stuff in the tree.
We'd need a script that automatically strips an OTP installation
and puts it into the bundle. This script should
exist in multiple versions (or support multiple versions) so different
versions of Erlang/OTP can be included.


That's it, the rest is packaging and adjusting paths which is
rather simple.

What I'd like to be able to give to our users is a CouchDBX build
with OTP version X and CouchDB version Y (or SVN revision Z).
So we can quickly A/B test issues and bugs that arise or for
testing patches.

After all this is done, I'd like to see this expanded to Linux and


The user interface on top of this has taken two directions already,
both of which are cool and I think compatible.

The one is an integrated WebKitView (a raw HTML browser) that
displays Futon after launching CouchDB.

The second on is a menu-bar item that has no proper window UI
that lets you control the embedded CouchDB instance.

I think this could be merged into a single project.


Future directions could go towards managing multiple (possibly
remote CouchDB nodes) as well as listing and displaying CouchApps
in a web/desktop hybrid application. Much like Adobe Air, but without
the suck. And a proper database :)


Any takers? Feel free to pick any single issue here. And ask any
smart or stupid question you might have.


View raw message