Re: draft-ietf-conneg-feature-hash-03.txt
Graham Klyne <[email protected]> Thu, 16 Sep 1999 11:18:43 +0100
| Newsgroups | gmane.ietf.medfree |
|---|---|
| Message-ID | <[email protected]> |
Ted, I'm not sure that I recognize the problem you are describing. [Alert: long message follows, probably belabouring some obvious points. My conclusions appear at the end.] At 11:13 15/09/99 -0700, [email protected] wrote: [...] >Reading through the new version, it seems to me that we are struggling >between the URL and hash version because they both challenge the >assumptions in RFC2533, section 3.3. I didn't see the assumption as "challenged"; not fully exploited, maybe. >... Predicate matching in the CONNEG >framework starts from the idea that anything is possible, and that you >name constraints to remove instances from the >set-which-has-everything. If a constraint is not named at all, we >assume the instance remains possible. OK so far. >... If a set is constrained by an >unrecognized feature tag, we assume that the instances in the set are >*not* possible. This bit I don't follow. Suppose we have a sender and a receiver, and the receiver offers capabilities containing a feature tag unrecognized by the sender. If the sender's options were constrained by that feature tag, then it would need to understand it. Therefore, the presence of this feature tag in the receiver's capability expression does not affect what the sender can send, and is effectively ignored. Or that's the view I've taken. Let me get even more specific. Suppose the sender has two resource options: (& (foo=x) (bar=z) ) and (& (foo=y) (bar=z) ) And suppose the recipient has capability: (& (foo=x) (special=abc) ) The sender can match each of his resources with the receiver capability, and finds that the one with (foo=y) does NOT match, but the resource with (foo=x) does match, yielding the resultant capability expression: (& (foo=x) (bar=z) (special=abc) ) This is how the matching rules work, as defined. The presence of an unrecognized feature tag does not prevent a match being achived. I think this assumption is necessary, since the alternative is to assume that every party has total knowledge of the complete range of capabilities that may determine whether a resource is usable, which I do not think is reasonable. For example, a simple web browser may say that it has a capability to display colour images. For most purposes, this is sufficient. But there may be a resource that is a full colour image, but that it also employs a particular calibrated colour space for the representation of colours. Most web browsers run on relatively cheap video displays that don't offer calibrated colour, so the colour calibration information is not really important and specification of this information should not prevent the transfer of an otherwise quite usable resource. However, for a high quality, high cost colour reproduction setup, which does understand calibrated colour spaces, it probably is important to ensure that the colour calibration features do match. So, the non-recognition of a feature tag is taken to mean that its value is not important. This leaves us with no way to express "mandatory features", a problem that has been documented elsewhere, and one that I was assuming we were prepared to defer for further study. >With composite feature sets, the assumption that unrecognized feature >tags do constrain the set creates a problem, because the conneg >predicate alone can no longer tell you what feature tags are present. This is true. But consider this: Sender: (h.abcdef) Receiver: (h.abcdef) In this case, the two expressions are known to match, even if the expension of (h.abcdef) is unknown. Furthermore: Sender: (& (foo=x) (h.abcdef) ) Receiver: (& (foo=x) (h.abcdef) ) can only fail to match if either sender or receiver is expressing a null capability (e.g. if the expansion of (h.abcdef) contains (foo=y) in every conjuction. I would argue that it is reasonable to treat this as a match. Generalizing this idea, I would say that it is reasonable to allow feature matching where the expansion of composite features is not known, because the resulting expression is always correct; e.g. Sender: (& (foo=x) (h.abcdef) ) Receiver: (& (bar=z) (h.123456) ) when matched would yield the feature expression: (& (foo=x) (bar=z) (h.abcdef) (h.123456) ) It is possible that when the composite feature expressions are expanded, this expression will actually yield (FALSE) --i.e. no match-- which means that we cannot guarantee to fully detect this condition in all circumstances until we have more specific knowledge of the composites. BUT THE RESULTING EXPRESSION IS STILL CORRECT. I think this is not a issue that is specifically introduced by the feature composites. It is, I think, another aspect of handling unrecognized feature tags. >You must have a dereferencing method for either the URI or the hash to >determine the feature tags and values. Fundamentally, I believe that >that has made me uneasy because it seems to shift us to the opposite >assumption, that we must presume that something is constrained until >it has been shown to be possible. I do not recognize this shift. Rather, I think the original presumption of possible until known to be constrained is applied here at a much coarser level. Ultimately, in the absence of full information, the system as defined tends to err on the side of being permissive. >If we accept the shift, there are pros and cons to both methods. My >question to the group, though, is whether others are as concerned >about this shift as I am. Do we have agreement that we should head >down this path at all, never mind which fork? I don't see us heading down any new path here. I think its always been the case that with only coarse-grained information about media capabilities, we detect the gross incompatibilities. With more fine-grained information, we can arrange a more accurate matching of capabilities. Only with complete information can we guarantee a perfect match every time. I feel we may wish to craft some additional text. I would be interested to hear if anything I say here helps to clarify the position to anyone. #g ------------ Graham Klyne ([email protected])