Return-Path: Delivered-To: apmail-cocoon-dev-archive@www.apache.org Received: (qmail 5734 invoked from network); 28 Mar 2008 09:26:26 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 28 Mar 2008 09:26:26 -0000 Received: (qmail 68296 invoked by uid 500); 28 Mar 2008 09:26:24 -0000 Delivered-To: apmail-cocoon-dev-archive@cocoon.apache.org Received: (qmail 68214 invoked by uid 500); 28 Mar 2008 09:26:24 -0000 Mailing-List: contact dev-help@cocoon.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@cocoon.apache.org List-Id: Delivered-To: mailing list dev@cocoon.apache.org Received: (qmail 68203 invoked by uid 99); 28 Mar 2008 09:26:24 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 28 Mar 2008 02:26:24 -0700 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 Rainer.Pruy@acrys.com designates 212.222.64.34 as permitted sender) Received: from [212.222.64.34] (HELO arachne.Acrys.COM) (212.222.64.34) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 28 Mar 2008 09:25:42 +0000 Received: from Acrys.COM (root@devil.acrys.com [10.0.2.10]) by arachne.Acrys.COM (8.13.5.20060308/8.13.5/1.4) with ESMTP id m2S9PkEr000425 for ; Fri, 28 Mar 2008 10:25:47 +0100 (CET) Received: from [10.210.1.4] (node-4.pruy.acrys.com [10.210.1.4]) by Acrys.COM (8.14.1/8.12.11/2.11) with ESMTP id m2RLxBUK009820 for ; Thu, 27 Mar 2008 22:59:14 +0100 (CET) Message-ID: <47EC18AF.6070806@acrys.com> Date: Thu, 27 Mar 2008 22:59:11 +0100 From: Rainer Pruy Organization: Acrys Consult GmbH & Co. KG User-Agent: Thunderbird 2.0.0.12 (X11/20080226) MIME-Version: 1.0 To: dev@cocoon.apache.org Subject: Re: Layered software designs References: <47E509B2.7050003@tuffmail.com> <47E50A75.8090001@apache.org> <47E51B61.2050701@tuffmail.com> <47E7F20D.3020308@tuffmail.com> <47E8A7CE.6040508@apache.org> <47E9061C.5030105@tuffmail.com> <47E911D9.9040503@apache.org> <47E9B1CA.6050202@gmx.de> <47E9FC91.3080004@apache.org> <47EA1B66.5040907@apache.org> <47EA4C3D.9070802@apache.org> In-Reply-To: <47EA4C3D.9070802@apache.org> X-Enigmail-Version: 0.95.2 Content-Type: text/plain; charset=ISO-8859-2 Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.92.1/6432/Thu Mar 27 22:18:40 2008 on devil.Acrys.COM X-Virus-Status: Clean X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on devil.Acrys.COM X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.1.2 (arachne.Acrys.COM [212.222.64.34]); Fri, 28 Mar 2008 10:25:47 +0100 (CET) X-Virus-Checked: Checked by ClamAV on apache.org X-Old-Spam-Status: No, score=-4.4 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.2.4 Reinhard Poetz schrieb: > Carsten Ziegeler wrote: >> The question is now if we need support for caching in the low level >> apis or if it is possible to have a layered approach - which would >> make the entry barrier much easier. > > Yes, this layered approach is what I'm aiming for. All the reactions in > this thread make me think that everybody, who has commented on this > mailing list so far (except Carsten), believes that we want to throw > away good things that have profed to be useful in many situations. > Rest assured, that's not the case. Carsten and I only want to break up > this all-or-nothing situation that we (still) have now. > > What I want to see is a concise pipeline API that comes with only little > overhead in terms of its learning curve and its dependencies on > third-party software. Usually this means that we stick with standard > APIs as much as possible - and I think this rule applies for our > situation too. > > This means that the user of the API only needs to learn as little as > possible. When he wants more, we offer additional modules that help him. > Since he has a concrete need, the motiviation to learn something new is > much higher than when he has to learn everything right from the beginning. > > If you want to learn how this whole concept *might* apply for a next > generation Cocoon, have a look at Steven's and my "Exploring Corona" > mail from last week > (http://marc.info/?l=xml-cocoon-dev&m=120611990603725&w=2). > > The idea of Corona is having a concise core that doesn't have any > dependencies on a particular component container (Spring, OSGi, etc.), > source resolving mechanisms or environment (http, java only, etc.) or > even the type of the components (XML-SAX event stream, XML-Stax event > stream, binary streams, etc.) that are linked together in a pipeline. > > A simple scenario could be: > > Pipeline API + java.net.URL + XML-SAX components > > > A more advanced scenario could consist of > > Pipeline API + Sourceresolve + XML-SAX components + Sitemap Engine > > > or maybe you need the full stack that corresponds to Cocoon Core 2.2 - > here you are: > > Pipeline API + Sourceresolve + HTTP-enabled + Sitemap Engine + > Spring > XML-SAX > componnents > > > This layered approach makes Cocoon easily embeddable in any Java > application and Cocoon's learning curve becomes more gradual. > > Is such a situation only appealing to Carsten, Steven and me? > It's appealing to me also. However, I'm not sure I did get the "layers" correctly. I did see: Pipeline API: responsible for composing different components, introduces the notion of Producer/Consumer and first and last component Sitemap API: responsible for executing pipelines Spring: responsible for setting up layers and identifying implementations to "wildcard" functionality (not really a layer for itself?) URI API (had no better term at hand): responsible for interpreting protocol strings for resource access. Currently two implementations in dicussion: URL and SourceResolver Pipeline Components? really a layer or just implementations of Pipeline API Can we line out the intended or existing "layers"? I do feel this would help focussing the discussion. We then can have a track reflecting actual layers, a track exploring interaction among layers (e.g caching, configuration...), and a track pondering implementation aspects. Rainer