Browser Targeting and Rounded Scissors

Tuesday, January 22, 2008

You’ll never go broke appealing to the lowest common denominator. — Lisa Simpson, “Lisa’s Substitute”

In the latest issue of A List Apart, Aaron Gustafson explains Microsoft’s new plan for targeting browser versions and Eric Meyer grudgingly endorses the idea. If you haven’t yet, you should read those articles—and maybe skim some of the discussion—because this idea is going to have a major impact on future web development. I also recommend these blog posts on the subject:

The basic idea is this: Starting with IE8, future versions of Internet Explorer will support a new meta tag that will tell the browser what version of IE to use in rendering the page. If that tag isn’t there, the browser will assume the worst and behave like IE7.

Jeremy Keith has the money quote:

Unless you explicitly declare that you want IE8 to behave as IE8, it will behave as IE7.

Jeremy’s right when he says this should not be the default behavior. One should be able to assume that software behaves like itself, unless explicitly told not to.

Microsoft’s argument (it’s Gustafson making the argument, but it’s ultimately Microsoft’s idea, and they’re the ones implementing it) is the same one they’ve always given for not implementing standards: They don’t want to break the web. The fact that it’s their broken browser that has kept the web broken for so many years seems utterly lost on them. So they continue to make things more difficult for developers that know what they’re doing, and easier for those that don’t to be lazy and remain ignorant.

Gustafson says this is just like DOCTYPE switching, but better, because it’s not just the cool kids using DOCTYPEs anymore:

  1. egged on by A List Apart and The Web Standards Project, well-intentioned developers of authoring tools began inserting valid, complete DOCTYPEs into the markup their tools generated; and
  2. IE6’s rendering behavior was not updated for five years, leading many developers to assume its rendering was both accurate and unlikely to change.

Together, these two circumstances have undermined the DOCTYPE switch because it had one fatal flaw: it assumed that the use of a valid DOCTYPE meant that you knew what you were doing when it came to web standards, and that you wanted the most accurate rendering possible. How do we know that it failed? When IE 7 hit the streets, sites broke.

So because some kids would poke their eyes out with anything pointy, you, Ms. Samurai, must use rounded scissors. But here’s the thing: This solution doesn’t solve that problem. Authoring tool developers, faced with the options of either locking their users into a specific version of IE or specifying IE=edge so their software always targets the latest version are going to choose the latter.

In his article, Meyer makes the argument that version targeting will speed up the advancement of IE:

Like DOCTYPE switching did in 2000, version targeting negates the vendor argument that existing behaviors can’t be changed for fear of breaking web sites.

But it seems more likely that just the opposite will happen—browser innovation will stagnate. Remember, the W3C only recommends a standard once it’s been implemented by user agents. What motivation does Microsoft have to implement those features in future browsers if, by default, web sites opt out of them? Why would any browser maker add features, if the default is to not show those features?

Speaking of other browsers, don’t expect Mozilla, Apple, or Opera to follow suit. They have no reason to. Their users upgrade regularly, so they don’t have large segments of their market still using broken versions.

I understand Microsoft’s reasons for doing this. The IE team wants to do the right thing when it comes to standards support, but the company has to answer to corporate clients that, for a variety of reasons, are slow to adopt standards. But the implementation is backwards. If a site needs to be kept locked at a particular version of IE, the onus should be on their developers to add a line of code to keep it there.

After all, how are you going to spread the use of web standards if it’s more work to support the standards?