If you’re a serious Web developer, then standards compliance is something that you’re very concerned about. That’s definitely the case for me. I consider myself a veteran of the browser wars. And, no, I’m not talking about the Internet Explorer 4 (IE4) and Netscape Navigator 4 days. Instead, I’m talking about how much of a pain it can be get a site to look nice and work well with so-called “modern browsers,” such as Internet Explorer 6 (IE6), Internet Explorer 7 (IE7), and Firefox. In fact, I frequently find myself wishing that Microsoft would just pull the plug on IE6 since it’s a nasty, crappy, buggy, older browser.
The Problem with Browsers
So, given how grumpy I am about IE6 and even IE7, it goes without saying that I have a vested interest in what IE8 is going to look like and how it implements standards. And I’m definitely not alone. The problem, however, is that Internet Explorer has painted itself into a corner when it comes to rendering Web pages. On the one hand, there are currently billions of pages that were either designed to work with (or against – however you want to phrase that) IE6’s and IE7’s buggy standards implementations. On the other hand, there will be billions more Web pages viewed by the browsers of the future, and IE is obviously going to be one of those browsers.
So, if Microsoft doesn’t fix the way that IE8 renders (i.e., to make it standards compliant), then all those billions of existing pages will still work fine. The downside is that Web developers must keep targeting different browser implementations–resulting in more work (and more cursing). However, if Microsoft wants to save Web developers the pain of targeting multiple browsers and help pave the way to the brave new Internet, they run the risk of breaking billions of pages that work fine today in the browser with the lion’s share of the browser market.
The IE8 Team’s Solution
The IE8 team recently posted their solution to this problem, which will require developers who want to target a ‘standards compatible’ rendering experience to inject new metatags into their markup (or into their headers). Without this additional injection, pages will continue to render in the buggy ‘quirks mode’ used by IE7 (which, at first blush, seems logical or a bit crazy depending upon how you’re looking at it). If you’re looking at it in terms of solving the problem of backward compatibility and future development, then it makes a lot of sense. But if you’re looking at it in terms of how the Web has ‘always’ (meaning the last few years) worked, then it’s almost heretical, because targeting markup at specific browser versions goes against some of the primary tenets of standards compliance. So, needless to say, if you check the comments for the post announcing this approach, you’re going to see some interesting, and very mixed, feedback. Likewise, the blogosphere has also become quite ‘lit-up’ with discussions for as well as against the IE8 team’s solution.
The Reality for Developers
The problem with treating this approach as heretical because it forces us to target specific versions of browsers is that, well, as Web developers, we’ve been targeting specific versions of browsers for years now. Since day one, in fact. In striving for standards compliance what we developers want is a day when we can code once and deploy everywhere. With this change we’re almost there, except for those billions of existing pages that would break instantly if IE8 just switched to rendering standards-compliant markup by default. As Aaron Gustafson points out, there’s something to be said about the prospect of holding Microsoft to ensuring that pages written today continue to work in the future. So far that’s mostly been the assumption, and hope, but (as we saw with the release of IE7) it hasn’t always been the case.
So, I for one am fine with Microsoft’s new approach. Yeah, it worries me that we’re potentially on the cusp of a DOCTYPE redux problem. But I can’t see any cleaner, or easier, way to address the problem. Plus, I’m more than happy to spam some simple metatags (or their HTTP equivalents) into my headers to get IE8, Firefox, and other browsers to render in roughly the same fashion. In fact, the only hassle is that I’ll still have to keep ensuring that my sites work in IE6 and IE7, because those nasty old browsers will be running for years to come.