the meta freeze/IE drops the bomb (again)

January 24, 2008 / 13:02

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.

blog archive

All my articles are neatly filed inside the archive. Search and filter your way to the article you like:

contact me

If you want to leave me a quick message or you have any questions, drop me a note.

Comment author
8 comments in total
Jeroen
January 24, 2008 13:55

One solutions to "the mess IE6 left behind" might be this

We'll see in March how much of its mess Microsoft cleaned up.

January 25, 2008 13:30

You forgot in 'the bad' that developers might just add a meta with IE=6 to their sites thus slowing the adoption of web standards and progress to a very slow crawl

January 25, 2008 14:42

developers might just add a meta with IE=6 to their sites thus slowing the adoption of web standards and progress to a very slow crawl

I don't really see how this should happen. Of course, there will be developers out there who'd rather stick to their methods (compare it to the table-div switch), but other standards aware developers will only add the IE=6 meta to pages that are not worth upgrading (of which there are plenty I asume).

As for the people who don't care at all about web standards, it's probably even safer if they add the IE=6 tag, so at least their pages won't break in the future.

Web standards will be adopted by professionals only, and those people will actually benefit by coding according to standards. For them, adding an IE=6 meta to new documents is only a bother. But to non-professionals (who are a very important part of the web), standards don't matter. What matters is that their pages (often valuable) still show nicely in all browsers, even when newer versions arise.

January 29, 2008 13:05

meta http-equiv="X-UA-Compatible" content="yyyy-mm-dd"

This would be much more sensible. Browsers releases are inseparable from time and thus versioning would be calculated by the browser. Other and yet to be created browsers would not suffer from being left out of the abbreviation listing required in the current proposal. And the developer only needs to know the date for this to successfully work.

(And even better would be to not make use of it at all)

January 29, 2008 13:33

Rimantas: thanks for the links!

meta http-equiv="X-UA-Compatible" content="yyyy-mm-dd"

Dave: well, using the release date of browser versions poses some problems. With the current suggestion, you can easily develop a site for IE6 even after IE7 was released. With your suggestion, this is still possible, but the developer has to start a quest for browser release dates.

You seem to assume that everyone is always developing for the most current browser version. While this would be the ideal situation, I think it's hardly realistic. Setting dates far in the past to match the browser version you're developing for seems rather farfetched.

Nathan Rutman
January 29, 2008 16:32

Here's the huge question...how does this let you tackle any more than 1-2 versions of the browser? At least with conditional comments, you can give a standards-compliant page, add fix-ups for IE7, add fix-ups for IE6, AND add fix-ups for anything less than IE6. How in the world do you get that kind of control through meta versioning....you don't. You either get an "standards" IE8 rendering, or a guess at whatever the opposite of that is for IE8, 7, 6, etc. You can't specifically target these older browsers. This is a 1-generation fix.

January 29, 2008 16:47

It's something that puzzled me at first, too. But then again, the meta tag does not replace the conditional comment system. So you can still use conditional comments to target other browser versions, only now you can decide which rendering engine to use when rendering a page.

For example, when you put IE8 in the meta tag, you can still add conditional comments to fix IE7 and IE6. IE6 and IE7 users will still get a perfect site out of it, as their browsers don't even recognize the meta tag and will simply render the site with the conditional css applied to it. The upside of the meta tag is that newer browser versions won't be able to break pages anymore, as they will always render the page with the intended browser engine.

I agree that it's quite confusing, but it seems they thought of most things when coming up with the "fix".

* required fields

Leave your data
Leave a comment