Eric Kerby: Photography, Web Design, Programming



Microsoft needs help

January 29th, 2008 at 2:09 am

A recent announcement from Microsoft's Internet Explorer Platform Architect Chris Wilson last week has set the standards-aware web community afire with discussion.  What it boils down to is that web developers will need to add a specific meta tag to their code (or change their web server configuration) for IE 8 to render their pages in a standards compliant manner.  If that tag is absent, IE 8 will render as if it were IE 7.  The goal of this is so developers can target their page to a specific version of IE that they tested against.  So, if I wanted, down the road I could make a page render like it was being run in IE 8 even though let's say IE 10 is displaying it.  That becomes a safeguard against future changes to IE's browser engine by locking the page to a specific state in the browser's version history.  If that technical speak has not scared you off, read on so I can tell you why I think this is a bad idea and how Microsoft got itself in this mess.

Today, IE 6 and 7 have two basic rendering modes that determine how a web page is displayed.  There is "Standards mode," which, despite its name, does not exactly follow web standards.  It is simply IE's default way of rendering the page if the web developer provided enough info in the form of a DOCTYPE at the top of the page's source code.  The other rendering mode is "Quirks mode," which is called when a page is either missing a DOCTYPE or has specific older ones.  For backwards compatibility, Quirks mode falls back to a rendering world where browser standards were less prevalent.  So, what Microsoft wants to do is have a third rendering mode that promises full standards compliance but requires buy in by the developer.

Microsoft feels they need to do this for a few reasons.  The long life of IE 6 made some customers feel the engine was stable (even if buggy) and would not change heavily any time soon.  IE 7 set those inaccurate estimates in line.  Still, though, the non-standard, simply inaccurate IE implementations of various XHTML tags, CSS declarations, etc. has caused many people to hack their otherwise perfect code to work for IE.  Additionally, many web site software vendors have developed their apps to declare DOCTYPES only to have their users change the source without maintaining the standards compliance that the vendor aimed for.  Essentially, people have chosen (consciously or not) to write non-standard code.  The likes of Mozilla and Apple have been far more standards compliant to begin with, so changes made to their engine to enhance standards support has been welcomed instead of arousing anger.  Changes to IE's engine, on the other hand, would bring various outcries from web developers in large companies and other Microsoft saturated environments.  These developers have become accustomed (whether they know it or not) to developing for the way IE behaved.  These dimwitted paying customers force Microsoft to be careful and make detrimental decisions like these.

Clearly, the IE devs have had a hard enough time attaining standards compliance.  This proposed future direction will only make it more difficult for them to do so.  Some would argue that it will be easier since they can be more liberal with changes in the fully standards compliant mode of the engine, but the heavy cost of maintaining bug and security fixes in their past engine versions and delivering more and more of them in each IE release will be overwhelming and counteract any other advantage of this flawed system.  This system will almost certainly make development of IE more difficult, taxing, and complex for Microsoft.  Additionally, the size of IE (or its bundled libraries) must increase with each new version of the engine as a result of this proposal.

The only reason anything like this even needs to be considered by Microsoft is because they broke the web in the first place.  They supposedly broke it again with IE 7 (though I would argue that point), so they're scared not too break it again with IE 8.  This is a bunch of bull-hockey.  Calling the act of making a browser more standards compliant BY DEFAULT a regression is foolish.  It just so happens that Microsoft did a decent job of making IE 7 more standards aware than IE 6.  This broke a bunch of websites that expected IE to be less standards aware, and thus there were complaints.  In my mind, developers complaining because they hacked their code in the wrong way should spend less of their time complaining and more of their time fixing their websites.

Before I wrap this up, let me mention that developers in the Apple and Mozilla camps have made it clear that they are not so keen on this new system.  They believe it to be both unnecessary for their browsers products as well as an undeniable source of bloat.  Without the support of this new meta tag in WebKit and Gecko, I don't see it catching on too heavily in a world that is increasingly less IE saturated.

Currently, the major browsers use the DOCTYPE as a compatibility switch.  If it's not present, IE falls back to a very yucky Quirks mode state, and Firefox/Safari/others make a few changes that make older pages look better while still being largely standards-aware.  The DOCTYPE is more than just a two-way switch.  It goes on to specify a certain standard from the W3C, such as HTML 4, XHTML 1 Transitional/Strict, XHTML 1.1, etc.  This should be all the versioning that's needed.  Microsoft should forget their plan to implement this new standards mode, version-locking madness and simply fix their bafflingly buggy browser.  A DOCTYPE should map to a specific set of rules for rendering content PERIOD.

If you are interested, here is a list of blog posts that I consulted while drawing my own opinions on this announcement:

Leave a Comment