Return-Path: Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: (qmail 22780 invoked from network); 2 Aug 2010 20:21:11 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 2 Aug 2010 20:21:11 -0000 Received: (qmail 71594 invoked by uid 500); 2 Aug 2010 20:21:10 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 71522 invoked by uid 500); 2 Aug 2010 20:21:10 -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 71514 invoked by uid 99); 2 Aug 2010 20:21:10 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 02 Aug 2010 20:21:10 +0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests=FREEMAIL_FROM,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of paul.joseph.davis@gmail.com designates 209.85.214.180 as permitted sender) Received: from [209.85.214.180] (HELO mail-iw0-f180.google.com) (209.85.214.180) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 02 Aug 2010 20:21:02 +0000 Received: by iwn8 with SMTP id 8so5944354iwn.11 for ; Mon, 02 Aug 2010 13:20:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:in-reply-to :references:from:date:message-id:subject:to:content-type :content-transfer-encoding; bh=VdN2XnRMTtSSc1MxW6TCUtXH/TbhcGKMzgmdhhH/B80=; b=iU/InU237bVEi1rUlm1MdSdVwMjozkIF+01WJq8Z8v4Wxm+iOQg8qBbkQtXTdga5Sk 9s/OeK9EaZ9tr28UfLziumhJS7YtMjWePY3lt1RIkoUIkkZnID6aCzxjKO97LA5itorE Bumnoqw5UF/2w+qHXHb7pt0LmXa8IayCR4XUk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type:content-transfer-encoding; b=VC2CoJVJHAqGdZQKrjNHjOYbAAW4HLw4mKZ7Gmutv+9Ezzz11IOta84S7fLTTqgERf No19v5nX06nVxsS/KxEh7oQKVlZAIXUU3aa2CvgwpUjiVz3GBY/6bAW9qHmGw8vvMmA+ vq8HsqdB2I9yqxDdQH8zcCBYqVIkbwyYLm+64= Received: by 10.231.160.77 with SMTP id m13mr7594569ibx.22.1280780441437; Mon, 02 Aug 2010 13:20:41 -0700 (PDT) MIME-Version: 1.0 Received: by 10.231.31.3 with HTTP; Mon, 2 Aug 2010 13:20:21 -0700 (PDT) In-Reply-To: References: From: Paul Davis Date: Mon, 2 Aug 2010 16:20:21 -0400 Message-ID: Subject: Re: Proposal for changes in view server/protocol To: dev@couchdb.apache.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Virus-Checked: Checked by ClamAV on apache.org > To clear things up. > > There are 2 discussions happing in this thread: > > 1) what is the ideal API and protocol for a more capable query server? (e= specially one that can react differentially to doc update failures, can far= m work out to multiple cores, etc) > > 2) how can we be backwards compatible with existing code and make it so y= ou can respond to an HTML form POST by rendering "whoops, someone else edit= ed that before you did, please retry", or "hey it looks like you failed the= validation function for reason X" Thanks for giving me a place to respond to the other side of this thread. Reading through the part of this thread that deals with _list and _show and _update and seeing how it doesn't really map onto the view server semantics very well. When I think of CouchDB in abstract terms, i think of the core Erlang code as the core of CouchDB. The view server (the map/reduce part) is behind couchdb. Hidden from the world. The _list/_show/_update code sits in front of CouchDB and is more of a friendly layer to interfacing with CouchDB from client apps. What I've noticed is that most of the issues could be solved if the code implementing the front side were just implemented separately. Perhaps with access to an HTTP client that connects to CouchDB. Or something that is more async in nature as has been suggested. Either way, I wonder if the best answer isn't to separate out the responsibility of frontside and backside apps and write two sets of JavaScript to deal with both. Paul Davis