the meta freeze

I wish I'd been there. The evening of January 20, the evening before the bomb was dropped in the new ALA edition. The tension must've been unbearable.

If you've been following the world of web standards a bit, you already know what I'm talking about. If you haven't, here's the link to the article that started it all, published together with a first reaction to the article by Eric Meyer.

IE freezing sites

In short, after breaking too many sites with IE7, the IE team approached some standardistas and asked them how they could avoid the same trouble with IE8. They came up with a new meta tag, which contains the browser version the site was built for. The trick is that newer browser versions will still render documents according to the specs of the referenced browser version in the meta tag. So basically, we're freezing web documents into a specific rendering mode of a browser version. Shock!

The syntax for this trigger is quite simple:

<meta http-equiv="X-UA-Compatible" content="IE=8" />

Mind that this solution is currently only "pre-supported" by IE. Safari reacted rather negatively towards the proposition, other browsers have remained mostly silent (correct me if I'm wrong). Still, that base is covered as the tag can easily be expanded to contain several versions of different browsers. No worries there.

the good

* Of course this is the ideal solution for the IE team, giving us a tool to make sure that once our documents render in a specific version, the documents won't break ever again until the end of times. No more worries about newer browser versions that might break all our older documents. And once we upgrade our documents to work with a newer version, we just change the meta tag and all's well again.

* No more conditional comments referring to five different versions of a single browser. Just one file to fix the bugs in one specific browser version. This will make it a lot easier to maintain support for a single browser.

* Documents with no meta tag specified will fall back to a default rendering. Currently the default rendering is proposed as IE7's rendering, a solution that has started quite some discussion. If you want to have your document rendered in the actual version of the browser, you need to use the special "edge" keyword. This does give us the possibility to check the rendering in all previous browser version in the latest version of a browser. So no more multiple IEs for us. Furthermore, we have complete control over the rendering of a document.

the bad

* If you don't have the meta tag set, the default rendering will revert to IE7 rendering. Now I do understand the reasoning behind this decision, but this means that additions to newer browser versions won't work unless the meta tag is specified. Can you imagine the hordes of unsavvy web developers wondering why their code isn't working properly in the newest version of IE, even though it is supported. It would be nice to have a central place which explains the problem they're facing. Otherwise, each web development forum out there can already start by preparing a sticky thread.

* Somehow newer versions of IE will still need to contain the correct rendering of earlier versions, which might bloat IE to unacceptable proportions. I can't imagine a browser that's 500MB in disk space. The alternative is to work with a separate set of rendering rules, but those can be buggy too, making things really confusing. No good.

* People that have a browser version below the stated version in the meta tag might be royally screwed, as web developers will invest little to no time in optimizing their documents for versions that are below the version stated in the meta tag. This could also become a pro, if it makes them update their browser quicker, but this is hardly assured.

* If other browser vendors don't follow, this will be another IE specific hack, giving standardistas more fuel to bash IE. Bleh to that.

my verdict

Well, I have mixed feeling about the proposal, but as a whole it's something I could easily live with. The idealist in me tells me IE should just screw unsavvy web developers into learning their trade, but sadly that's not very realistic. And we should acknowledge that. The internet is more than web developers building lean, mean and slick websites.

But as a few others have pointed out before me, there's a bigger goal to achieve here. The meta switch makes it possible for IE to fully devote itself to web standards. They've always been held back by their "don't break the web" ideology (which is perfectly understandable), the meta tag makes sure they can fully devote themselves to web standards without breaking the web with their newer versions. I think they deserve that chance.

Considering the influence of IE on the web, I think the meta tag is probably a good thing, although it's certainly not a perfect solution. Of course, there is no perfect solution to the mess IE6 left behind, so let's work with what we've got. Web standards might be holy, but there's no larger place that is as god-ridden as the internet.