Return-Path: Delivered-To: apmail-couchdb-user-archive@www.apache.org Received: (qmail 15143 invoked from network); 7 Dec 2010 21:23:58 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 7 Dec 2010 21:23:58 -0000 Received: (qmail 89144 invoked by uid 500); 7 Dec 2010 21:23:57 -0000 Delivered-To: apmail-couchdb-user-archive@couchdb.apache.org Received: (qmail 89033 invoked by uid 500); 7 Dec 2010 21:23:57 -0000 Mailing-List: contact user-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@couchdb.apache.org Delivered-To: mailing list user@couchdb.apache.org Received: (qmail 89024 invoked by uid 99); 7 Dec 2010 21:23:57 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 07 Dec 2010 21:23:57 +0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests=FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of mirko.kiefer@arcor.de designates 151.189.21.42 as permitted sender) Received: from [151.189.21.42] (HELO mail-in-02.arcor-online.net) (151.189.21.42) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 07 Dec 2010 21:23:50 +0000 Received: from mail-in-19-z2.arcor-online.net (mail-in-19-z2.arcor-online.net [151.189.8.36]) by mx.arcor.de (Postfix) with ESMTP id BF0233044B for ; Tue, 7 Dec 2010 22:23:29 +0100 (CET) Received: from mail-in-03.arcor-online.net (mail-in-03.arcor-online.net [151.189.21.43]) by mail-in-19-z2.arcor-online.net (Postfix) with ESMTP id AE350D79A4 for ; Tue, 7 Dec 2010 22:23:29 +0100 (CET) Received: from mirko.local (p5B11B9B6.dip.t-dialin.net [91.17.185.182]) (Authenticated sender: mirko.kiefer@arcor.de) by mail-in-03.arcor-online.net (Postfix) with ESMTPA id 4D130D81F3 for ; Tue, 7 Dec 2010 22:23:29 +0100 (CET) X-DKIM: Sendmail DKIM Filter v2.8.2 mail-in-03.arcor-online.net 4D130D81F3 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arcor.de; s=mail-in; t=1291757009; bh=O4ewfNkw3Ncp84F8jqXGU92Ns8yKCfkQ/hVihasYRCg=; h=Message-ID:Date:From:MIME-Version:To:Subject:References: In-Reply-To:Content-Type:Content-Transfer-Encoding; b=cF+aM/r01t9gs2jVSlskM00S8GXatbZQvbteHC1SgvPpjoCs1M1VogqBQntXEoash UNEuQlaj4FhNR8O4tt6HKJ26TZmbFf3Muj1CDpIRO1RQcN7o/e2JaLFFfxoC/ff5Fn A0zSsCLx+Sxnatbp+6NluufzNfB459BmYgdMussE= Message-ID: <4CFEA5D0.3000108@arcor.de> Date: Tue, 07 Dec 2010 22:23:28 +0100 From: Mirko Kiefer User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.12) Gecko/20101027 Thunderbird/3.1.6 MIME-Version: 1.0 To: user@couchdb.apache.org Subject: Re: LivelyCouch - a framework around CouchDB and Node.js References: <4CD86A82.6040305@arcor.de> <4CFE7523.7000107@arcor.de> <4CFE75A8.9030002@gmail.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi Pete, if you haven't spent much time with Node.js yet it might indeed be not obvious to see the "awesomeness" of LivelyCouch :) Besides the advantage of being able to store and distribute your entire application backend in CouchDB I see the event system as the most exciting thing about LivelyCouch. The idea is that you split your application in small modules called Workers, that have a single purpose (like in the tutorial an e-mail Worker or database changelistener). Communication between Workers can only happen asynchronously by one Worker emitting an Event and another Worker subscribing to it. This is just like in Node.js with the difference that Events in LivelyCouch are HTTP messages and therefore work across multiple processes or even physical machines. Once you built all the Workers you need for your application, you can very flexibly wire them together with Event subscriptions without having to change the actual source code of your application. Lets take the example in our tutorial where we have a Worker that emits an Event every time a document gets added to an "inbox" database (http://livelycouch.org/tutorials.html). In the tutorial we added a subscription to that Event which triggered a Worker who is responsible for sending out e-mail notifications. We could very easily add a new subscription to the same Event that triggers another Worker who could update the new inbox document with a property saying "user_notified": true. To implement this new "feature" we don't have to modify any of our existing code - we simply write this new Worker and bind it to the existing Event. This may still be a bit too abstract - I will work on a more hands-on tutorial with a realistic example. Maybe you want to have a look at Mikeal's talk in Berlin where he describes a scenario where LivelyCouch would come in very handy: http://jsconfeu.blip.tv/file/4235942/ Regards, Mirko On 12/7/10 9:40 PM, Peter Nolan wrote: > It's good to see that you're coming along on your project. I'm really glad > that you're writing apis and tutorials as you progress (more people should > follow your lead) please please please keep this up :p > > However, I am unsure of the true 'awesomeness' of your application. I have > only begun to read about your project so it might not just be 'obvious' to > me. (i still don't get why node.js is so great) Perhaps if you could > write simple applications that could serve a dual purpose - a simple guided > walk through and an example of the awesomeness should achieve this. > > Either way, I'm glad to know you're coming along, and look forward to > reading about your progress. > > -Pete > > On Tue, Dec 7, 2010 at 12:58 PM, Mikeal Rogerswrote: > >> Sounds great, I'm excited to see how it all turns out. >> > >