Re: Versioning re-visited (was : mixed signals on "Writing HTML documents", tutorial, etc.)

On Thu, 21 Jun 2007, Philip & Le Khanh wrote:
> 
> If we have the humility to accept that, no matter what we agree, 
> hindsight will allow those who come after us to make improvements, then 
> it is vital that documents created based on /our/ work identify 
> themselves as such.  If they do not, and simply claim to be "HTML", then 
> at some point in the future a document that is today "Valid HTML" will 
> cease to be valid and/or its semantics will change because the 
> specification has changed (something added, something removed, something 
> altered). [...]
>
> [...] documents starting
> 
> 	<!DOCTYPE HTML>
> 
> will be easily identifiable as HTML 5 and treated as such.

The above, I believe, highlights the key misunderstanding here which is 
probably the source of our disagreement.

Assume that we have two versions of HTML, let's say "HTML 8" and "HTML 9".

Assume that in HTML 8, we introduce an element, say <credit>, which has a 
particular meaning, let's say it means "amount of money". So for example, 
an HTML8 document could say:

   <credit>4.5</credit>

...and it would represent 4.5 credits.

Now assume that in HTML 9, we change the meaning of <credit> such that it 
actually means "ID of author who wrote this part of the document". So an 
HTML9 document could say:

   <credit>4.5</credit>

...and it would mean that the user with ID "4.5" was the author of the 
document in question.

Now, you posit that if the HTML8 document contains version information 
labelling it as an HTML8 document, and the HTML9 document contains version 
information labelling it as an HTML9 document, that user agents that are 
aware of both would correctly treat both documents. Right?

If so, then you are in fact proposing versioned *implementations*, as well 
as versioning in the spec. Versioned implementations have never existed up 
to this point in HTML -- all HTML user agents today handle all existing 
HTML content (regardless of version) using the same rules. Versioned 
implementations would mean that you could not just take a random document 
and add a feature from a new HTML version, because it might not work -- in 
fact, they make it impossible to use a feature from HTML8 and a feature 
from HTML9 at the same time if the two features are both defined 
differently in the two language versions.

Versioned implementations also increases the implementationa and testing 
cost of writing a Web browser, which reduces the likelihood that a browser 
will be fully compliant. Given how hard it is to get browsers to be 
compliant in the first place, we want to reduce any barrier to that goal.

A significantly simpler and more scalable approach to language design is 
to never break earlier assumptions, or to only break them in ways that 
only improve the handling of existing documents. This is, in fact, one of 
the most basic design principles that has been used to design HTML5 so 
far. With such a design methodology, you don't need version information.

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'

Received on Thursday, 21 June 2007 22:24:58 UTC