There’s been a lot of buzz lately about the decision by Microsoft to include a custom meta tag to trigger IE8 in its new (and good) rendering mode. After having read quite a lot on the subject I must say I’m totally pro this announcement.
Update 2008.03.05: This info is now outdated, as the IE Team have reverted their decision to enforce the usage of the IE8 meta tag
As you might have read IE8 will – qua rendering – behave like IE7 by default, unless you specify a meta tag to trigger the new rendering mode (which I’ll be calling IE8 Mode from now on). But first, let me tell you a little story.
In order to move forward, we must go back first
When looking back at IE7, it should be noted that it has the same behavior as IE6 when it comes to treating doctypes: either go into standards mode (IE7 Mode in the case of IE7; IE6 would go into IE6 Mode) or go into Quirks Mode (IE 5.5 Mode). The differences between IE7 Mode and IE6 Mode were immense: lots and lots of stuff is rendered better/differently in IE7 when compared to IE6.
When IE7 finally was released and installed on computers lots of people found that their (favorite) website was broken in IE7 due to those changes. Lots of (old) websites had to be fixed and those that didn’t get fixed remained broken. Although Microsoft had released a better product, they had broken the web with IE7 and IE7 got a bad name.
It even got that far that not only web developers gave IE7 a bad name, but also the normal users (think of your mom, your dad, regular Joe from around the block, …) gave it a bad name as it couldn’t render a huge percentage of websites while IE6 could.
All hail the meta-tag!
Now, let’s go back to the present and take a peek at how things would go when IE8 gets released with the proposed meta-tag trigger:
Websites built the last year and half are bound to work in both IEs within the heap of A-Grade Browsers (if not, then this tells quite a lot about the firm who made it). When Microsoft releases IE8 all those websites will work just fine as they are already optimized for IE7 and IE6 and due to the fact that IE8 behaves just like IE7.
This is what Microsoft aims at with the “Don’t break the web” statement: keep the existing customers happy; and the new customers of the new product too.
Newly developed websites will pass the same flow as they now do:
- Develop and live test your site in Firefox/Safari
- Pass in the
X-UA-Compatiblemeta tag and IE8 renders it correct too (and maybe include 1 or 2 tiny fixes through a conditional)
- Start fixing for IE7 and IE6 (conditionals!) like you’re used to today (most of the time it’s the same stuff you keep on fixing: png images, the clearfix class, some display: inline-blocks and that’s about it)
- Check the other browsers
The other scenario?
Remember that IE6/IE7 story I told you? Given that, let us turn things around: Let’s imagine the IE team decided to let IE8 go in IE8 Mode by default. What would the result of that action be?
It’s quite simple: it would be an IE7-alike scenario all over again: lots of websites would Just Break (TM), lots of web firms would be called in panic in order to fix the site, and – in the end – IE8 would get a bad name just like IE7 has.
Same scenario as with the meta-tag, except you don’t have to include it.
Your point being?
With the 2 scenarios above, it should be more than clear that the decision to trigger IE8 in IE8 Mode by use a meta tag is the best method they could have thought of. I agree, it’s not the most perfect solution we all dreamt of (and it requires a bit of an effort from us developers) yet it is the best possible solution out there which pleases both users and and developers.
Next to being real solid, the method is future-proof too as you can define
IE=edge in the meta tag which tells IE8 to render in IE8 Mode; IE9 in IE9 mode, etc. etc.
Yes, there had to a however. This will only work if 2 prerequisites are met:
- Whenever IE9 gets released it must backdrop to IE7 Mode when no tag is included, not IE8 Mode; (alternative: IE9 must be pushed as a mandatory update over IE8 to smoke out IE8.). By the time IE9 gets released, IE6 will be gone for good; leaving us back to the scenario as it has been for quite a while: develop for Firefox, Safari, Opera and two IE versions (IE9 and IE7 it’ll be then)
- Microsoft must provide us a nicer way to run IE8, IE7 and IE6 side by side. That hassling with those Virtual Machines is not that handy; and IE6 Standalone doesn’t always render like a Native IE6 does (next to the fact that it isn’t official). Maybe they should provide some Software Virtualization?