On Jun 6, 2009, at 1:06 AM, Paul Davis wrote:

* CouchRep - Ideally, I'd like to keep this in core, but I don't know
the logic in it to know if we can split it into an Erlang core version
and add an HTTP layer on top. Or something. Anyway, that's all I got.

The replicator doesn't need an HTTP server, just a client (ibrowse atm), so it should not have any dependency on a future "CouchHTTPd" application. I think I'd still prefer to keep it separate from core, though.

I do think the code and build system should be reorganized into a more standard src/include/ebin etc. layout, but I'm not yet sold on the idea that CouchDB should be comprised of more than one OTP application. I don't see much precedent for that in the applications included with Erlang/OTP.

Why not just require a registered top-level supervisor for each of these sets of modules? I suppose the counter-argument is that bundling the modules as multiple applications lets you leverage OTP's built-in dependency tracking. Still, I don't think we want to bundle multiple applications unless we're prepared to distribute them separately.

Regardless of how many applications we use, we could still organize the code with a multi-level hierarchy like

src
 |-core
   |-couch_db.erl
   |-...
 |-httpd
 |-replication
 |-...

Adam

Reply via email to