We really need a plug-in architecture for Couchdb for the both front end HTTP server so anyone can create a custom Erlang handler. Already our internal handlers are getting too numerous and would benefit with better modularization.

These handlers would be written in Erlang but might delegate the actual work to external processes via a piped interface or whatever.

Also we need daemon add-in support too, for caching and indexing processes. Erlang makes this easy, we just need to actually expose it in a standardized manner.

Jan's work on the configuration API is also important here, as we need a standardized way to support plug-ins each with their own configuration settings.

We'll also need a stable, documented internal Erlang API to make this happen. I think the internals of CouchDB are finally stabilizing to the point where this is possible.

Also, internal code modularization. I think overall, the modularization of the CouchDB internals is correct, that is the boundaries between modules are most well properly defined and decoupled. However, the internal documentation is non-existant and the modularization isn't really granular enough. Too many source files are simply too long, the code within needs to be broken out into further sub-modules. Only there really isn't good support for sub-modules. Which I guess is me blaming Erlang for the way I wrote the code, but I really do think Erlang needs another level of code organization. Or maybe we need more Erlang module/package thingies, instead of just one big couchdb module. Ideas welcome.

I'm going to spend a lot of time on this for the next release. A heavy duty refactoring is what's called for. But mostly I just plan to reorder, organize and comment the code, more than rewrite anything. Fortunately the codebase is small enough to make that a relatively small job. Small amounts of work here can have huge impact on other ability to work with the code and submit patches.

On Jul 2, 2008, at 3:08 AM, Jan Lehnardt wrote:

Hello everybody,
this thread is meant to collect missing work items (features and
bugs) for for our 1.0 release and a discussion about how to split
them up between 0.9 and 1.0.

Take it away: Damien.

Cheers
Jan
--

Reply via email to