W3C home > Mailing lists > Public > public-html@w3.org > April 2007

RE: Versioning and html[5]

From: Ian Hickson <ian@hixie.ch>
Date: Fri, 13 Apr 2007 22:44:41 +0000 (UTC)
To: Chris Wilson <Chris.Wilson@microsoft.com>
Cc: "public-html@w3.org" <public-html@w3.org>
Message-ID: <Pine.LNX.4.62.0704132220420.22769@dhalsim.dreamhost.com>

On Fri, 13 Apr 2007, Chris Wilson wrote:
> > 
> > The current spec is not finished, correct. I would hope that when it 
> > is finished it is strictly compatible with legacy content that works 
> > in IE7 (as a superset in some areas and probably a subset in others -- 
> > e.g. I would't plan on describing HTML+Time or the binary-level APIs 
> > of ActiveX, and at the same time, we do plan on adding new features).
> OK.  If you don't describe HTML+TIME, then you're not strictly 
> compatible with what IE7 supports today.

By "compatible" I don't mean "an exact description of". And I'm not 
interested in being compatible with IE7, I'm interested in being 
compatible with the content that assumes IE7. There's a big difference. 
For example, there are only some 30 sites on the Web that use <t:video> 
[1], and most of those are sample pages, so other browsers don't have to 
support <t:video>; interoperability isn't required for <t:video>. Thus the 
spec doesn't have to define how it works. (I'm not saying you should drop 
support for it, or that the spec should disallow you to support it.)

The spec I'm saying we need (and that the WHATWG has been working towards, 
though the work is far from complete) would not cover *everything* IE7 
does, and it would cover things that IE7 *doesn't* do, but for what it 
*does* cover, it would be specified in such a way that if implemented 
exactly as specced, legacy content would be handled as expected by the 
original author.

[1] Based on a study of several billion pages covering millions of sites, 
done in March 2007.

> > You misunderstand. I mean, if you implement the spec without 
> > versioning and find something breaks the Web, then we should change 
> > the spec. To know when something breaks the Web, you have to tell us. 
> > To tell us, you have to know. To know, you have to implement it 
> > without versioning. Then, *before* you ship with that change, we fix 
> > the spec and you fix the implementation so that the spec and the 
> > implementation are both compatible with legacy content. Thus, you can 
> > implement the spec, without versioning, and not break any legacy 
> > content.
> We cannot "fix the implementation" after we've shipped it once.

Please reread the paragraph I wrote. I clearly stated that these would be 
changes *before* shipping.

On Fri, 13 Apr 2007, Chris Wilson wrote:
> >>
> >> versioning will still tell you that your browser isn't new enough to
> >> handle, say, that 3d canvas element that gets added in html6.
> >
> > I don't understand this. Could you elaborate with an example?
> We're running on the presumption that everyone will always have the 
> latest browser.  That's not true.  It would be useful for IE to be able 
> to identify, for example, that we are unlikely to be able to handle 
> canvas content.

I don't understand your example. Wouldn't it be better to simply have the 
browser do graceful fallback? (That's how <canvas> is designed to work.)

What do you expect the user experience to be for what you describe?

> Hmm.  No, I'm saying ("we" means Microsoft in this list):
> 1) for compatibility reasons, we will have to freeze bugs in place in 
> default behavior.
> 2) because I want to move the implemented platform forward, of course we 
> will fix bugs and add features - but they will have to be under an 
> opt-in switch.

I understand this so far. I don't think it's the right thing to do, but 
that's not the point. I understand that you think it is right and why you 
think it is right.

> 3) Whenever a new HTML version is "shipped," we can automatically say 
> for that version, we'll mask out all our old crappy behavior (that you 
> used to have to put an opt-in in every document to avoid).

I don't understand why you think steps 1 and 2 have any bearing on the 
version of the HTML spec. Imagine if we weren't doing HTML5 -- surely 
you'd still have to do versionning, right? Are you suggesting that in the 
entire time before HTML5 is finished (at least a decade or more -- 
consider that HTML4 still hasn't reached the level of interoperability 
that we are aiming for with HTML5, so we know that it will take at least a 
decade), you will only freeze bugs once?

Surely you cannot promise that.

What would you do if you need a new opt-in switch before HTML6 is started?

> >If you want the W3C spec to have a version switch, then the spec must 
> >define how browsers must act *in all the versions that the switch 
> >supports*. That means that if you want a switch (or the lack of a 
> >switch) to imply that IE7 behaviour must happen, *we absolutely must 
> >specify exactly what IE7 does* so that other browsers can implement it 
> >too.
> That sounds like you want to be on the "suggest features to IE and then 
> document what they implement path," then.

We're currently on a path of "spec feature, get implementation experience, 
fix spec to match implementation experience, iterate", which as far as I 
can tell is the same thing (though not necessarily only with IE).

Yes, I am suggesting that.

> >Maybe it would help, however, if instead of assuming that compliance to 
> >HTML5 will mean broken pages, we worked on the assumption that 
> >implementing HTML5 correctly will mean all pages work. That's what the 
> >other browser vendors want, it's what the WHATWG set out to do three 
> >years ago and has been doing ever since, it's what authors want.
> You could start, then, by not ripping out the pieces we rely on, like 
> classid and codebase.

This is a fallacy, as discussed here:


> "All pages" include pages that exist today that are designed for IE, and 
> explicitly, to us, it includes pages that rely on IE-isms like ActiveX, 
> scrollbar-color, and HTML+TIME (which is a profile of SMIL, BTW, it's 
> not some random proprietary thing we invented).

Pages that use a *superset* of the features defined in the spec are not a 
problem, since the spec isn't incompatible with them, it just doesn't 
describe how to handle them.

> >Where HTML5 does break pages, we need to fix the spec. If this means 
> >getElementById() changes to look for 'name' attributes, sobeit.
> I think that's a mistake, but okay.

You think it's a mistake to make the spec be such that implementing the 
spec is all that is needed to handle existing content?

That is, you think that browsers actually *should* have to implement 
something that is incompatible with the spec in order to render legacy 

If this is really what you think, what do you think the point of the spec 
is? Just a guide or influence?

> >Sometimes it may be that IE's behaviour *can* change because few enough 
> >pages depend on some edge case that it's ok to change it.
> I'm saying the default answer to that question is no.  We have a 
> different set of constraints.

I agree that the default answer should be "no".

> I'm happy to have competition in the browser space.

You are proposing a path that will lead to it being nearly impossible to 
compete in this space, very similar to the path that has led to it being 
nearly impossible to compete in the word processing space.

> If you want to do this, I'm happy to provide resources to help you 
> investigate why IE does anything that it does, so that you can write a 
> spec that matches precisely that.


> I'm not really convinced that's the best basis for an HTML specification 
> that will stand the test of time - it seems like you're working toward a 
> world where instead of just swearing at IE's wackiness, web developers 
> will swear at the wackiness of the spec and everyone's implementation.

Authors want consistency across implementations more than they want an 
ideal spec that isn't implemented anywhere.

If you need versionning, then I would request that you use a versionning 
flag that isn't part of the language. You could have an attribute such as 
has been proposed:

   <html tested-on="2008-02-10">

...which gives the date that the content was written on, with the 
assumption it was written to the latest browsers. Then your browser would 
look at the date, and see which range it fell in relative to when your 
rendering engine bugs were frozen. So for instance if IE8 was frozen on
2007-11-20, and IE9 in 2008-05-05, then IE10, looking at the markup above, 
would know to use the IE8 rendering engine for this content. This would 
allow other browsers to do this as well if they wanted.

I still think it's a horrifically bad idea, though.

Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'
Received on Friday, 13 April 2007 22:44:50 UTC

This archive was generated by hypermail 2.3.1 : Thursday, 29 October 2015 10:15:18 UTC