.net/may2008 article Browser version targeting

here's the full original text (call it the "director's cut", if you will) of my little rant / opinion piece in this month's .net magazine:

Browser version targeting — Microsoft opts-out on opt-in

Why Internet Explorer 8's browser version targeting won't be as bad as originally feared.

In the January issue of web standard-bearer A List Apart, Aaron Gustafson's article "Beyond DOCTYPE: Web Standards, Forward Compatibility, and IE8" outlined Microsoft's plans to introduce browser targeting in the next version of IE. Through the addition of a custom HTTP header (X-UA-Compatible) or equivalent META element declaration, developers will be able to switch between different CSS and JavaScript engines.

The rationale for this move is understandable. With the release of IE7 in 2006, Microsoft made a huge leap towards bringing web standards support to their browser. Unfortunately, this also resulted in many existing sites and intranet applications coded specifically to the whims of IE6 to break, resulting in complaints from developers, corporate customers and end users.

With IE8, Microsoft has two contradictory aims: providing backwards compatibility, while also improving standards-compliance. But many web standards proponents have been less than enthusiastic about Microsoft's proposed solution to this dilemma.

History repeating?

Arguably, we've been in a similar situation before. Today's web standards development was only made possible by the introduction of DOCTYPE switching in 2002, allowing for improved standards support while maintaining backwards-compatible quirks mode for legacy content. Even Mozilla introduced its own flavour of version switching in Firefox 1.5 and 2.0, extending the behaviour SCRIPT to allow the use of ECMAScript for XML (E4X) and JavaScript 1.7.

However, in both cases the versioning was descriptive of the particular specification the pages and scripts were authored against, leaving it up to each browser to decide how to handle the content. IE8's proposed browser targeting moves away from browser-agnostic development and back to the old "this page best viewed in..." days.

In his article, Aaron optimistically suggested that other browsers may want to adopt this form of version targeting. Judging by the responses from lead developers at Mozilla, Opera and Safari, this may well remain an IE-only solution — similar to conditional comments.

Considering that X-UA-Compatible primarily solves a problem with IE-specific sites, the potential damage is at least contained.

Standards as an opt-in?

The most polarising aspect of Microsoft's January announcement was the plan to have IE8 default to IE7 emulation, making improved standards-compliance an explicit opt-in — forcing developers to add the X-UA-Compatible incantation, or to adopt new DOCTYPEs like HTML5. Microsoft's rationale of "don't break the web" seemed pragmatic and inevitable, but it sparked a heated debate among web standardistas.

Perhaps it was this vocal opposition from developers, backed by Microsoft's newly-drafted "Interoperability Principles" and its focus on standards support, that led to an impressive reconsideration. Just as we thought the standards opt-in was a fait accompli, the IE team surprised everybody — including those WaSP members secretly involved in Microsoft's original proposal — by announcing that IE8 would default to its most standards-compliant mode after all, bringing it in line with the behaviour of other browsers.

Cui bono — who profits?

So, as the dust settles, what are we left with?

Web-standards-savvy developers should rejoice. No opt-in, no X-UA-Compatible...if you code to standards, IE8 will render it accordingly. There will be bugs, as with every other browser, but the development methodology won't change: code to specifications, test in standards-compliant browsers, then add graceful degradation and DOM scripting capability checks where needed.

Developers who are still ignorant of web standards or somehow forced to code to specific versions of IE will be able to call "time out" and freeze the browser's rendering and behaviour to a particular version, without any "frantic scramble" to fix things for new versions.

And, instead of having to block browser updates, corporate IT departments can set their servers to output the magic X-UA-Compatible HTTP header, trigger IE7 emulation mode, and wait until their enterprise intranet applications are updated to work with IE8.

Where do you want to go today?

Browser version targeting may not be ideal from a purist's perspective, but at least standardistas now aren't forced to buy into it. Despite providing a get-out clause for non-compliant sites, the IE team does seem genuinely committed to standards. The recently released beta version of IE8 already shows dramatic improvements in layout (passing the ACID2 test and shooting for full CSS 2.1 compliance on release) and JavaScript. Thanks to the version targeting trade-off, Microsoft's new browser may see a wider adoption than IE7, allowing us to finally take advantage of up-to-date standards and features without the usual workarounds.

The IE team seems to finally be listening to developers — so get involved in the beta testing, provide feedback and bug reports, and help steer IE8 in the right direction.

see also the PDF version of my article, as it appeared in edited form in the magazine.

17/05/2008 at 21:27:36
.net article