couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Antony Blakey <>
Subject Re: Simple erlang plugins (was Re: couch_gen_btree: pluggable storage / tree engines)
Date Mon, 02 Feb 2009 07:37:37 GMT

On 02/02/2009, at 5:36 PM, Chris Anderson wrote:

> Maybe each plugin could have a default.ini and a local.ini, so  
> something like:
> plugins/
>    geo_index/
>        src/
>            geo_index.erl
>            geo_httpd.erl
>            geo_manager.erl
>        default.ini
>        local.ini
>    ...
> Then CouchDB could automatically pickup plugin config from each
> directory, running all the defaults before all the locals.

I think we may be talking at cross-purposes here - I'm thinking  
particularly of plugins that are separately compiled without being  
included in the canonical sources, while I gather you're focussed on a  
refactored core or a way to handle less tightly coupled contributions.  
I'm interested in seeing those things happen, but I'll be guided by  
you as to what I should for that. In particular I know sfa about  
automake et al.

OTOH, I think top level default.ini + local.ini + local.*.ini would be  
a good idea regardless, and a simple change.

> I'm not invested in these specifics, just trying to think of ways it
> could look that would give new developers the least amount of
> head-scratching.

I think head-scratching would be best mitigated by some good docs. If  
we want to implement this then I'll commit to writing a spec/tutorial  
on the wiki.

My concern is how to allow plugins to be updated without stomping on  
user configuration, which is why I suggest having the local plugin  
configuration be outside of the plugin's directory. Maybe that's a  
deployment required that's unlike to happen, but I look forward to a  
time when couch plugins are like rubygems and regular updating is  

Somewhat OT: plugins are also a mechanism for deploying generic non- 
couch functionality for a deployment scenario like mine where every  
user runs a Couch instance ala Notes client e.g. distributed voting  
algorithms and scalaris-like functionality for emergent clusters  
within wider p2p meshes.

Antony Blakey
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Plurality is not to be assumed without necessity
   -- William of Ockham (ca. 1285-1349)

View raw message