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
