Note: Two weeks after this article appeared in A List Apart, Microsoft reversed their position on the default behaviour for version targeting in Internet Explorer.
Proprietary innovations by browser vendors are nothing new. Internet Explorer alone has given us XMLHttpRequest
, innerHTML
, and colored scrollbars. In each instance, we were free to use or ignore these non-standard extensions. Now Internet Explorer is introducing a new proprietary technology in the shape of version targeting. But this time, the only way to opt out of using the technology is, perversely, to use it.
Ball of confusion
When I first read about version targeting here in the hallowed pages of A List Apart, one point confused me. At the end of Eric’s heartfelt article detailing his reaction to the proposal, the final section seemed to suggest that IE8 would, by default, behave identically to IE7. That can’t be right,
I thought. Surely I was misreading Eric’s words. To clarify the situation, I asked Chris Wilson what would happen if IE8 were to encounter a valid, well-formed document with a strict DOCTYPE
. My worst fears were realized when he confirmed that the browser would behave exactly as if it were its predecessor.
This is gobsmackingly audacious. Imagine a new version of Word that behaves exactly like the old version of Word unless the document it is processing contains a hidden instruction to unlock any new features. That’s what Microsoft is demanding that web developers implement. Unless you explicitly say otherwise, IE8 (and IE9 and IE10, ad infinitum) will behave exactly like IE7.
My incredulity couldn’t be assuaged by the obvious explanations for this behavior—that Microsoft was being stupid or “evil.” The Internet Explorer team is made up of good standards-savvy developers. They must have a good reason for proposing a solution which, on the face of it, appears so crazy.
Destroying the web to save it
Microsoft’s proposal was triggered by a traumatic event: the upgrade from IE6 to IE7. Internet Explorer 6 languished in the doldrums of non-development for many years. Eventually, spurred on by the encroaching market share of rival browsers, Microsoft released Internet Explorer 7 sporting far better CSS support than the previous version.
Because IE6 stagnated for so many years and because it remained the market leader, a whole generation of websites had emerged that were coded to the quirky but predictable vagaries of that browser. These websites appeared to “work.” That is, they looked fine in the most popular browser on the market. But when IE7 was released, these websites were inevitably rendered differently. IE7, with its improved support for Web Standards, rendered these sites in much the same way as any other standards-compliant browser. Despite a concerted campaign to encourage developers to use conditional comments instead of browser-specific hacks, Microsoft received a barrage of complaints from website owners upset at the way that IE7 had changed the game. This is what the Internet Explorer team are referring to when they talk about “breaking the web.”
That’s a loaded phrase that doesn’t stand up to closer scrutiny. Firstly, what’s at issue here is not “the web” but “some websites”. Secondly, rather than “breaking”, it’s more accurate to say “displaying differently.” Finally, it’s important to remember that we are talking about how websites are displayed in one browser: when the IE team talk of “breaking the web,” what they really mean is that their browser will display documents in much the same way as other modern browsers do. Would that really be such a bad thing?
Won’t somebody think of the children?
On the face of it, being the market leader is something to aspire to. But think of how much responsibility that entails. Would you really want to innovate and push the boundaries when even the smallest changes could cause disruption for thousands of your customers? This is exactly the kind of paralysis that Microsoft is trying to break out of. The version targeting proposal is a good solution to this deadlock. With the addition of one meta
element, websites can specify exactly how they should be rendered (in one browser).
Furthermore, had Microsoft implemented the X-UA-compatible
instruction in IE7, they could have saved themselves a whole mess of trouble. Instead of requiring developers to revisit their style sheets and strip out their browser-specific hacks, they could have instead told website owners to simply add one line to the head
of their documents. While it’s hard to imagine that the move from IE7 to IE8 will cause the same upheaval, it’s reassuring to know that Microsoft has thought ahead. Version targeting allows site owners to freeze rendering (for one browser) to a specified browser version. That’s a good thing. While it probably won’t affect standards-savvy developers like you or me, it offers a simple solution for site owners who don’t want to worry about the future. Better still, the fact that the X-UA-compatible
instruction can be sent as a header means that this issue can be taken care of by sysadmins with one small tweak to their server configurations.
But even that is asking too much, according to Microsoft. Instead of asking that developers who want to opt out of future improvements do so with the addition of a meta
element or header, Internet Explorer expects standards-savvy developers to actively opt out of version targeting… by using version targeting.
The reasoning here is that less savvy developers shouldn’t have to worry their little heads about adding one extra line to their documents. Instead, they should be encouraged to continue to write to the quirks of one specific browser version from the market leader. That their documents will “break” in other browsers is not Microsoft’s problem. The counterpoint to this condescending worldview is that standards-aware developers are the ones best placed to add a single line of markup to their documents—though, for some unexplained reason, the instruction for up-to-date rendering (IE=edge
) is strongly discouraged.
This strategy is doomed to failure. Standards-aware developers, by their very nature, will object to adding a line of unnecessary markup to their documents just to get one single browser to behave as it should by default.
Fear of drowning
While most of the web development community saw the release of IE7 as a welcome return to form, within the corridors of Redmond it was viewed as a failure. Microsoft simply cannot afford a repeat of the IE7 upgrade. Version targeting is a technology born of fear. A fear of “breaking the web”—which really means “rendering some websites differently in one browser”—has prompted the draconian default behavior.
Whether this fear is well-founded or not depends on just how drastically IE8 is going to “break” existing websites. Personally, I’m rather puzzled: what exactly are they planning to add in the next version of their browser to make the web asplode? If IE8 is going to differentiate itself from its predecessor by having better standards support, then surely we can assess how it will render websites by simply viewing those websites in a standards-compliant browser like, say, Firefox, Safari or Opera.
Lonely at the top
There was a time when Friendster was the biggest social networking site on the web—MySpace and Facebook were little more than distance glimmers on the horizon. There was a time when Netscape Navigator was the undisputed king of browsers and Internet Explorer was laughable challenger playing catch-up. On the World Wide Web, the status quo is a mutable, shifting thing. The proposed default behavior for version targeting is predicated on events that took place during a short span of years when Microsoft, having emerged as the top dog, pulled the plug on its own browser. There is an unspoken assumption that the only meaningful way the web is experienced is through one browser: Internet Explorer.
We are being told that the default version targeting behavior is necessary because without it, the web will turn into a messy crime scene of breakage (in one browser). If Microsoft are to be believed, the self-crippling default behavior of IE8+ is necessary to save the web (in one browser). Whether you agree or disagree with the default behavior comes down to faith: faith in Microsoft accurately foretelling the impact that IE8 will have.
I would much rather base my judgement on facts. There is an easy way for Microsoft to prove the necessity of mandatory version targeting: release a beta version of IE8 with version targeting disabled by default. Then we can see just how badly the web breaks some websites render differently in one browser.
I’ve listened to and understood all of the arguments in favor of the proposed default behavior: all of them assume that without self-crippling, IE8 will make a mess of a significant portion of the web. If that fear is borne out by an uncrippled beta release of the browser, I will back the proposed default behavior. Until then, I ask that Microsoft honor their promise from many years ago and allow their browser to render a valid, well-formed document with a current DOCTYPE
to the best of its abilities.
Future imperfect
Version targeting is not a bad idea. The choice of delivery mechanisms—meta
element or server header—is inspired. As an optional feature, this could prove to be a real lifesaver in some development environments. As a mandatory millstone however, it strikes a blow against progressive enhancement. [1]
The proposed default behavior for version targeting in Internet Explorer solves the problem of “breaking the web” in much the same way that decapitation solves the problem of headaches. In its current state, version targeting is a cure that will kill the patient. Version targeting could have been an opportunity for Microsoft to demonstrate innovation. Instead, the proposed default behavior demonstrates a fundamental misunderstanding of the World Wide Web, a place that according to its creator, Sir Tim Berners-Lee, will always be a little bit broken.
[1] On the plus side, as-yet unpopular DOCTYPE
s such as HTML5 can be used to trigger up-to-date rendering from future versions of Internet Explorer. That’s reassuring for the future but HTML5 is not ready for use today—any DOCTYPE
that still includes the font
element still has some issues that need to be worked out. Besides, once HTML5 is widely deployed, Internet Explorer will probably freeze its rendering for those documents too.