Best viewed in X-UA-Compatible

Note: This post is quite a bit more technical than what I usually talk about.

Yesterday saw the release of A List Apart #251 which is causing quite a bit of discussion. It focuses on a proposal put forth my Microsoft and some members of the Web Standards Project for a new meta tag than will control the rendering mode of IE8.

The first article (Beyond DOCTYPE: Web Standards, Forward Compatibility, and IE8) covers the proposal, what it means and why it’s needed. The second (From Switches to Targets: A Standardista’s Journey) documents Eric Meyer’s shift in perspective from being opposed to, well, not opposed.

My initial thought is that it’s a horrible idea. After reading more about it, and seeing the arguments in favor I think it’s a bad idea.

How we got Here

In the bad old days, when your HTML was broken, your page was broken. Then came the browser war, during which Netscape and Microsoft added features in an effort to compete for market share. One of casualties of this war was the need to actually produce valid markup. For years now IE has done a great job at “guessing” what the page designer meant to do, and doing that instead of what the code actually said. More sites, even badly broken sites, rendered perfectly in IE. This leads to end users thinking IE is a better browser, which leads to more people making pages only targeted to IE.

The problem comes when the page designer wants the browser to do exactly what he asked it to do. How is the browser supposed to know if it should be guessing (quirks mode), or following the rules (standards mode)? Enter DOCTYPE switching, the ability for a page designer to say “Hey browser, follow the standard. On my head be it if the code is bad.” The problem is that IE (historically), even in standards mode, really didn’t adhere to the standard very well.

If you were to design a page in standards mode using IE6, you would probably find that a lot of things don’t work as expected (perhaps doing nothing at all), and you’d work around them. Load the page in another browser which has better standards support and you may see something very very different. Since IE6 reigned supreme for so long, it’s broken rendering engine became a defacto standard. One that has the side effect of vendor lock in. Sites written for IE6 only will most likely only run in IE6.

When another browser comes along and renders the page the way the code actually states it should the page falls down. The most common reaction to this issue: That browser is broken. Use IE.

Enter IE7

IE7, once considered a mythical creature of legend, is now readily available. IE7’s standards mode is a vast improvement over that of IE6. That’s a problem. A page that was technically broken, but requested standards mode might render fine in IE6 (if it was designed for it, it probably does). IE7 on the other hand follows more of those rules, so it’s standards mode rendering is likely to resemble that of other browsers (although it still has a ways to go). If your page was in quirks mode, then it’s a non-issue, because IE7 quirks mode is essentially that of IE6.

Intranets all over the world cry out in despair.

See, large corporations don’t care the technical reason why their pages now look as broken as they always were, they just want them to work the way they did in IE6.

Don’t Break the Web

So here is where things stand. IE8’s standards mode has made impressive improvements over that of IE7. This means to be sure they “don’t break the web” Microsoft can’t easily roll it out. The solution proposed is that IE8 quirks mode is the same as IE6, IE8 standards mode is the same as IE7. On top of that, using a <meta> tag you can ask IE8 to render in IE6 standards mode or IE8 standards mode explicitly.

There seems to be some hope on Microsoft’s part that other browsers will do the same. So Firefox 3 will have a Firefox 2 rendering mode. There are numerous problems with this, not the least of which being the effort required by the browser developers to intentionally preserve rendering bugs now and forever. So far this seems some developers for Firefox (Robert O’Callahan), Opera (Anne van Kesteren), and Safari/WebKit (Maciej Stachowiak) are opposed.

I also think Microsoft fails to take into account that I can always install as many different versions of Firefox as I’d like and run them in parallel. The limitation they are working around is a bit of an IE exclusive.

Haven’t we Been Here Before?

This <meta> tag suggestion sounds a bit familiar. As someone who has never used IE as my primary browser I’m used to seeing messages like

This site is best viewed in IE5.5

or worse

Your browser is not supported. Please download Internet Explorer.

I’m not seeing a whole lot of difference here, other than that designers can now tell the browser itself, and if the browser can oblige it will. But isn’t this just a brand new vendor lock in? No matter how it’s intended to be used, this will be abused.

If I insert a meta tag saying my page should render using the IE6 rendering engine, what should another browser do? If it’s on a windows platform, perhaps it could oblige by silently rendering the page in IE, while still looking like the current browser. Why not? It’s possible to do. And if it doesn’t do that, well that browser is not complying with the designer’s wishes. That browser is broken. Use IE.

Not a Conclusion

While my gut says this whole idea is just plain wrong, my head can see how we got here. The IE team seems to be making a valiant effort to actually meet standards, but they are obviously hindered by the fact that they won’t release a browser that changes any existing rendering by default. The web is set in stone as of right now. At least that’s the implicit promise. That IE27 will be able to render using the engine from IE6-IE27 on demand.

But there’s more to this. As John Resig points out. How does it effect Javascript, sites that aggregate content, iframe, embed, etc. For these things to work well together there would have to be standards (and they would have to mean the same thing on more than one page). Never mind that more and more people are experiencing the web outside the context of their PC.

If I ran the zoo Microsoft would enable support for running multiple installs of IE and announce an “end of support life” date for IEprevious when IEnext is realeased with a reasonable window. Intranets that depend on IE6 to work could keep using it forever with the understanding that after a certain date there would be no updates for IE6.

In the end I expect that Microsoft will do whatever it wants. There are enough smart people looking this that no matter what happens those who care will learn to jump through any new hoops this created and support IE and everything else. Those who don’t will stick ugly “Best viewed in” images on their pages and ugly meta tags in their headers.