- From: Clemm, Geoff <gclemm@rational.com>
- Date: Thu, 2 Nov 2000 15:55:59 -0500
- To: "DeltaV (E-mail)" <ietf-dav-versioning@w3.org>
From: "Jim Whitehead" <ejw@cse.ucsc.edu> So, I understand the surface rationale for the DAV:if-unsupported attribute. There is a desire to ensure that, for some XML elements, DeltaV implementations MUST fail if they do not understand the element (when DAV:if-unsupported="error"). What I don't understand are the specific use cases driving this feature. Just for the record, you were the one that requested this feature originally, but I'll take over its defense (:-). The example in Section 3.1.1 is uncompelling -- it seems quite reasonable to mandate that every DeltaV server, whether Basic or Advanced, understand the checkout XML element, or be judged non-compliant. Thus, setting DAV:if-unsupported="error" on the checkout XML element is redundant. This is here for extensibility. We will undoubtebly be adding new parameters to the various commands over time, and a server needs to know if it is something it can ignore or not. For example, suppose we wanted to add a DAV:keep-checked-out parameter to the VERSION-CONTROL request? A client could survive quite well if this parameter were ignored (the user would just have to explicitly check it out later), but some clients might be generating an automatic sequence of requests, and wouldn't want to be surprised. Assuming there is a compelling use case, I have a few nits about this feature: * At present, it is specified as a double-negative (if this element is not supported, then treat it as a non-success). I'd rather see this reformulated in terms of positive logic, since I believe that's easier for people to understand, and implement right. So, I'd rename the attribute "must-understand", with values "true" and "false", with true meaning the interpretation fails if the implementation doesn't understand the element, and false meaning the element can safely be ignored using the DAV ignore rule. DAV:must-understand="T" is certainly fine, but DAV:must-understand="F" looks rather weird (at first glance, it might look like you are requiring that the server *not* understand the element :-). DAV:if-unsupported="ignore" does not have this problem, and claiming that if-unsupported="fail" is a double negative because you can replace "fail" with "not succeed" is rather bogus, since with that technique, you can make any statement into a double negative by replacing both terms with the negations of their inverses. But I don't care much, so I'll go ahead and make the change if nobody else cares. Note: I'll make it "must-support", since a server can understand a feature but not support it, and it is the support that the client cares about. * The text describing this attribute assumes that it would only be used in client to server message traffic. However, XML traffic flows in both directions in DeltaV, so I think it makes sense to discuss what the client should do if it uncounters an "if-unsupported='error'" attribute. Treating the result as a server-generated syntax error might be appropriate, or it might generally be OK for the client to use the DAV ignore rule. I don't follow you. What would a client ever do differently if it encounters a DAV:must-support coming from the server? * The inheritance rule for DAV:if-unsupported could uncessarily limit the kind of XML processing that can be performed. Some XML parsing strategies simply use sophisticated string searches, and don't perform tree traversals. Such an implementation would be slowed by the inheritance requirement. OK, I'm happy to get rid of the inheritance requirement. Cheers, Geoff
Received on Thursday, 2 November 2000 15:56:42 UTC