couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Damien Katz <>
Subject HTTP and daemon plug-in architecture Re: CouchDB 0.9 and 1.0
Date Fri, 11 Jul 2008 21:47:24 GMT
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
> --

View raw message