Re: [Ietf-carddav] Comments on draft-daboo-carddav-02

Cyrus Daboo <cyrus@daboo.name> Mon, 16 July 2007 14:36 UTC

Return-Path: <cyrus@daboo.name>
X-Original-To: ietf-carddav@osafoundation.org
Delivered-To: ietf-carddav@osafoundation.org
Received: from laweleka.osafoundation.org (laweleka.osafoundation.org [204.152.186.98]) by leilani.osafoundation.org (Postfix) with ESMTP id E5EF58054A for <ietf-carddav@osafoundation.org>; Mon, 16 Jul 2007 07:36:30 -0700 (PDT)
Received: from localhost (laweleka.osafoundation.org [127.0.0.1]) by laweleka.osafoundation.org (Postfix) with ESMTP id D97C914220D for <ietf-carddav@osafoundation.org>; Mon, 16 Jul 2007 07:35:35 -0700 (PDT)
X-Virus-Scanned: by amavisd-new and clamav at osafoundation.org
X-Spam-Score: -2.278
X-Spam-Level:
X-Spam-Status: No, score=-2.278 tagged_above=-50 required=4 tests=[AWL=0.321, BAYES_00=-2.599]
Received: from laweleka.osafoundation.org ([127.0.0.1]) by localhost (laweleka.osafoundation.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qrpm0QAgZaRW for <ietf-carddav@osafoundation.org>; Mon, 16 Jul 2007 07:35:33 -0700 (PDT)
Received: from mulberrymail.com (piper.mulberrymail.com [151.201.22.177]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by laweleka.osafoundation.org (Postfix) with ESMTP id 8C69C1421F2 for <ietf-carddav@osafoundation.org>; Mon, 16 Jul 2007 07:35:33 -0700 (PDT)
Received: from caldav.corp.apple.com ([17.101.32.44]) (authenticated bits=0) by mulberrymail.com (8.13.6/8.13.6) with ESMTP id l6GEZNvh026300 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 16 Jul 2007 10:35:24 -0400
Date: Mon, 16 Jul 2007 10:35:17 -0400
From: Cyrus Daboo <cyrus@daboo.name>
To: Julian Reschke <julian.reschke@gmx.de>, ietf-carddav@osafoundation.org, WebDAV <w3c-dist-auth@w3.org>
Subject: Re: [Ietf-carddav] Comments on draft-daboo-carddav-02
Message-ID: <DA70918551A4706E579F3829@caldav.corp.apple.com>
In-Reply-To: <4699F52B.10101@gmx.de>
References: <4699F52B.10101@gmx.de>
X-Mailer: Mulberry/4.1.0a1 (Mac OS X)
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"; format="flowed"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
X-BeenThere: ietf-carddav@osafoundation.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: ietf-carddav.osafoundation.org
List-Unsubscribe: <http://lists.osafoundation.org/cgi-bin/mailman/listinfo/ietf-carddav>, <mailto:ietf-carddav-request@osafoundation.org?subject=unsubscribe>
List-Archive: <http://lists.osafoundation.org/pipermail/ietf-carddav>
List-Post: <mailto:ietf-carddav@osafoundation.org>
List-Help: <mailto:ietf-carddav-request@osafoundation.org?subject=help>
List-Subscribe: <http://lists.osafoundation.org/cgi-bin/mailman/listinfo/ietf-carddav>, <mailto:ietf-carddav-request@osafoundation.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Jul 2007 14:36:31 -0000

Hi Julian,
Thanks for your detailed review.

--On July 15, 2007 12:21:31 PM +0200 Julian Reschke <julian.reschke@gmx.de> 
wrote:

> The introduction of new DAV:resourcetypes however has lead to the
> introduction of new HTTP methods, with the single purpose of creating a
> WebDAV collection with a certain set of properties. I think this is an
> extremely bad idea.
>
> Now I do *not* belong to the group of people with "new method angst".
> Defining new methods that have general applicability is completely ok
> IMHO. Good examples are COPY/MOVE, some of the versioning methods, BIND
> and so on. The difference to MKCALENDAR and MKADDRESSBOOK is that these
> ones are restricted to a single application use case. So what's next?
> MKPHOTOCOLLECTION? MKMUSIKCOLLECTION?
>
> Instead, I'd suggest defining what MKCALENDAR and MKADDRESSBOOK have in
> common, and come up with a single solution to that. For instance, such as
> MKCOL using a request body that carries a set of properties, including
> the WebDAV resource type.

Note that it was actually RFC3253 that let the cat out of the bag (so to 
speak) wrt new methods for creating collections (MKWORKSPACE and 
MKACTIVITY). In CalDAV We chose to be consistent with that approach by 
having MKCALENDAR, and hence CardDAV has MKADDRESSBOOK.

However, I do agree that this is not an ideal state of affairs. If there is 
consensus in the WebDAV community to do so, I agree that we should write up 
a formal extension to MKCOL that would cover all the other MKxxx's 
behaviors. However, I do not believe that belongs in CardDAV, it should be 
a separate extension that CardDAV can itself leverage. I would be happy to 
put a spec together on that (extracting the behaviors from the existing 
specs).

What do others thinks about this?

>
> Use of Reports
>
> Everytime a new REPORT is introduced, a new set of information is made
> hard to cache. In some cases that may be harmless (such as when it's
> something like a query, line in some RFC3744 reports).
>
> However, defining a "multiget" really seems to be a bad idea, and now
> there are even two of those! Please take this out until it can be shown
> that just sending a bunch of GET requests (which can take advantage of
> caching) is not sufficient.

CalDAV has proved (to me at least) that multiget is a big win for both 
server and  client. Perhaps other implementers can also comment.

Its a win for several reasons including:

1) Cutting down on roundtrips. We did have discussion about why pipelining 
is not reliable in the PATCH extension thread on the HTTP list, though in 
this case we are only dealing with GETs.

2) multiget allows both the data and properties to be returned in one go: 
i.e. it is the equivalent of a GET and a PROPFIND.

3) It is much more efficient for a server to process a single request for a 
bunch of resources than to do separate requests. Whilst this ma admittedly 
be implementation specific, I can tell you that being able to cache certain 
things during the multiget is handy (e.g. only having to calculate the 
inherited aces that propagate down to all child resource of the same 
collection once, or being able to do a single DB query for all properties 
in one transaction rather than multiple ones for each resource).

Bottom line is I think multiget is vital to performance and should remain 
in.

That said, perhaps a more generic "multiget" behavior could be done that 
would be applicable to WebDAV as a whole. Really all multiget is is a 
PROPFIND that targets specific resources - with the one addition of the 
"pseudo" resource body property (which is the only thing that differs 
between CalDAV and CardDAV).

> Property model
>
> The specs avoid exposing the content of their data objects as WebDAV
> properties. This leads to lots of workarounds, such as introducing
> "pseudo-properties" containing the actual content
> (CARDDAV:addressbook-data), and abuse of DAV:prop for something that is
> not a WebDAV property. Don't do this, it requires generic WebDAV servers
> to use lots of special cases. (WebDAV SEARCH started with pseudo
> properties but got successfully rid of them, so this can be done).

Well CardDAV and CalDAV are special cases of a generic WebDAV server. So I 
don't see this as being a big issue. There are reasons for doing things the 
way they are and I will address those in more detail in a follow up to your 
more detailed review posted to the CardDAV list.

-- 
Cyrus Daboo