{"id":179,"date":"2008-01-29T02:09:59","date_gmt":"2008-01-29T07:09:59","guid":{"rendered":"http:\/\/blog.epkphoto.com\/2008\/01\/29\/microsoft-needs-help\/"},"modified":"2008-01-29T02:11:00","modified_gmt":"2008-01-29T07:11:00","slug":"microsoft-needs-help","status":"publish","type":"post","link":"https:\/\/erickerby.com\/blog\/2008\/01\/29\/microsoft-needs-help\/","title":{"rendered":"Microsoft needs help"},"content":{"rendered":"<p>A recent announcement from Microsoft's Internet Explorer Platform Architect Chris Wilson last week has set the standards-aware web community afire with discussion.\u00a0 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.\u00a0 If that tag is absent, IE 8 will render as if it were IE 7.\u00a0 The goal of this is so developers can target their page to a specific version of IE that they tested against.\u00a0 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.\u00a0 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.\u00a0 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.<!--more--><\/p>\n<p>Today, IE 6 and 7 have two basic rendering modes that determine how a web page is displayed.\u00a0 There is \"Standards mode,\" which, despite its name, does not exactly follow web standards.\u00a0 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.\u00a0 The other rendering mode is \"Quirks mode,\" which is called when a page is either missing a DOCTYPE or has specific older ones.\u00a0 For backwards compatibility, Quirks mode falls back to a rendering world where browser standards were less prevalent.\u00a0 So, what Microsoft wants to do is have a third rendering mode that promises full standards compliance but requires buy in by the developer.<\/p>\n<p>Microsoft feels they need to do this for a few reasons.\u00a0 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.\u00a0 IE 7 set those inaccurate estimates in line.\u00a0 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.\u00a0 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.\u00a0 Essentially, people have chosen (consciously or not) to write non-standard code.\u00a0 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.\u00a0 Changes to IE's engine, on the other hand, would bring various outcries from web developers in large companies and other Microsoft saturated environments.\u00a0 These developers have become accustomed (whether they know it or not) to developing for the way IE behaved.\u00a0 These dimwitted paying customers force Microsoft to be careful and make detrimental decisions like these.<\/p>\n<p>Clearly, the IE devs have had a hard enough time attaining standards compliance.\u00a0 This proposed future direction will only make it more difficult for them to do so.\u00a0 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.\u00a0 This system will almost certainly make development of IE more difficult, taxing, and complex for Microsoft.\u00a0 Additionally, the size of IE (or its bundled libraries) must increase with each new version of the engine as a result of this proposal.<\/p>\n<p>The only reason anything like this even needs to be considered by Microsoft is because they broke the web in the first place.\u00a0 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.\u00a0 This is a bunch of bull-hockey.\u00a0 Calling the act of making a browser more standards compliant <strong>BY DEFAULT<\/strong> a regression is foolish.\u00a0 It just so happens that Microsoft did a decent job of making IE 7 more standards aware than IE 6.\u00a0 This broke a bunch of websites that expected IE to be less standards aware, and thus there were complaints.\u00a0 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.<\/p>\n<p>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.\u00a0 They believe it to be both unnecessary for their browsers products as well as an undeniable source of bloat.\u00a0 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.<\/p>\n<p>Currently, the major browsers use the DOCTYPE as a compatibility switch.\u00a0 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.\u00a0 The DOCTYPE is more than just a two-way switch.\u00a0 It goes on to specify a certain standard from the W3C, such as HTML 4, XHTML 1 Transitional\/Strict, XHTML 1.1, etc.\u00a0 This should be all the versioning that's needed.\u00a0 Microsoft should forget their plan to implement this new standards mode, version-locking madness and simply fix their bafflingly buggy browser.\u00a0 A DOCTYPE should map to a specific set of rules for rendering content <strong>PERIOD<\/strong>.<\/p>\n<p>If you are interested, here is a list of blog posts that I consulted while drawing my own opinions on this announcement:<\/p>\n<ul>\n<li><a href=\"http:\/\/blogs.msdn.com\/ie\/archive\/2008\/01\/21\/compatibility-and-ie8.aspx\">The original Microsoft announcement by Chris Wilson<\/a><\/li>\n<li><a href=\"http:\/\/alistapart.com\/articles\/beyonddoctype\"><em>A List Apart<\/em> article by Aaron Gustafson<\/a><\/li>\n<li><a href=\"http:\/\/alistapart.com\/articles\/fromswitchestotargets\"><em>A List Apart<\/em> article by Eric Meyer<\/a><\/li>\n<li><a href=\"http:\/\/meyerweb.com\/eric\/thoughts\/2008\/01\/22\/targeted\/\">Meyer's personal blog, \"Targeted\"<\/a><\/li>\n<li><a href=\"http:\/\/meyerweb.com\/eric\/thoughts\/2008\/01\/23\/version-two\/\">Meyer's personal blog, \"Version Two\"<\/a><\/li>\n<li><a href=\"http:\/\/meyerweb.com\/eric\/thoughts\/2008\/01\/24\/almost-target\/\">Meyer's personal blog, \"Almost Target\"<\/a><\/li>\n<li><a href=\"http:\/\/www.webclique.net\/weblog\/2008\/01\/22\/that-red-headed-monster-next-to-you-yeah-thats-anger\/\">Erin Lynch, \"That Red-headed Monster Next to You? Yeah, that\u2019s\u00a0Anger\"<\/a><\/li>\n<li><a href=\"http:\/\/adactio.com\/journal\/1402\/\">Jeremy Keith, \"Broken\"<\/a><\/li>\n<li><a href=\"http:\/\/weblogs.mozillazine.org\/roc\/archives\/2008\/01\/post_2.html\">Mozilla's Robert O'Callahan, \"&lt;META HTTP-EQUIV=\"X-BALL-CHAIN\"&gt;\"<\/a><\/li>\n<li><a href=\"http:\/\/weblogs.mozillazine.org\/roc\/archives\/2008\/01\/slipping_the_ba.html\">Mozilla's Robert O'Callahan, \"Slipping The Ball And Chain\"<\/a><\/li>\n<li><a href=\"http:\/\/weblogs.mozillazine.org\/roc\/archives\/2008\/01\/different_appro.html\">Mozilla's Robert O'Callahan, \"Different Approaches To Compability Modes\"<\/a><\/li>\n<li><a href=\"http:\/\/webkit.org\/blog\/155\/versioning-compatibility-and-standards\/\">The WebKit and Safari stance by Maciej Stachowiak <\/a><\/li>\n<li><a href=\"http:\/\/www.b-list.org\/weblog\/2008\/jan\/23\/legacy\/\">James Bennett, \"Legacy.\"<\/a><\/li>\n<li><a href=\"http:\/\/www.b-list.org\/weblog\/2008\/jan\/28\/ie8\/\">James Bennett, \"X-No-Thanks\"<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>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.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[27],"tags":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p84xAX-2T","_links":{"self":[{"href":"https:\/\/erickerby.com\/blog\/wp-json\/wp\/v2\/posts\/179"}],"collection":[{"href":"https:\/\/erickerby.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/erickerby.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/erickerby.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/erickerby.com\/blog\/wp-json\/wp\/v2\/comments?post=179"}],"version-history":[{"count":0,"href":"https:\/\/erickerby.com\/blog\/wp-json\/wp\/v2\/posts\/179\/revisions"}],"wp:attachment":[{"href":"https:\/\/erickerby.com\/blog\/wp-json\/wp\/v2\/media?parent=179"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/erickerby.com\/blog\/wp-json\/wp\/v2\/categories?post=179"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/erickerby.com\/blog\/wp-json\/wp\/v2\/tags?post=179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}