- 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