From couchdb-dev-return-725-apmail-incubator-couchdb-dev-archive=incubator.apache.org@incubator.apache.org Fri Jul 11 21:49:09 2008 Return-Path: Delivered-To: apmail-incubator-couchdb-dev-archive@locus.apache.org Received: (qmail 56836 invoked from network); 11 Jul 2008 21:49:09 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 11 Jul 2008 21:49:09 -0000 Received: (qmail 26015 invoked by uid 500); 11 Jul 2008 21:49:09 -0000 Delivered-To: apmail-incubator-couchdb-dev-archive@incubator.apache.org Received: (qmail 25822 invoked by uid 500); 11 Jul 2008 21:49:09 -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 25811 invoked by uid 99); 11 Jul 2008 21:49:09 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 11 Jul 2008 14:49:09 -0700 X-ASF-Spam-Status: No, hits=0.2 required=10.0 tests=RCVD_IN_DNSWL_LOW,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) Received: from [209.68.5.17] (HELO relay03.pair.com) (209.68.5.17) by apache.org (qpsmtpd/0.29) with SMTP; Fri, 11 Jul 2008 21:48:17 +0000 Received: (qmail 8805 invoked from network); 11 Jul 2008 21:47:39 -0000 Received: from unknown (HELO ?192.168.1.199?) (unknown) by unknown with SMTP; 11 Jul 2008 21:47:39 -0000 X-pair-Authenticated: 96.33.90.152 Message-Id: <6A4E4A7B-3625-450E-99D2-247C9725B0C6@apache.org> From: Damien Katz To: couchdb-dev@incubator.apache.org In-Reply-To: <7D76E702-4BB8-42FD-8704-9E8BA70F95BC@apache.org> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v926) Subject: HTTP and daemon plug-in architecture Re: CouchDB 0.9 and 1.0 Date: Fri, 11 Jul 2008 17:47:24 -0400 References: <7D76E702-4BB8-42FD-8704-9E8BA70F95BC@apache.org> X-Mailer: Apple Mail (2.926) X-Virus-Checked: Checked by ClamAV on apache.org We really need a plug-in architecture for Couchdb for the both front end HTTP server so anyone can create a custom Erlang handler. Already our internal handlers are getting too numerous and would benefit with better modularization. These handlers would be written in Erlang but might delegate the actual work to external processes via a piped interface or whatever. Also we need daemon add-in support too, for caching and indexing processes. Erlang makes this easy, we just need to actually expose it in a standardized manner. Jan's work on the configuration API is also important here, as we need a standardized way to support plug-ins each with their own configuration settings. We'll also need a stable, documented internal Erlang API to make this happen. I think the internals of CouchDB are finally stabilizing to the point where this is possible. Also, internal code modularization. I think overall, the modularization of the CouchDB internals is correct, that is the boundaries between modules are most well properly defined and decoupled. However, the internal documentation is non-existant and the modularization isn't really granular enough. Too many source files are simply too long, the code within needs to be broken out into further sub-modules. Only there really isn't good support for sub-modules. Which I guess is me blaming Erlang for the way I wrote the code, but I really do think Erlang needs another level of code organization. Or maybe we need more Erlang module/package thingies, instead of just one big couchdb module. Ideas welcome. I'm going to spend a lot of time on this for the next release. A heavy duty refactoring is what's called for. But mostly I just plan to reorder, organize and comment the code, more than rewrite anything. Fortunately the codebase is small enough to make that a relatively small job. Small amounts of work here can have huge impact on other ability to work with the code and submit patches. On Jul 2, 2008, at 3:08 AM, Jan Lehnardt wrote: > Hello everybody, > this thread is meant to collect missing work items (features and > bugs) for for our 1.0 release and a discussion about how to split > them up between 0.9 and 1.0. > > Take it away: Damien. > > Cheers > Jan > --