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 Tuesday, 28 April 2009 12:52:35 UTC