- From: Lisa Dusseault <lisa@osafoundation.org>
- Date: Tue, 12 Sep 2006 19:00:39 -0700
- To: Jamie Lokier <jamie@shareable.org>
- Cc: Helge Hess <helge.hess@opengroupware.org>, HTTP Working Group <ietf-http-wg@w3.org>, Jonathan Rosenberg <jdrosen@cisco.com>
- Message-Id: <D19D0B7E-B4A5-4318-84E9-7293133871B4@osafoundation.org>
On Sep 12, 2006, at 5:05 PM, Jamie Lokier wrote:
>
> 2. If a client receives a strong Etag in a PUT response, it should
> ignore it.
>
> If there are already deployed clients which don't satisfy requirement
> 2, then it would be appropriate to insist on requirement 1 in future
> specifications, so that future deployments interoperate with existing
> ones.
Yes, that's exactly it -- Xythos WebFile Client behaved this way, and
based on their user-facing behavior I suspect many others do too
although I can't test them right now. I'm thinking particularly
synch tools like 'sitecopy', but possibly also networked share
viewers like WebDAV-FS on Mac and the Windows clients.
Throughout 1999 to 2005, the WebDAV and HTTP community tended to
encourage this kind of implementation. This W3C Note certainly does:
http://www.w3.org/1999/04/Editing/
>
> If there are already deployed servers which don't satisfy requirement
> 1, then it would be appropriate to insist on requirement 2 in future
> specifications, so that future deployments interoperate with existing
> ones.
We are starting to envision such servers, but I don't know that
they're deployed yet, and certainly not for the general case. It's
particularly for the case of servers specialized to store certain
formats, like calendar data or XML data, that this type of behavior
may in the future become implemented/deployed.
The two special cases I'm aware of are CalDAV and XCAP: both store a
specialized format and a certain kind of data, understand the data at
a semantic level, and a server could conceivably be "extra helpful"
and add data to those resources.
* For CalDAV, we proposed that if a server adds information to a
resource upon write, it not return a strong ETag, and thus work with
existing clients.
* XCAP says in 7.11:
When a client uses conditional PUT and DELETE operations, it can
apply those changes to its local cached copy, and update the
value of
the entity tag for the locally cached copy based on the Etag header
field returned in the response. As long as no other clients try to
modify the document, the client will be able to perform conditional
operations on the document without ever having to perform separate
GET operations to synchronize the document and it's entity tags with
the server.
Note that XCAP also says in 8.5 that the server MUST return the ETag
header in all 200 or 201 responses to PUT. To me, combining these
statements means that there's only one way a server could make
modifications to a resource on write:
Start with a resource with ETag value E1.
Accept the PUT request and return a strong ETag as required. It
must be a new value, lets say E2.
Perform its modification and change the resource ETag to another new
value, say E3.
With this approach, an XCAP server could literally meet the
requirement to return the ETag header, yet also force clients that
are written to work as described in 7.11 to get the correct resource
version.
JDR may be able to clarify what the common assumption is for XCAP --
perhaps it's that servers *not* modify resources.
Anyway, leaving the special cases again, I am not aware of any
general WebDAV servers -- servers which accept general content just
like a file server would -- which make modifications before returning
a strong ETag.
>
> But if there are _both_ deployed clients and servers which don't
> satisfy those requirements out there, those will already fail to
> interoperate with each other. There is no specification which can fix
> this. However, the choice of 1, 2 or both will affect
> interoperability of future deployments with the existing one.
>
Yes, this is a good analysis. I know there are significant client
deployments based on assuming no server-rewriting. I am not aware of
server deployments that do rewriting and return strong ETags. I'm
thus quite confident about where the interop advantage lies.
Lisa
Received on Wednesday, 13 September 2006 02:01:08 UTC