- From: Elias Sinderson <elias@cse.ucsc.edu>
- Date: Wed, 30 Jul 2003 16:38:35 -0700
- To: w3c-dist-auth@w3.org
- Message-ID: <3F2856FB.8010608@cse.ucsc.edu>
Julian Reschke wrote: >>><Julian Reschke> 03-C17: >>> >>>8.1.5.: "Because clients may be forced to prompt users or throw away changed >>> >>> >>>content if the ETag changes, a WebDAV server MUST not change the ETag (or >>> >>> >>>getlastmodified value) for a resource when only its property values change." >>> >>> >>>Some servers do, and I don't think we can change that. Therefore I think >>>this change at least needs explicit consensus on the mailing list. >>> >>> >><Jason Crawford> I vote for the wording that is in there. I think we've already reached consensus that changing property values should not be changing etags. >> >> > ><Julian Reschke> Where and when? > While I had agreed with Jason and thought that there had been some concensus on this, an exhaustive search of the mailing list archives has not backed this up. I is entirely likely that I was misremembering the consensus that had been reached regarding the inclusion of stronger ETag requirements in 2518bis. That being said, however, there has been a fair amount of discussion around this very issue and the majority opinion seems to be in favor of this interpretation... (more below). As an aside, after reading through the previous discussions, I now firmly believe that the specification of a property tag, PTag, would put this issue soundly to rest. The idea has been brought up before, and I think it deserves consideration. >><Elias Sinderson> I also believe that there was already concensus re: property values not affecting ETags... Since doing a PUT of a resource doesn't affect properties >>and a GET doesn't retrieve properties, the ETag should not change when properties on a resource do. That is to say that ETags should only be >> >> ><Julian Reschke> That's simply not true. You're argueing from a world view where the server stores properties and content as separate entities. However, it's perfectly >legal to have a server that > >- extracts some properties upon PUT (for instance metadata from a WORD >document) and/or >- changes the content upon PROPPATCH of one of the aforementioned >properties. > >I think that we can't and shouldn't make this behaviour illegal. > No, implementation issues aside (that is, I don't care how a server stores properties as it is orthogonal to my position), ETags as defined in RFC 2616 have nothing to do with WebDAV properties. The fact that resources have subsequently been defined as having properties doesn't change this fact. More to the point, the WebDAV specification should not change the definition or semantic properties of ETags. Let us, however, consider existing implementations where resource properties are stored as the same blob of bits as the resource entity. This situation does not imply that changing a property of a resource entails changing it's ETag. In this case, the server must know how to seperate the two when responding to a GET or PROPFIND request and is perfectly capable of modifying the ETag without taking property values into consideration. The fact that RFC 2518 doesn't treat this matter directly has certainly complicated the issue for implementors, as evidenced by the different approaches that server implementations have taken in generating ETags. The two points you raise above are red herrings, if you ask me. In the first case you have stipulated that the client has done a PUT which affects some properties. This is, as you identify, a valid case for generating a new ETag, but this is simply because the client has done a PUT, not because of any property value(s) changing (i.e. you have refuted my assertion that a PUT won't change properties, but not provided a compelling reason why changing properties alone should affect the ETag). In the second case you state that modifying some special properties may change the content of the resource. Again, I think this is a valid case for generating a new ETag, but not due to the property changing but because the resource contents have changed. In short, this is similar to doing a PUT and modifying the resource itself although it is accomplished via a PROPPATCH instead. In short, my argument is this: ETags should only change when the contents of a resource change (e.g. when the entity itself changes). Generating strong ETags doesn't place an undue burden on server resources and neither does detecting when the actual contents of a resource have changed by any means. There will be some frustrations in updating existing server code to be compliant if we take a firm stand on this issue but, in the long run, the benefits to clients far outweigh any drawbacks. The alternative is to have different server implementations of ETags and, as a consequence, balkanizing the interoperability of clients and servers. Apologies for the long wind, I feel this particular issue is quite important and deserving of a thorough treatment on the road to consensus. Cheers, Elias
Received on Wednesday, 30 July 2003 19:38:42 UTC