Suggestions for Chris Wilson
Wednesday, January 23, 2008 7:07:17 AM
I'm nowhere near Brendan's league but here's another "Dear Chris", this time on the proposed <meta http-equiv="X-UA-Compatible" content="IE=8" /> versioning for HTML5.
First: I know you're stuck between a rock and a hard place, between thousands of web developers shouting and swearing at you for not implementing the standards better and millions of web sites that might break if you do. Moreover, knowing first-hand the problems Opera ran into when implementing WebForms 2 I don't doubt for a moment that your compatibility concerns are real.
The proposed META tag sort of shifts maintenance and backwards compatibility concerns from website authors to browser developers, which can be a good thing. However, there are problems with such wholesale version targetting:
- Browsers will have to support an unmanageable and confusing mess of different rendering modes (and the PocketIE team will hate you for the bloat).
- Because the META tag affects every part of the page, progressively enhancing such pages with new CSS features will be harder.
The way the web currently works is partial versioning: using JavaScript object detection, conditional comments (IE-only), CSS hacks or special keywords to "opt in to" specific layout or scripting properties. Can we build on and extend that? Enhance feature detection rather than opt-in hard-coded rendering mode?
Some examples of what that might look like..
-moz-box-sizing equivalents for opting in to specific interpretations of given CSS properties
if( 'borderRadius' in element.currentStyle )
@supports-multiple-backgrounds{ div.mosaic{ bacground: URL(bg1.png) top left no-repeat; bacground: URL(bg2.png) bottom right no-repeat } }
I'd like markup or CSS to express "if you support css3-column-layout, fetch that stylesheet, else use this XSL transformation to build a TABLE".. So, feature-based versioning built right into the standard itself instead of added as a META hack and an afterthought. Please consider making the opt-in mechanisms feature-based rather than rendering-engine-version-based!
How can you do it? Well, the IE team may have forgotten what it takes to play catch-up with a different UA implementation (you had some experience back in the NS4 days though) but Opera QA can remind you
. You could apply the same skills to align the new standard and the new rendering engine with the web:The web and the spec would benefit enourmously if your team sat down to do the detailed analysis work - hunting through the sites that break, figuring out the main problems, suggesting ways the still-in-progress HTML5 standard could change to make real compatibility possible. It's slow but you can make a public comittment and draw huge grassroot support from web developers. I bet you would get help doing evangelism and outreach for sites that serve you "error correcting" CSS you can't possibly work with in standars mode. You can release IE8 beta versions but delay the final until site compatibility problems are resolved..
We at Opera doing this right now, spending hours analysing IE quirks to figure out how to be compatible with the specs, the web, and the IEs. It's slow. It takes manhours and manyears. But it's what it takes to do it right..
Software is 100% detail. Quality is 100% attention to detail. And the detail called X-UA-Compatible should be replaced with something better. Thanks for your attention.









Robin_reala # Wednesday, January 23, 2008 9:33:50 AM
Hallvord R. M. Steenhallvors # Wednesday, January 23, 2008 10:29:44 AM
Feature-complete-but-buggy implementations are a fact of life, unfortunately. Feature based versioning isn't going to fix that for you, I admit that, but it may make it cleaner to opt-out of the buggy previous implementation. Much cleaner and better than CSS hacks, wouldn't you agree?
Jeroen HoekxJeroenH # Wednesday, January 23, 2008 12:27:12 PM
What about MS includes something like ua.ini, where they have a list of sites that require the old IE behaviour? Best of both worlds, no? MS solves the mess they created themselves, while everyone else can happily code to standards and even forget about opt-ins/opt-outs.
Michael A. Puls IIburnout426 # Wednesday, January 23, 2008 1:25:02 PM
I'd just throw an IE=Edge header at IE for the whole site (to always get the latest and greatest, which is what I expect), but Hixie mentions that would eventually just cause MS to create yet another method of switching.
reinaut # Wednesday, January 23, 2008 3:31:02 PM
Now MS has determined the upgrade costs for page devs too high. So the problem is stated easily:
1 every exiting page must work as it did in IE7.
2 every new page must work by IE8 rules*
* This is, pages developed by hand or by tools older than the IE8 release date.
Point 2 is needed because IE7 is broken. Point 1 is needed because browser vendors are scared for pages to break, see firechicken, which is/was a kind of feature-complete-but-buggy implementation.
Both arguments will also hold for IE8, Opera 9.5, Firefox 3, ...
How to solve the mess? No more vague specs, no more bad implementations and no more bug-dependent sites. This is all very unlikely to happen. The truth is the only real (and badly documented) reference for authors are the browsers themselves. That's why the choice for browser targetting may not be so bad, for browsers with enough market share.
The problem for Opera: almost no page will include an Opera target, and the sites will not be updated for new browser versions, because it isn't necessary. This means Opera would have to spend hours analysing IE quirks.
I am an Opera user, and I believe is Firefox is not on the right track, and the current IE is broken. However, at the moment I believe the browser targeting is the best option to move forward.
Extra: feature based css won't work, because, if it existed a lot of years ago, IE6 would claim to support the css 2 box model and new switches would have to be invented for the firefox box model (firefox 2 + acid2, anyone) and then opera would need yet another switch, leading to browser sniffing like it occured (and still occurs) in javascript.
On that account, edge should be removed. Even CSS 2.1 might still change a little and therefor no current browser can be a definitive implementation and no author can code to the spec and be certain his/her page is edge. They will test it (probably in firefox) and conclude it is edge. Edge is _impossible_. You are predicting the future when you use it. You will need to change your page in the future and you will test it in some of the future browsers. It isn't much of an effort to update the numbers.
In the end we should ask ourselves: how can we make web time a reality again, without ever breaking older pages.
JoeGoJoeGo # Wednesday, January 23, 2008 6:18:14 PM
Nope, not just for Opera. For everyone else. Especially mobile browsers.
http://weblogs.mozillazine.org/roc/archives/2008/01/post_2.html
http://webkit.org/blog/155/versioning-compatibility-and-standards/
Probably Can't be done. It might be painful, but it's necessary.
Ice ArdorIceArdor # Wednesday, January 23, 2008 11:51:27 PM
reinaut # Thursday, January 24, 2008 2:34:24 PM
But then we have to force them to use an open technology for their downgrading.
Is it possible? A bad idea?