IE handled these modes like most of the other browsers. There was “quirks” mode, which is invoked if no doctype is set (or a deprecated doctype), and “standards” mode if you used an appropriate doctype. Safari and Firefox work the same way. This gives a bit of flexibility to those who may have some older site with nonstandard or old spec code, and still follows general web standards for new code like you would expect.

Microsoft however decided to change things again in IE8. One would think the new and better standards that came about through the Acid 2 test would work in “standards” mode in IE8 given they follow the standard. But that is not the case. If you use “standards” mode in IE8, the browser will instead render the page like IE7 did, you will not get the new up to date standards fixes. And “quirks” mode will still render in IE8 like IE6 did.

Instead, to get the “super standards” mode, web developers will need to add a special meta tag to their sites to tell IE8 to render it in the new mode. This is just short sighted. It’s a band aid fix us web devs will have to live with for another 5 to 10 years.

The biggest problem here is the fact that standards compliance means “opt in”. Standards compliance should be determined by the doctype of the page, like the standards say, not some random meta tag. Microsoft’s comeback is that adding in standards means many pages build specifically for IE6 or 7 will break, and expecting everyone to rewrite their entire websites to standards compliance is not feasible.

Which is why I want to know why standards compliance can’t be an “opt out”? The meta tag idea is fine, but it should be the fix for the old, out of date, non-standard content, not new content. Microsoft can (and should) save companies the time and effort in having to rewrite all their sites, but that saving should come at the cost of adding a simple meta tag in the header of your old pages.

If you look at Microsoft’s OS’s they do similar things. XP broke some of the Windows 2000 programs because the API changed. Same thing happened in Vista. Microsoft rightly gave developers notice of these changes and gave them time to implement fixes for compatibility, so that when the new OS came out, the old programs could already be updated to run on the new OS. I’m not sure why a browser should be any different. Give legacy site devs the meta tag to add now, so that when IE8 comes out it “just works” like it used to. But leave the standards compliance the way it should be, the way the spec says.

This also has the added benefit of allowing legacy code and this fix to die off faster. If meta tags are only put into old code, as those sites are replaced, we can get rid of this “fix” much quicker. Making developers put it into new code just means we have to deal with this for that much longer, which is a pain.

I’m happy that Microsoft has finally decided to embrace web standards for a change. But in their quest for legacy support, their decision to slap an ugly band aid onto future code is a bad one. And it opens a slippery slope for future versions of IE that I’m not looking forward to, and that is unfortunate.