Re: Last Call: draft-daboo-webdav-sync-06.txt (Collection Synchronization for WebDAV) to Proposed Standard

2011-12-15 Thread Ken Murchison

Cyrus Daboo wrote:

I am not convinced the use of Depth in sync report is violating the 
definition in 3253. In some ways it is a matter of how you look at the 
sync. Your viewpoint is that the report asks the collection for its 
changes - in that case, yes, Depth:0 would apply. The other view is that 
the report asks each of the child resources to list their change status, 
in which case Depth:1 and Depth:infinity also makes sense. Which 
viewpoint is taken probably depends on actual implementation rather than 
any perceived protocol restrictions.


My $.02:

I look the sync report as a filtered query for properties (e.g. 
CALDAV:calendar-query), with the filter being only give me a 
DAV:response if the resource has been changed/removed since the 
specified sync-token.


A Depth of 1 or infinity gives us exactly what is specified in the draft.

A Depth of 0 refers to the collection itself, and assuming it exists, 
the DAV:multistatus response may or may not include a single 
DAV:response element, depending on whether the server maintains an 
entity tag on the collection which changes with its membership.  In 
either case, the sync-token is returned per the extended grammar in 6.3.


So, a sync-collection report with a depth of 0 might simply return the 
following:


D:multistatus
  D:sync-tokenhttp://example.com/ns/sync/1234/D:sync-token
/D:multistatus


Does this make sense, or is my logic completely convoluted?

--
Kenneth Murchison
Principal Systems Software Engineer
Carnegie Mellon University
___
Ietf mailing list
Ietf@ietf.org
https://www.ietf.org/mailman/listinfo/ietf


Re: Last Call: draft-daboo-webdav-sync-06.txt (Collection Synchronization for WebDAV) to Proposed Standard

2011-12-15 Thread Ken Murchison

Julian Reschke wrote:

On 2011-12-14 18:01, Ken Murchison wrote:

Cyrus Daboo wrote:


I am not convinced the use of Depth in sync report is violating the
definition in 3253. In some ways it is a matter of how you look at the
sync. Your viewpoint is that the report asks the collection for its
changes - in that case, yes, Depth:0 would apply. The other view is
that the report asks each of the child resources to list their change
status, in which case Depth:1 and Depth:infinity also makes sense.
Which viewpoint is taken probably depends on actual implementation
rather than any perceived protocol restrictions.


My $.02:

I look the sync report as a filtered query for properties (e.g.
CALDAV:calendar-query), with the filter being only give me a
DAV:response if the resource has been changed/removed since the
specified sync-token.

A Depth of 1 or infinity gives us exactly what is specified in the draft.

A Depth of 0 refers to the collection itself, and assuming it exists,
the DAV:multistatus response may or may not include a single
DAV:response element, depending on whether the server maintains an
entity tag on the collection which changes with its membership. In
either case, the sync-token is returned per the extended grammar in 6.3.

So, a sync-collection report with a depth of 0 might simply return the
following:

D:multistatus
D:sync-tokenhttp://example.com/ns/sync/1234/D:sync-token
/D:multistatus


Does this make sense, or is my logic completely convoluted?


If this was designed from scratch, it wouldn't be using multistatus, but 
would include the properties of the collection (if changed).


D:sync-result
  ... other collection props the report asked for ...
  D:sync-tokenhttp://example.com/ns/sync/1234/D:sync-token
/D:sync-result


I don't necessarily see a problem with sync report using multistatus, 
but perhaps the sync-token should be returned in a prop response element 
for the collection rather than as an added element of multistatus.


--
Kenneth Murchison
Principal Systems Software Engineer
Carnegie Mellon University
___
Ietf mailing list
Ietf@ietf.org
https://www.ietf.org/mailman/listinfo/ietf


Re: Last Call: draft-daboo-webdav-sync-06.txt (Collection Synchronization for WebDAV) to Proposed Standard

2011-12-15 Thread Arnaud Quillaud



On 14/12/2011 18:27, Cyrus Daboo wrote:


A member URI MUST be reported as changed if its mapped resource's
entity tag value (defined in Section 3.11 of [RFC2616]) has changed
since the request sync-token was generated.

It should be mentioned that this only works well with resources 
that are

not content-negotiated.


Unless the content negotiation was done as part of the original full
sync request?


How would that work?

For instance, the common case for Conneg is using Accept:, but 
Accept: on

REPORT specifies the expected media type for the REPORT response.

Yes, that's a problem with WebDAV in general.


OK, so we should probably punt on per-resource content-negotiation 
within the report itself (though I could see us wanting to support 
that in the future, in which case it would probably be done through 
extensions elements in the request body).


So what do we need to do to address this? State that the etags 
returned in the report are always for the non-content-negotiated 
representation of each child resource? I think that is already implied 
by the definition of DAV:getetag, so perhaps we should state that we 
are referring to that value, which is the non-content negotiated 
entity tag. 
In the text above, we are only talking about a change of value, not 
about a specific value.
Are there really a lot of cases where the non-content negotiated etag 
would not change while a content negotiated one would ? Unless that is a 
common scenario, I would not clobber the text with this additional 
statement.
The opposite case (non content-negotiated changes while content 
negotiated does not) is even less problematic as it would just result in 
a false positive for clients using content negotiation.


Arnaud
___
Ietf mailing list
Ietf@ietf.org
https://www.ietf.org/mailman/listinfo/ietf


Re: Last Call: draft-daboo-webdav-sync-06.txt (Collection Synchronization for WebDAV) to Proposed Standard

2011-12-14 Thread Cyrus Daboo

Hi Julian,

--On December 14, 2011 12:10:27 AM +0100 Julian Reschke 
julian.resc...@gmx.de wrote:



On 2011-12-02 00:41, The IESG wrote:

...


Abstract

This specification defines an extension to WebDAV that allows
efficient synchronization of the contents of a WebDAV collection.

- Expand acronyms on first use.


Really, doesn't everyone know what WebDAV is by now :-) In any case fixed 
in my working copy.




Typically, the first time a client connects to the server it will
need to be informed of the entire state of the collection (i.e., a
full list of all member URIs that are currently in the collection).
That is done by the client sending an empty token value to the
server.  This indicates to the server that a full listing is
required.

I think it would be more consistent with other specs not to send an empty
token, but to send *no* token.


Existing implementations expect an empty sync-token element. I don't really 
see much difference either way on this, so would prefer to leave it as-is.



As an alternative, the client might choose to do its first
synchronization using some other mechanism on the collection (e.g.
some other form of batch resource information retrieval such as
PROPFIND, SEARCH [RFC5323] , or specialized REPORTs such as those
defined in CalDAV [RFC4791] and CardDAV [I-D.ietf-vcarddav-carddav])

The CardDAV reference will need to be updated...


Already fixed that one in my working copy.


To implement the behavior for this report a server needs to keep
track of changes to any member URIs and their mapped resources in a
collection (as defined in Section 3 of [RFC4918]).  This includes

Actually, RFC 4918 defines member URL; maybe worth adjusting or
pointing out it's the same.


Will make that change in my working copy. BTW member URI does appear in 
4918 in two places...



Marshalling:

   The request URI MUST identify a collection.  The request body MUST
   be a DAV:sync-collection XML element (see Section 6.1), which MUST
   contain one DAV:sync-token XML element, and one DAV:prop XML
   element, and MAY contain a DAV:limit XML element.

   The request MUST include a Depth header with a value of 1 or
   infinity.

This report definition is in conflict with the definition of the REPORT
method in RFC 3253
(http://greenbytes.de/tech/webdav/rfc3253.html#rfc.section.3.6).

Essentially, a report is applied to just the request URI (depth: 0 or no
depth header field), the request URI and it's internal members (1) or all
descendants (infinity).

A report definition should define the response for the case of Depth: 0.
The format for the other cases follows directly from RFC 3253:

If a Depth request header is included, the response MUST be a 207
Multi-Status. The request MUST be applied separately to the collection
itself and to all members of the collection that satisfy the Depth value.
The DAV:prop element of a DAV:response for a given resource MUST contain
the requested report for that resource.

(Note that I have complained about this a long time ago,
http://lists.w3.org/Archives/Public/w3c-dist-auth/2007JulSep/0041.html).

To fix this, the report would need to define Depth: 0 processing on a
collection to mean the changes just on that collection (which means
membership changes, but not changes to member resources), and the other
modes would then follow based on RFC 3253.

It doesn't seem to be possible to make this change in a way that doesn't
break existing implementations, as RFC 3253 requires the report response
format to be well-formed XML (thus only one root element), and that
format then to be used *inside* DAV:multistatus/DAV:reponse/../DAV:prop.

Optimally, this should be fixed. If this can't be fixed I'd argue that
the spec should be published as Informational, and that it should include
an explanation of the incompatibilty (essentially requiring servers to
special-case this report in case they already use a generic WebDAV REPORT
framework).


I am not convinced the use of Depth in sync report is violating the 
definition in 3253. In some ways it is a matter of how you look at the 
sync. Your viewpoint is that the report asks the collection for its changes 
- in that case, yes, Depth:0 would apply. The other view is that the report 
asks each of the child resources to list their change status, in which case 
Depth:1 and Depth:infinity also makes sense. Which viewpoint is taken 
probably depends on actual implementation rather than any perceived 
protocol restrictions.


Given that I feel the sync report is vital for WebDAV operations, for in 
particular CalDAV and CardDAV, I want to ensure this draft proceeds as a 
standard, not informational. If you feel strongly about this use of Depth, 
in spite of my comments above, then I would be willing to make some 
changes, provided we also include a statement on backwards compatibility 
(i.e., in an appendix state that clients/servers MAY 

Re: Last Call: draft-daboo-webdav-sync-06.txt (Collection Synchronization for WebDAV) to Proposed Standard

2011-12-14 Thread Julian Reschke

On 2011-12-14 17:06, Cyrus Daboo wrote:

Hi Julian,

--On December 14, 2011 12:10:27 AM +0100 Julian Reschke
julian.resc...@gmx.de wrote:


On 2011-12-02 00:41, The IESG wrote:

...


Abstract

This specification defines an extension to WebDAV that allows
efficient synchronization of the contents of a WebDAV collection.

- Expand acronyms on first use.


Really, doesn't everyone know what WebDAV is by now :-) In any case
fixed in my working copy.


Just being pro-active :-). The less happens ion AUTH48, the better.


Typically, the first time a client connects to the server it will
need to be informed of the entire state of the collection (i.e., a
full list of all member URIs that are currently in the collection).
That is done by the client sending an empty token value to the
server. This indicates to the server that a full listing is
required.

I think it would be more consistent with other specs not to send an empty
token, but to send *no* token.


Existing implementations expect an empty sync-token element. I don't
really see much difference either way on this, so would prefer to leave
it as-is.


Would be interesting to know how they treat missing sync tokens.


...

Actually, RFC 4918 defines member URL; maybe worth adjusting or
pointing out it's the same.


Will make that change in my working copy. BTW member URI does appear
in 4918 in two places...


Errata, errata!


Marshalling:

The request URI MUST identify a collection. The request body MUST
be a DAV:sync-collection XML element (see Section 6.1), which MUST
contain one DAV:sync-token XML element, and one DAV:prop XML
element, and MAY contain a DAV:limit XML element.

The request MUST include a Depth header with a value of 1 or
infinity.

This report definition is in conflict with the definition of the REPORT
method in RFC 3253
(http://greenbytes.de/tech/webdav/rfc3253.html#rfc.section.3.6).

Essentially, a report is applied to just the request URI (depth: 0 or no
depth header field), the request URI and it's internal members (1) or all
descendants (infinity).

A report definition should define the response for the case of Depth: 0.
The format for the other cases follows directly from RFC 3253:

If a Depth request header is included, the response MUST be a 207
Multi-Status. The request MUST be applied separately to the collection
itself and to all members of the collection that satisfy the Depth value.
The DAV:prop element of a DAV:response for a given resource MUST contain
the requested report for that resource.

(Note that I have complained about this a long time ago,
http://lists.w3.org/Archives/Public/w3c-dist-auth/2007JulSep/0041.html).


To fix this, the report would need to define Depth: 0 processing on a
collection to mean the changes just on that collection (which means
membership changes, but not changes to member resources), and the other
modes would then follow based on RFC 3253.

It doesn't seem to be possible to make this change in a way that doesn't
break existing implementations, as RFC 3253 requires the report response
format to be well-formed XML (thus only one root element), and that
format then to be used *inside* DAV:multistatus/DAV:reponse/../DAV:prop.

Optimally, this should be fixed. If this can't be fixed I'd argue that
the spec should be published as Informational, and that it should include
an explanation of the incompatibilty (essentially requiring servers to
special-case this report in case they already use a generic WebDAV REPORT
framework).


I am not convinced the use of Depth in sync report is violating the
definition in 3253. In some ways it is a matter of how you look at the


It does.

RFC 3253 defines the response format for Depth 0, and then states how 
the format for Depth  0 is derived from that; essentially by packaging 
into multistatus.


This means that reports that do not support Depth 0 can not be defined.

It also means that a report that uses multistatus for Depth 0, and 
which supports depths  0, will have to packages multistatus inside 
multistatus.




sync. Your viewpoint is that the report asks the collection for its
changes - in that case, yes, Depth:0 would apply. The other view is that
the report asks each of the child resources to list their change status,
in which case Depth:1 and Depth:infinity also makes sense. Which
viewpoint is taken probably depends on actual implementation rather than
any perceived protocol restrictions.


What Depth 0 means is just a matter of definition. If you want to make 
Depth 0 mean request-URI and all of it's direct members, that's fine. 
It just will give funny results when you use it with other Depths *and* 
follow the RFC 3253 definition in these cases.



Given that I feel the sync report is vital for WebDAV operations, for in
particular CalDAV and CardDAV, I want to ensure this draft proceeds as a
standard, not informational. If you feel strongly about this use of
Depth, in spite of my comments above, then I would be willing to make
some changes, 

Re: Last Call: draft-daboo-webdav-sync-06.txt (Collection Synchronization for WebDAV) to Proposed Standard

2011-12-14 Thread Julian Reschke

On 2011-12-14 18:01, Ken Murchison wrote:

Cyrus Daboo wrote:


I am not convinced the use of Depth in sync report is violating the
definition in 3253. In some ways it is a matter of how you look at the
sync. Your viewpoint is that the report asks the collection for its
changes - in that case, yes, Depth:0 would apply. The other view is
that the report asks each of the child resources to list their change
status, in which case Depth:1 and Depth:infinity also makes sense.
Which viewpoint is taken probably depends on actual implementation
rather than any perceived protocol restrictions.


My $.02:

I look the sync report as a filtered query for properties (e.g.
CALDAV:calendar-query), with the filter being only give me a
DAV:response if the resource has been changed/removed since the
specified sync-token.

A Depth of 1 or infinity gives us exactly what is specified in the draft.

A Depth of 0 refers to the collection itself, and assuming it exists,
the DAV:multistatus response may or may not include a single
DAV:response element, depending on whether the server maintains an
entity tag on the collection which changes with its membership. In
either case, the sync-token is returned per the extended grammar in 6.3.

So, a sync-collection report with a depth of 0 might simply return the
following:

D:multistatus
D:sync-tokenhttp://example.com/ns/sync/1234/D:sync-token
/D:multistatus


Does this make sense, or is my logic completely convoluted?


If this was designed from scratch, it wouldn't be using multistatus, but 
would include the properties of the collection (if changed).


D:sync-result
  ... other collection props the report asked for ...
  D:sync-tokenhttp://example.com/ns/sync/1234/D:sync-token
/D:sync-result



___
Ietf mailing list
Ietf@ietf.org
https://www.ietf.org/mailman/listinfo/ietf


Re: Last Call: draft-daboo-webdav-sync-06.txt (Collection Synchronization for WebDAV) to Proposed Standard

2011-12-14 Thread Cyrus Daboo

Hi Julian,

--On December 14, 2011 5:29:16 PM +0100 Julian Reschke 
julian.resc...@gmx.de wrote:



I am not convinced the use of Depth in sync report is violating the
definition in 3253. In some ways it is a matter of how you look at the


It does.

RFC 3253 defines the response format for Depth 0, and then states how the
format for Depth  0 is derived from that; essentially by packaging into
multistatus.

This means that reports that do not support Depth 0 can not be defined.

It also means that a report that uses multistatus for Depth 0, and
which supports depths  0, will have to packages multistatus inside
multistatus.


Well I don't consider the text there very clear at all. In fact I think it 
is very much tailored to the 3253 use cases and not flexible enough for 
other general purpose use of REPORT. It states this:


 The DAV:prop element of a DAV:response
 for a given resource MUST contain the requested report for that
 resource.

Which implies packaging of multistatus within the DAV:prop element, which 
seems completely wrong to me.



sync. Your viewpoint is that the report asks the collection for its
changes - in that case, yes, Depth:0 would apply. The other view is that
the report asks each of the child resources to list their change status,
in which case Depth:1 and Depth:infinity also makes sense. Which
viewpoint is taken probably depends on actual implementation rather than
any perceived protocol restrictions.


What Depth 0 means is just a matter of definition. If you want to make
Depth 0 mean request-URI and all of it's direct members, that's fine.
It just will give funny results when you use it with other Depths *and*
follow the RFC 3253 definition in these cases.


So would it hurt to allow this spec to override the 3253 nested 
multistatus requirement in the interests of generating a compact response 
specific to this type of report?



Given that I feel the sync report is vital for WebDAV operations, for in
particular CalDAV and CardDAV, I want to ensure this draft proceeds as a
standard, not informational. If you feel strongly about this use of
Depth, in spite of my comments above, then I would be willing to make
some changes, provided we also include a statement on backwards
compatibility (i.e., in an appendix state that clients/servers MAY
use/accept the old Depth approach). If we do that we would need to
proceed as follows: state that sync report can only be used with
Depth:0, add a new request header to define the scope of the sync (e.g.
Sync-Depth with values 1 and infinite). If we require Sync-Depth to be
present, then we have a means for servers to detect old clients and
handle Depth in a backwards compatible manner.


Not happy having to add a new header field just for that. A simpler
approach might be to just assign a different report name, and then allow
all depths.


I think if you insist on requiring Depth = nested multistatus, then we 
either add a new header or perhaps a depth element inside the request 
body (and that would also be reasonable in terms of being able to support 
backwards compatibility). At this point I would prefer the later as being 
least disruptive to existing implementations.



In the case where a mapping between a member URI and the target
collection was removed, then a new mapping with the same URI created,
the member URI MUST be reported as changed and MUST NOT be reported
as removed.

The client could tell that this happened if the DAV:resourceid property
was included.

A member URI MUST be reported as changed if its mapped resource's
entity tag value (defined in Section 3.11 of [RFC2616]) has changed
since the request sync-token was generated.

It should be mentioned that this only works well with resources that are
not content-negotiated.


Unless the content negotiation was done as part of the original full
sync request?


How would that work?

For instance, the common case for Conneg is using Accept:, but Accept: on
REPORT specifies the expected media type for the REPORT response.

Yes, that's a problem with WebDAV in general.


OK, so we should probably punt on per-resource content-negotiation within 
the report itself (though I could see us wanting to support that in the 
future, in which case it would probably be done through extensions elements 
in the request body).


So what do we need to do to address this? State that the etags returned in 
the report are always for the non-content-negotiated representation of each 
child resource? I think that is already implied by the definition of 
DAV:getetag, so perhaps we should state that we are referring to that 
value, which is the non-content negotiated entity tag.


--
Cyrus Daboo

___
Ietf mailing list
Ietf@ietf.org
https://www.ietf.org/mailman/listinfo/ietf


Re: Last Call: draft-daboo-webdav-sync-06.txt (Collection Synchronization for WebDAV) to Proposed Standard

2011-12-14 Thread Cyrus Daboo

Hi Ken,

--On December 14, 2011 12:29:18 PM -0500 Ken Murchison 
mu...@andrew.cmu.edu wrote:



D:sync-result
  ... other collection props the report asked for ...
  D:sync-tokenhttp://example.com/ns/sync/1234/D:sync-token
/D:sync-result


I don't necessarily see a problem with sync report using multistatus, but
perhaps the sync-token should be returned in a prop response element for
the collection rather than as an added element of multistatus.


That won't work when the limiting/truncation option is used as the 
multistatus response for the collection indicates an overall status error, 
rather than using propstat.


--
Cyrus Daboo

___
Ietf mailing list
Ietf@ietf.org
https://www.ietf.org/mailman/listinfo/ietf


Re: Last Call: draft-daboo-webdav-sync-06.txt (Collection Synchronization for WebDAV) to Proposed Standard

2011-12-14 Thread Julian Reschke

On 2011-12-14 18:27, Cyrus Daboo wrote:

Hi Julian,

--On December 14, 2011 5:29:16 PM +0100 Julian Reschke
julian.resc...@gmx.de wrote:


I am not convinced the use of Depth in sync report is violating the
definition in 3253. In some ways it is a matter of how you look at the


It does.

RFC 3253 defines the response format for Depth 0, and then states how the
format for Depth  0 is derived from that; essentially by packaging into
multistatus.

This means that reports that do not support Depth 0 can not be defined.

It also means that a report that uses multistatus for Depth 0, and
which supports depths  0, will have to packages multistatus inside
multistatus.


Well I don't consider the text there very clear at all. In fact I think
it is very much tailored to the 3253 use cases and not flexible enough
for other general purpose use of REPORT. It states this:

The DAV:prop element of a DAV:response
for a given resource MUST contain the requested report for that
resource.


It states what it states :-)


Which implies packaging of multistatus within the DAV:prop element,
which seems completely wrong to me.


No, you only need to package multistatus inside prop in case the 
response to the Depth: 0 request uses multistatus.



sync. Your viewpoint is that the report asks the collection for its
changes - in that case, yes, Depth:0 would apply. The other view is that
the report asks each of the child resources to list their change status,
in which case Depth:1 and Depth:infinity also makes sense. Which
viewpoint is taken probably depends on actual implementation rather than
any perceived protocol restrictions.


What Depth 0 means is just a matter of definition. If you want to make
Depth 0 mean request-URI and all of it's direct members, that's fine.
It just will give funny results when you use it with other Depths *and*
follow the RFC 3253 definition in these cases.


So would it hurt to allow this spec to override the 3253 nested
multistatus requirement in the interests of generating a compact
response specific to this type of report?


I think so, because it defeats WebDAV stacks from executing reports 
consistently. (And, I assure you, I have written a framework in the past 
that did exactly that, otherwise I probably wouldn't have noticed the 
problem).



Given that I feel the sync report is vital for WebDAV operations, for in
particular CalDAV and CardDAV, I want to ensure this draft proceeds as a
standard, not informational. If you feel strongly about this use of
Depth, in spite of my comments above, then I would be willing to make
some changes, provided we also include a statement on backwards
compatibility (i.e., in an appendix state that clients/servers MAY
use/accept the old Depth approach). If we do that we would need to
proceed as follows: state that sync report can only be used with
Depth:0, add a new request header to define the scope of the sync (e.g.
Sync-Depth with values 1 and infinite). If we require Sync-Depth to be
present, then we have a means for servers to detect old clients and
handle Depth in a backwards compatible manner.


Not happy having to add a new header field just for that. A simpler
approach might be to just assign a different report name, and then allow
all depths.


I think if you insist on requiring Depth = nested multistatus, then we
either add a new header or perhaps a depth element inside the request
body (and that would also be reasonable in terms of being able to
support backwards compatibility). At this point I would prefer the later
as being least disruptive to existing implementations.


Yes, a new child element of the request body (depth) works for me.


In the case where a mapping between a member URI and the target
collection was removed, then a new mapping with the same URI created,
the member URI MUST be reported as changed and MUST NOT be reported
as removed.

The client could tell that this happened if the DAV:resourceid property
was included.

A member URI MUST be reported as changed if its mapped resource's
entity tag value (defined in Section 3.11 of [RFC2616]) has changed
since the request sync-token was generated.

It should be mentioned that this only works well with resources that
are
not content-negotiated.


Unless the content negotiation was done as part of the original full
sync request?


How would that work?

For instance, the common case for Conneg is using Accept:, but Accept: on
REPORT specifies the expected media type for the REPORT response.

Yes, that's a problem with WebDAV in general.


OK, so we should probably punt on per-resource content-negotiation
within the report itself (though I could see us wanting to support that
in the future, in which case it would probably be done through
extensions elements in the request body).

So what do we need to do to address this? State that the etags returned
in the report are always for the non-content-negotiated representation
of each child resource? I think that is already implied by the

Re: Last Call: draft-daboo-webdav-sync-06.txt (Collection Synchronization for WebDAV) to Proposed Standard

2011-12-14 Thread Julian Reschke

On 2011-12-14 18:34, Cyrus Daboo wrote:

Hi Ken,

--On December 14, 2011 12:29:18 PM -0500 Ken Murchison
mu...@andrew.cmu.edu wrote:


D:sync-result
... other collection props the report asked for ...
D:sync-tokenhttp://example.com/ns/sync/1234/D:sync-token
/D:sync-result


I don't necessarily see a problem with sync report using multistatus, but
perhaps the sync-token should be returned in a prop response element for
the collection rather than as an added element of multistatus.


That won't work when the limiting/truncation option is used as the
multistatus response for the collection indicates an overall status
error, rather than using propstat.


OK, so it would need to be part of the sync-result (and the other props 
be included with a DAV:prop container).


Best regards, Julian

___
Ietf mailing list
Ietf@ietf.org
https://www.ietf.org/mailman/listinfo/ietf


Last Call: draft-daboo-webdav-sync-06.txt (Collection Synchronization for WebDAV) to Proposed Standard

2011-12-13 Thread Julian Reschke

On 2010-06-08 09:14, Julian Reschke wrote:

On 07.06.2010 17:11, Werner Donné wrote:

Hi,

I don't see why Depth:infinity should be ruled out from the start. You
can let the server decide if the performance penalty is too high or
not. A server with a relational system underneath it, for example, can
do this with one query.

I don't agree with the bubble up principle. A collection changes
when its member set changes. Changing a resource that is referred to
by one of the members doesn't affect the collection, whether that
resource is a collection or not. I think the bubble up principal is
not consistent with the getlastmodified property. It is also not
needed if Depth:infinity is supported.

Best regards,

Werner.


Agreed.

In particular: defining a report works by defining it for Depth: 0. The
semantics for Depth: 1 and Depth: infinity follow by the definition in
RFC 3253.

It's probably *really* time to pull the definition of REPORT out of RFC
3253 and place it into a separate spec, including more rationale,
recommendations for defining new reports, and examples.

Best regards, Julian


It seems to me that this issue was never addressed.

As defined right now, the way REPORT is used doesn't seem to be 
compatible with the definition of REPORT in RFC 3253, and the definition 
of the Depth: header field in RFC 4918.


Unless I'm missing something, this will be a problem for any 
implementation that tries to implement the sync report based on a 
generic WebDAV reporting framework.


Best regards, Julian
___
Ietf mailing list
Ietf@ietf.org
https://www.ietf.org/mailman/listinfo/ietf


Re: Last Call: draft-daboo-webdav-sync-06.txt (Collection Synchronization for WebDAV) to Proposed Standard

2011-12-13 Thread Julian Reschke

On 2011-12-02 00:41, The IESG wrote:

...


Abstract

   This specification defines an extension to WebDAV that allows
   efficient synchronization of the contents of a WebDAV collection.

- Expand acronyms on first use.

   Typically, the first time a client connects to the server it will
   need to be informed of the entire state of the collection (i.e., a
   full list of all member URIs that are currently in the collection).
   That is done by the client sending an empty token value to the
   server.  This indicates to the server that a full listing is
   required.

I think it would be more consistent with other specs not to send an 
empty token, but to send *no* token.


   As an alternative, the client might choose to do its first
   synchronization using some other mechanism on the collection (e.g.
   some other form of batch resource information retrieval such as
   PROPFIND, SEARCH [RFC5323] , or specialized REPORTs such as those
   defined in CalDAV [RFC4791] and CardDAV [I-D.ietf-vcarddav-carddav])

The CardDAV reference will need to be updated...

   To implement the behavior for this report a server needs to keep
   track of changes to any member URIs and their mapped resources in a
   collection (as defined in Section 3 of [RFC4918]).  This includes

Actually, RFC 4918 defines member URL; maybe worth adjusting or 
pointing out it's the same.



   Marshalling:

  The request URI MUST identify a collection.  The request body MUST
  be a DAV:sync-collection XML element (see Section 6.1), which MUST
  contain one DAV:sync-token XML element, and one DAV:prop XML
  element, and MAY contain a DAV:limit XML element.

  The request MUST include a Depth header with a value of 1 or
  infinity.

This report definition is in conflict with the definition of the REPORT 
method in RFC 3253 
(http://greenbytes.de/tech/webdav/rfc3253.html#rfc.section.3.6).


Essentially, a report is applied to just the request URI (depth: 0 or no 
depth header field), the request URI and it's internal members (1) or 
all descendants (infinity).


A report definition should define the response for the case of Depth: 0. 
The format for the other cases follows directly from RFC 3253:


If a Depth request header is included, the response MUST be a 207 
Multi-Status. The request MUST be applied separately to the collection 
itself and to all members of the collection that satisfy the Depth 
value. The DAV:prop element of a DAV:response for a given resource MUST 
contain the requested report for that resource.


(Note that I have complained about this a long time ago, 
http://lists.w3.org/Archives/Public/w3c-dist-auth/2007JulSep/0041.html).


To fix this, the report would need to define Depth: 0 processing on a 
collection to mean the changes just on that collection (which means 
membership changes, but not changes to member resources), and the other 
modes would then follow based on RFC 3253.


It doesn't seem to be possible to make this change in a way that doesn't 
break existing implementations, as RFC 3253 requires the report response 
format to be well-formed XML (thus only one root element), and that 
format then to be used *inside* DAV:multistatus/DAV:reponse/../DAV:prop.


Optimally, this should be fixed. If this can't be fixed I'd argue that 
the spec should be published as Informational, and that it should 
include an explanation of the incompatibilty (essentially requiring 
servers to special-case this report in case they already use a generic 
WebDAV REPORT framework).


  The response body for a successful request MUST be a DAV:
  multistatus XML element, which MUST contain one DAV:sync-token

Maybe s/one/a single/

  ...

   Preconditions:

  (DAV:valid-sync-token): The DAV:sync-token element value MUST be a
  valid token previously returned by the server.  A token can become
  invalid as the result of being out of date (out of the range of
  change history maintained by the server), or for other reasons
  (e.g. collection deleted, then recreated, access control changes,
  etc...).

Does the sync-token need to originate from the same collection?


3.3.  Depth behavior

   Servers MUST support both Depth:1 and Depth:infinity behavior with
   the DAV:sync-collection report.  Clients MUST include either a
   Depth:1 or Depth:infinity request header with the DAV:sync-collection
   report.

See above; this contradicts the base definition of REPORT.

   In the case where a mapping between a member URI and the target
   collection was removed, then a new mapping with the same URI created,
   the member URI MUST be reported as changed and MUST NOT be reported
   as removed.

The client could tell that this happened if the DAV:resourceid property 
was included.


   A member URI MUST be reported as changed if its mapped resource's
   entity tag value (defined in Section 3.11 of [RFC2616]) has changed
   since the request sync-token was generated.

It should be 

Last Call: draft-daboo-webdav-sync-06.txt (Collection Synchronization for WebDAV) to Proposed Standard

2011-12-01 Thread The IESG

The IESG has received a request from an individual submitter to consider
the following document:
- 'Collection Synchronization for WebDAV'
  draft-daboo-webdav-sync-06.txt as a Proposed Standard

The IESG plans to make a decision in the next few weeks, and solicits
final comments on this action. Please send substantive comments to the
i...@ietf.org mailing lists by 2011-12-29. Exceptionally, comments may be
sent to i...@ietf.org instead. In either case, please retain the
beginning of the Subject line to allow automated sorting.

Abstract


   This specification defines an extension to WebDAV that allows
   efficient synchronization of the contents of a WebDAV collection.

Editorial Note (To be removed by RFC Editor before publication)

   Please send comments to the Distributed Authoring and Versioning
   (WebDAV) working group at mailto:w3c-dist-a...@w3.org, which may be
   joined by sending a message with subject subscribe to
   mailto:w3c-dist-auth-requ...@w3.org.  Discussions of the WEBDAV
   working group are archived at
   http://lists.w3.org/Archives/Public/w3c-dist-auth/.




The file can be obtained via
http://datatracker.ietf.org/doc/draft-daboo-webdav-sync/

IESG discussion can be tracked via
http://datatracker.ietf.org/doc/draft-daboo-webdav-sync/


No IPR declarations have been submitted directly on this I-D.


___
IETF-Announce mailing list
IETF-Announce@ietf.org
https://www.ietf.org/mailman/listinfo/ietf-announce