RE: Versioning and HTML -- version indicators

Larry, this is a good analysis, I think.  A few details I'd quibble with, 
but overall it's very helpful.  I would be curious for your comments on 
the TAG blog entry I wrote awhile back. [1]

In particular, I still tend to believe that:

"If the same document means different things in different versions of a 
language, then it's very important to indicate which version the author 
had in mind when creating the document. Putting that version indicator 
into the document itself is one good way to do it."

I also believe the converse:

"If a given document never has more than one possible meaning when 
interpreted per all versions of a language specification (though it may be 
illegal per some of them), then neither in band nor out of band version 
indicators are strictly needed."

The phrase "all versions of a specification" is shorthand:  in general, a 
receiver knows either a priori or from an explict indicator like a mime 
type >something< about which specifications might apply to interpreting a 
document, but we're concerned with the case where the receiver is unsure 
which of several versions of the specification the sender might have used. 
 Indeed, the receiver may or may not know about all of the versions of the 
specification that are in use by senders.  If the document has at most one 
legal meaning per any of the specifications the sender >might< have used, 
then no version indicator is needed for correct interpretation.  A 
receiver will either interpret the document correctly, or decide that it 
cannot decode it.  Having an in or out of band version identifier would 
not cause it to behave any differently, except perhaps to provide clearer 
diagnostics.

Even if one continues to try to use explicit indicators, I think the blog 
entry raises some intersting questions as to what the value of a version 
indicator should be in cases where a given document can in fact be 
interpreted properly per several versions of the specification (e.g. the 
recipe example).  Until that's clarified, I think it's hard to advocate 
for explicit indicators.

I would actually propose that, with respect to explicit version indicators 
in particular, we take the points in the blog entry as a starting point, 
and either publicize them, elaborate them, or where necessary correct 
them.  To me, they look right as far as they go.

Noah

[1] http://www.w3.org/QA/2007/12/version_identifiers_reconsider.html

--------------------------------------
Noah Mendelsohn 
IBM Corporation
One Rogers Street
Cambridge, MA 02142
1-617-693-4036
--------------------------------------








Larry Masinter <masinter@adobe.com>
Sent by: www-tag-request@w3.org
04/28/2009 08:48 AM
 
        To:     "www-tag@w3.org WG" <www-tag@w3.org>
        cc:     (bcc: Noah Mendelsohn/Cambridge/IBM)
        Subject:        RE: Versioning and HTML -- version indicators


Version indicators

Version indicators can either be out-of-band (not within the content,
but associated with the content, such as with using file extensions,
MIME types or other indicators) or in-band (contained in the content),
or some combination (out-of-band information overriding in-band or
vice versa, or combined in some other more complex way.)

In-content version indicators can either be global (readily determined
by reviewing the content in a fixed location or within the head
1k bytes of the file, for example) or local.

Languages can change through augmentation (adding new keywords,
features, procedures, available combinations) restriction 
(previous options are deprecated, removed, disallowed),
clarification (previously  ambiguous features clarified) or
changed incompatibly in some or all circumstance.

Augmentations increase the set of strings that are valid
or meaningful or useful instances in the language, restrictions
decrease the set. Clarifications generally leave the set
alone, while incompatible changes may or may not modify
the set.

Whether language changes can be recognized without version
indicators depends on the type of change:

Some augmentations might be recognized by appearance
of syntax that wasn't previously recognized (i.e., the
"version indictor" is the use of the feature itself).

Augmentations might be ignored or merely processed incorrectly
by old implementations rather than being recognized as
intended with a formerly unimplemented interpretation.

Restrictions, clarifications, incompatible changes cannot
readily be determined by scanning, though. 

Even though it is possible to avoid having out-of-band
or global-scope version indicators for augmentations, 
this does not mean that there are no advantages or uses
for in-band global indicators.

If there are multiple languages (whether Algol 60 vs Algol 68
or just multiple "modes", having a global-scope in-band
version indicator allows for switching between one interpreter
and another. Indicating the version in-band but requiring
parsing of the content means that it isn't possible to
evolve syntax or parsers.

Larry
-- 
http://larry.masinter.net

Received on Friday, 15 May 2009 23:48:46 UTC