Re: [ietf-caldav] draft-daboo-webdav-sync-01

Julian Reschke <julian.reschke@gmx.de> Mon, 23 March 2009 14:31 UTC

Return-Path: <julian.reschke@gmx.de>
X-Original-To: ietf-caldav@osafoundation.org
Delivered-To: ietf-caldav@osafoundation.org
Received: from localhost (localhost [127.0.0.1]) by leka.osafoundation.org (Postfix) with ESMTP id 9C5F57841F2 for <ietf-caldav@osafoundation.org>; Mon, 23 Mar 2009 07:31:17 -0700 (PDT)
X-Virus-Scanned: by amavisd-new and clamav at osafoundation.org
X-Spam-Score: -2.737
X-Spam-Level:
X-Spam-Status: No, score=-2.737 tagged_above=-50 required=4 tests=[AWL=-0.138, BAYES_00=-2.599]
Received: from leka.osafoundation.org ([127.0.0.1]) by localhost (leka.osafoundation.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JitCKR3U-oCr for <ietf-caldav@osafoundation.org>; Mon, 23 Mar 2009 07:31:11 -0700 (PDT)
Received: from mail385c25.carrierzone.com (mail385c25.carrierzone.com [209.235.146.155]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by leka.osafoundation.org (Postfix) with ESMTP id 7EA477841F0 for <ietf-caldav@osafoundation.org>; Mon, 23 Mar 2009 07:31:11 -0700 (PDT)
X-Authenticated-User: master.tencoassemblies.com
Received: from TENCOSERVER.TencoAssembliesInc.local (static-68-162-87-75.phil.east.verizon.net [68.162.87.75]) (authenticated bits=0) by mail385c25.carrierzone.com (8.13.6/8.13.1) with ESMTP id n2NEV1TA031646; Mon, 23 Mar 2009 14:31:03 GMT
Received: from TENCOSERVER.TencoAssembliesInc.local ([10.0.0.2]) by TENCOSERVER.TencoAssembliesInc.local with Microsoft SMTPSVC(5.0.2195.6713); Mon, 23 Mar 2009 09:31:01 -0500
Received: by TENCOSERVER.TencoAssembliesInc.local (Microsoft Connector for POP3 Mailboxes 5.00.2195) with SMTP (Global POP3 Download) id MSG03232009-093056-169.MMD@TencoAssembliesInc.local; Mon, 23 Mar 2009 09:30:56 -0500
X-Envelope-From: w3c-dist-auth-request@frink.w3.org
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by mail368c25.carrierzone.com (8.13.6/8.13.1) with ESMTP id n2NEN1lO028764 for <JTentilucci@tencoassemblies.com>; Mon, 23 Mar 2009 10:23:04 -0400
Received: from lists by frink.w3.org with local (Exim 4.63) (envelope-from <w3c-dist-auth-request@listhub.w3.org>) id 1Lll1f-00004r-CM for w3c-dist-auth-dist@listhub.w3.org; Mon, 23 Mar 2009 14:21:15 +0000
Received: from maggie.w3.org ([193.51.208.68]) by frink.w3.org with esmtp (Exim 4.63) (envelope-from <julian.reschke@gmx.de>) id 1Lll1d-0008Vo-Pe for w3c-dist-auth@listhub.w3.org; Mon, 23 Mar 2009 14:21:14 +0000
Received: from mail.gmx.net ([213.165.64.20]) by maggie.w3.org with smtp (Exim 4.63) (envelope-from <julian.reschke@gmx.de>) id 1Lll1S-0003ld-SN for w3c-dist-auth@w3.org; Mon, 23 Mar 2009 14:21:13 +0000
Received: (qmail invoked by alias); 23 Mar 2009 14:13:51 -0000
Received: from mail.greenbytes.de (EHLO [192.168.1.106]) [217.91.35.233] by mail.gmx.net (mp017) with SMTP; 23 Mar 2009 15:13:51 +0100
X-Authenticated: #1915285
X-Provags-ID: V01U2FsdGVkX1+50dF5yi65qZs94wqd6cOr8cOfmcMlzVp/x0mKO2 +h2t62aM6lu12Q
Message-ID: <49C7991C.5000706@gmx.de>
Date: Mon, 23 Mar 2009 15:13:48 +0100
From: Julian Reschke <julian.reschke@gmx.de>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.4) Gecko/20060516 Thunderbird/1.5.0.4 Mnenhy/0.7.4.666
MIME-Version: 1.0
To: Cyrus Daboo <cyrus@daboo.name>
References: <29696E9E8589A72FC19EB4F6@caldav.corp.apple.com>
In-Reply-To: <29696E9E8589A72FC19EB4F6@caldav.corp.apple.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Y-GMX-Trusted: 0
X-FuHaFi: 0.5
Received-SPF: pass
X-SPF-Guess: pass
X-W3C-Hub-Spam-Status: No, score=-2.6
X-W3C-Hub-Spam-Report: BAYES_00=-2.599, SPF_PASS=-0.001
X-W3C-Scan-Sig: maggie.w3.org 1Lll1S-0003ld-SN 708b68dbe6f2eecd0f6b57cd28d7281f
X-Original-To: w3c-dist-auth@w3.org
Archived-At: <http://www.w3.org/mid/49C7991C.5000706@gmx.de>
Resent-From: w3c-dist-auth@w3.org
X-Mailing-List: <w3c-dist-auth@w3.org> archive/latest/13108
X-Loop: w3c-dist-auth@w3.org
Sender: w3c-dist-auth-request@w3.org
Resent-Sender: w3c-dist-auth-request@w3.org
Precedence: list
Resent-Message-Id: <E1Lll1f-00004r-CM@frink.w3.org>
Resent-Date: Mon, 23 Mar 2009 14:21:15 +0000
X-MMR: 0
X-Antivirus: Scanned by F-Prot Antivirus (http://www.f-prot.com)
X-OriginalArrivalTime: 23 Mar 2009 14:31:01.0252 (UTC) FILETIME=[FD3F3440:01C9ABC3]
Cc: WebDAV <w3c-dist-auth@w3.org>, CardDAV <vcarddav@ietf.org>, CalDAV <ietf-caldav@osafoundation.org>
Subject: Re: [ietf-caldav] draft-daboo-webdav-sync-01
X-BeenThere: ietf-caldav@osafoundation.org
X-Mailman-Version: 2.1.9
List-Id: Discussions on Calendar Access protocol based on WebDAV <ietf-caldav.osafoundation.org>
List-Unsubscribe: <http://lists.osafoundation.org/mailman/listinfo/ietf-caldav>, <mailto:ietf-caldav-request@osafoundation.org?subject=unsubscribe>
List-Archive: <http://lists.osafoundation.org/pipermail/ietf-caldav>
List-Post: <mailto:ietf-caldav@osafoundation.org>
List-Help: <mailto:ietf-caldav-request@osafoundation.org?subject=help>
List-Subscribe: <http://lists.osafoundation.org/mailman/listinfo/ietf-caldav>, <mailto:ietf-caldav-request@osafoundation.org?subject=subscribe>
X-List-Received-Date: Mon, 23 Mar 2009 14:31:17 -0000

Hi,

below are some comments on draft-daboo-webdav-sync-01.

High Level:

First of all, the complexity of this mainly depends on the type of 
server. For instance, for a Subversion-style store (with a global change 
counter) this could be almost trivial, while it may be very hard to 
implement for many others.

Also, there's some related work in this area, such as:

- using a feed format (Atom?)

- sending notifications over XMPP 
(<http://greenbytes.de/tech/webdav/draft-hildebrand-webdav-notify-00.html>)

- Microsoft's take on it: SUBSCRIBE/UNSUBSCRIBE/NOTIFY/POLL 
(<http://msdn.microsoft.com/en-us/library/aa143117(EXCHG.65).aspx>)

- Notifications, as defined in JCR (Java Content Repository), which at 
some point we'll want to transport over HTTP....

- RFC 3253 (DeltaV) and WebDAV BIND which clarify what the state of a 
collection is, and define a property (DAV:resource-id) which could be 
used to define "sameness" of a WebDAV resource under name changes.


Regarding Section 3, "Open Issues":

"1. Should we try and discriminate between changes to the body of a 
resource and changes to the properties?"

I think we need to.

"2. If we indicate a property change, should we return the list of 
properties that changed on each resource (propnames NOT values)?"

Why only the names?

"3. Should we provide a way to indicate that a 'new' resource is new in 
the collection as a result of a COPY or MOVE from another location, as 
opposed to being created?"

At least MOVE and COPY should be handled separately; DAV:resource-id 
(<http://greenbytes.de/tech/webdav/draft-ietf-webdav-bind-23.html#rfc.section.3.1>) 
could be used for that.

"4. Should we provide a way to indicate that a 'deleted' resource was 
removed from the collection as a result of a MOVE to another location, 
as opposed to being actually deleted?"

Not sure it makes a difference.

"5. How should ACLs be handled? e.g. a resource is visible to a user at 
one point in time, then its <read> privilege is removed. Should the 
resource be marked as having been deleted when next synchronized?"

Why deleted? I realize that some servers return 404 for resources the 
user doesn't have read access to, but that's not the general case.

"6. Do we want a special indicator for a resource that was deleted and 
then re-created, as opposed to just indicating that the resource was 
'changed'?"

I think the information is needed. It could be provided using 
DAV:resource-id.


Other substantial comments:

1. Introduction

"This can currently be done using a WebDAV PROPFIND request on a 
collection to list all members of a collection along with their HTTP 
ETag values, which allows the client to determine which resources were 
changed, added or deleted."

s/HTTP ETag values/DAV:getetag property values/

Also note this wouldn't necessarily detect property changes.

"Additionally, a new property is added to collection resources that is 
used to convey a "synchronization token" that is guaranteed to change 
when the contents of the collection have changed."

You need to define the term "contents" here. Obviously, it includes data 
that is not included in the collection's state, as defined in RFC 3253, 
for example.


4.1

"HTTP already defines a synchronization token in the form of an entity 
tag which is attached to a resource. However, the entity tag is not 
always required to be 'strong' and thus cannot be relied on absolutely 
as a valid synchronization indicator. In addition, there is no concept 
of an entity tag for a collection's contents."

Sic -- it's because that term is not defined (at least not in the way 
this spec wants to use it :-)

4.2

"To implement the behavior for this REPORT a server needs to keep track 
of changes to any resources in a collection."

Need to clarify what "in a collection" means; I guess "Internal Member", 
as defined by RFC 4918, Section 3?

"The request URI MUST be a collection."

Why?

"The "Depth" header MUST be ignored by the server and SHOULD NOT be sent 
by the client."

Nope, see earlier discussion.

"The response body for a successful request MUST be a DAV:multistatus 
XML element, which MUST contain one DAV:sync-token element in addition 
to any DAV:sync-response elements."

Not sure why this re-uses DAV:multistatus, and then puts something 
completely else as child elements.


Editorial Comments:

- state venue for discussion

- expand abbreviations on first use

- 4.1

"The is specification defines a new WebDAV REPORT that is used to enable 
client-server collection synchronization."

"The is"?

"That is done by the client sending an empty token value to the server."

I think "no token" would be better.


- "4.2 REPORT defined"

Title.

"If the report is not available, clients MUST NOT attempt to execute one."

Requirement unnecessary.



Best regards, Julian