To spark some additional conversation around plugins, is there a clear idea how we would handle plugin X that also uses plugin Y? For example, I could see the Erlang API, the partitioning/clustering functionality, and individual pieces of the clustering as additional plugins (consistent hashing algorithm being the immediately obvious one). The partitioning would depend on the Erlang API and a consistent hashing plugin being configured.
For now I'm just throwing additional modules in the src/couchdb directory in my git branch but there are enough modules in there it makes me hesitate to add more. We could separate these into multiple folders by using Erlang packages, but a plugin system could accomplish the same goal and provide additional benefit for 3rd-party plugins. It's not a pressing priority, but getting a plugin system in-place would better allow for 3rd-party development around CouchDB and make it easier to release and version functionality separately from the core app. Ben
