I've updated all 3 TAG versioning finding documents to reflect our May f2f discussions, Noah, Stuart, Dan, and Rhys's email comments, and various other things that have occurred to me. The permanent URIs for this version are at http://www.w3.org/2001/tag/doc/versioning-20070704.html http://www.w3.org/2001/tag/doc/versioning-strategies-20070704.html http://www.w3.org/2001/tag/doc/versioning-xml-20070704.html And the always latest version documents are at http://www.w3.org/2001/tag/doc/versioning http://www.w3.org/2001/tag/doc/versioning-strategies http://www.w3.org/2001/tag/doc/versioning-xml Cheers, Dave |
Hi David, I've got some comments on the definitions in the last Versioning Draft. | We provide mathematical definitions of a text's compatibility | based up on | our terminology. Ednote: there are two alternatives for the | validity rules provided, reader preference is solicited. | | - Let L1 and L2 be Languages, where L2 is introduced "after" L1. | - Let T be a text. | - T is in L1 iff (T is valid per L1 | T is in L1's set of Texts). Probably the "|" is meant as a logical "OR"? If so, both sides of the OR seem equivalent to me. If the "|" is just meant to indicate alternative (equivalent) formulations, I wouldn't use "|". | - Let I1 be the information conveyed by Text T per language L1. | - Let I2 be the information conveyed by Text T per language L2. | - Text T is "fully compatible" with language L2 if and only if I1 is | compatible with I2 and (T is valid per L2 | T is in L2's set | of Texts). An axiom is missing: nowhere it says that in fact T is in L1. | - I1 is compatible with I2 if all of the information in I1 | does not replace or contradict any information in I2. Shouldn't this be the other way around? L2 is after L1, so how can information in I1 replace information in I2? It seesm a processor would have to consume T and apply L2 rules, and after that apply L1 rules for this to happen. | - Text T is incompatible if any of the information in I2 is | wrong (I.e. | replaces a value in I1 with a different one) | (T is invalid | per L2 | T is not in L2's set of Texts). Like other commenters, I find the notion of "information conveyed by a text" troubling. It seems a clear concept (texts, and sets of texts) is being grounded in a less precise one. What does it mean for information to "replace" other information? And what is "a value in I1" - what are the "values" of "information"? I a aware of the discussion in the TAG on this, and Dan's recent comments, and I appreciate the fact that this is a hard problem, but nevertheless, I find this problematic. The wording is also confusing, these three phrases are all used: - "I1 is compatible with I2 if..." - "Text T is 'fully compatible' with language L2 if... " - "L2 is 'fully backwards compatible' with L1 if ..." Is compatibility a relation between a text and a language, between two languages, between two information sets or all three? Personally I think the notion of compatibility only makes sense between a text and a language (defintion). From this derives that it makes sense to say that all texts in a set are compatible with a language, and thus statements such as "each text in the (accept|define) set of L1 is compatible with L2" make sense. I would avoid the notion of compatibility between languages and/or information. | We can also provide mathematical definitions of language | compatibility: | | - L2 is "fully backwards compatible" with L1 if every text in | L1 Accept Text set is fully compatible with L2. This can't be true. From the diagram after this it is quite clear that in the compatible case quite a few texts in L1 Accept Text are not in L2, and thus not compatible with L2. | - L2 is "strictly backwards compatible" with L1 if every text | in L1 Defined Text set is fully compatible with L2. | - L2 is "strictly backwards incompatible" with L1 if any text | in L1 Defined Text set is incompatible with L2. | - L1 is "fully forwards compatible" with L2 if every text in | L2 Accept Text set is fully compatible with L1. | - L1 is "strictly forwards compatible" with L2 if every text | in L2 Defined Text set is fully compatible with L1. | - L1 is "forwards incompatible with L2" if any text in L2 is | incompatible with L1. | - And combined together is: L1 is strictly compatible with L2 | if every text | in L2 Defined Text set is fully compatible with L1 AND if | every text in L1 Defined Text set is fully compatible with L2. (after the diagram) | We can draw a few conclusions. Given L2 is strictly backwards | incompatible with L1 if any text in L1 Defined Text set is | incompatible with L2, the only way that L2 can be backwards | compatible with L1 is if the L2 Defined Text Set is a superset | of L1 Defined Text set. Not necessarily. If the L1 Defined Text Set and L2 Defined Text Set overlap, and L1 Defined Text Set is a subset of L2 Accept Text Set, L2 still is backwards compatible with L1. ______________________ / L2 Accept Set \ | ___________________ | | / / \ \ | | | L1 | L1 | L2 | | | | De- | & | De- | | | | fined | L2 | fined | | | | Set | DS | Set | | | \________\__/_______/ | \______________________/ Now every text produced by L1 processors is acceptable to L2 consumers. A possible case is when features from L1 are removed which are deemed useless. As long as L2 still accepts all L1 texts, compatibility is retained. Cheers, Marc de Graauw www.marcdegraauw.com |
Free forum by Nabble | Edit this page |