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
--