Return-Path: Delivered-To: apmail-incubator-couchdb-dev-archive@locus.apache.org Received: (qmail 94402 invoked from network); 4 Nov 2008 19:33:18 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 4 Nov 2008 19:33:18 -0000 Received: (qmail 40405 invoked by uid 500); 4 Nov 2008 19:33:24 -0000 Delivered-To: apmail-incubator-couchdb-dev-archive@incubator.apache.org Received: (qmail 40369 invoked by uid 500); 4 Nov 2008 19:33:23 -0000 Mailing-List: contact couchdb-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: couchdb-dev@incubator.apache.org Delivered-To: mailing list couchdb-dev@incubator.apache.org Received: (qmail 40353 invoked by uid 99); 4 Nov 2008 19:33:23 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 04 Nov 2008 11:33:23 -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 jchris@gmail.com designates 209.85.162.179 as permitted sender) Received: from [209.85.162.179] (HELO el-out-1112.google.com) (209.85.162.179) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 04 Nov 2008 19:32:04 +0000 Received: by el-out-1112.google.com with SMTP id y26so2323102ele.18 for ; Tue, 04 Nov 2008 11:32:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:mime-version:content-type:content-transfer-encoding :content-disposition:x-google-sender-auth; bh=6ZKCYtu9ynH1e6/ycxlkqz+AXcNmEfpi5H6k/mbKDN4=; b=a47/u2MVE+iawpjgsZdrFpIpSqiJw8p3eIbTaDmk+ODz2rBIWlRmtHAL/khjQb4inz J/sikOYerh7ZUG9na4UQhUxn2L8/qhqqlIa37s63KTH6U7JE4Vt4fQLDydT8ydJ+k4xQ BeD6x/2XeEUism0P5c7UTXUWstMvRA9WeF6EI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:mime-version:content-type :content-transfer-encoding:content-disposition:x-google-sender-auth; b=Aawx2ZAIYnduGt8YCKsbrLl2x819uoFxb7tugwji4yNuW8ZMGIzNGd5xbsCEA//TZe dM9MjV04t3bghkDAOTQXu3HRR+xvR48oAo/SrhwfyiTPVRdkDEJRV8BVF5nLnSghIac/ moRFdaQZQqahkUiX3c+BNdcUu0iaydqx2TZzs= Received: by 10.65.234.18 with SMTP id l18mr2649310qbr.1.1225827164607; Tue, 04 Nov 2008 11:32:44 -0800 (PST) Received: by 10.64.193.12 with HTTP; Tue, 4 Nov 2008 11:32:44 -0800 (PST) Message-ID: Date: Tue, 4 Nov 2008 11:32:44 -0800 From: "Chris Anderson" Sender: jchris@gmail.com To: couchdb-dev@incubator.apache.org Subject: _external as a plugin? MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Google-Sender-Auth: 052e75e6ae3a574f X-Virus-Checked: Checked by ClamAV on apache.org I'm interested in seeing _external in a release because so many people have expressed interest in it. It'd be great to make the install process simple. I also think making CouchDB extensible will provide real power for people to develop against. This will make CouchDB stronger, and allow us to concentrate on the core it's mission, while still allowing innovation at the edges. Paul Davis is using _external to power full text indexing. I have a write up of action servers for standalone Couch apps (using _external) here if you didn't yet come across it: http://jchris.mfdz.com/code/2008/10/standalone_applications_with_co Here's what I think I'd like to see: _external is packaged as a plugin (whatever that means) but included in the default distribution. I'm thinking that each plugin would have a `make install` that puts it in /usr/local/lib/couchdb/erlang/lib/ somewhere. CouchDB's `make` could also be set to look inside say ./contrib or ./plugins for any plugins to build (where a plugin is a directory with its own Makefile that knows how to read CouchDB's config to find it's install location). But I'm a `make` novice so I'd really like your feedback about how best to structure this. I think it might be good to establish a pattern for CouchDB plugins, to enable users to experiment with Erlang modules as well. For instance we've heard some interest in user-definable collation systems. To be practical, these should be written in Erlang when possible, so they might make a good candidate for a plugin. I'm sure there's a lot of stuff outside of CouchDB's core that would be better served by a plugin infrastructure than by patches and tickets against trunk. Thoughts, suggestions? Maybe this should be integrated into the build after 0.9? Thanks, Chris -- Chris Anderson http://jchris.mfdz.com