Return-Path: Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: (qmail 19852 invoked from network); 2 Feb 2009 07:38:10 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 2 Feb 2009 07:38:10 -0000 Received: (qmail 85690 invoked by uid 500); 2 Feb 2009 07:38:09 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 85654 invoked by uid 500); 2 Feb 2009 07:38:09 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 85643 invoked by uid 99); 2 Feb 2009 07:38:09 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 01 Feb 2009 23:38:09 -0800 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of antony.blakey@gmail.com designates 209.85.200.174 as permitted sender) Received: from [209.85.200.174] (HELO wf-out-1314.google.com) (209.85.200.174) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 02 Feb 2009 07:38:02 +0000 Received: by wf-out-1314.google.com with SMTP id 28so1502037wfc.29 for ; Sun, 01 Feb 2009 23:37:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:from:to :in-reply-to:content-type:content-transfer-encoding:mime-version :subject:date:references:x-mailer; bh=Pqn+0ums5D8TIKW2QXdK7GoNmqJcPnc4nB3DSvE6TCQ=; b=seGs4JHxT6YCHTjwtIVVYktCnHJHnBTBVHgozCu+rUsWInfeSp3biroadBFautR/Q7 kMzGm5wSX3i8sjqJe4GaZChCSWHLGwWClHtesaX88M9/3ZlHtMk8BeoHyDSjDMBrtIrw 0aE+FWyxVzLzEjCwgxyqis3By9m056cmpyQpg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:from:to:in-reply-to:content-type :content-transfer-encoding:mime-version:subject:date:references :x-mailer; b=eAd+mLCRCC+BW/ny2S4i8NN0KbQA/gOyPKpnkI71dkA5V0r6LhVfMc7G1Jh0ZVBGvz On+2bNzMFj8Sb43CLrS2H9FwNh5dbLHsByZeZzlTQnU9Nc9LegfDBaIc2PNFpRqSg+Th MlBdtUcgENiDQjExqRqHuoOdmRuCThnXHhgiY= Received: by 10.142.255.14 with SMTP id c14mr1733678wfi.91.1233560262367; Sun, 01 Feb 2009 23:37:42 -0800 (PST) Received: from ?192.168.0.16? (ppp121-45-202-232.lns10.adl2.internode.on.net [121.45.202.232]) by mx.google.com with ESMTPS id 9sm5378475wfc.36.2009.02.01.23.37.40 (version=TLSv1/SSLv3 cipher=RC4-MD5); Sun, 01 Feb 2009 23:37:41 -0800 (PST) Message-Id: <59071764-49FB-4EBE-A3D8-8C914DBD5F33@gmail.com> From: Antony Blakey To: dev@couchdb.apache.org In-Reply-To: Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v930.3) Subject: Re: Simple erlang plugins (was Re: couch_gen_btree: pluggable storage / tree engines) Date: Mon, 2 Feb 2009 18:07:37 +1030 References: <498464EC.1070209@diskware.net> <8B1BF367-700E-4F24-B7A5-F454E51AF9D3@gmail.com> <8EED19F7-E294-4F3B-B260-09A46547C689@gmail.com> <0E01B428-6C0E-480D-A8FB-0F8C45FD0CB2@gmail.com> <3F6DE847-1CF4-415D-8E60-F246FF8C9307@gmail.com> X-Mailer: Apple Mail (2.930.3) X-Virus-Checked: Checked by ClamAV on apache.org 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/ > Makefile.am.in > 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 common. 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)