Why version targeting is a bad idea
To further elaborate on exactly why I think Microsoft’s new default rendering method is a Bad Idea (since GermanShepherd has taken me to task for being anti-Microsoft at the expense of the good of the Web), I think it’s important to first explain why I don’t think its a bad idea. I am not opposing this plan because I automatically think that anything coming out of Redmond is evil by default (in fact I applauded the IE team’s efforts on version 7, despite feeling that they didn’t go far enough in implementing long-standing standards at that time; something that appears to be biting them in the ass now). I’m opposed to the idea of version targeting because it is antithetical to the very concept of the standards that Microsoft is claiming they support, and as a developer who is increasingly working to fully support existing open standards (HTML 4 Strict, XHTML 1.0, XHTML 1.1, CSS1, CSS2, CSS2.1, Javascript), this concept will make things harder for me, not easier.
I will readily acknowledge that MS is in something of a pickle of their own making here, because for over 5 years, IE6 was pretty much the only browser on the market, and as far as rendering pages built to standards goes, well, saying it sucked is putting it pretty mildly. Now they’re in a situation where their past shoddy support for standards in IE’s standards-compliant mode is making it hard to obey those standards and the commonly-accepted method for opting into them (namely, the doctype switch) without causing large portions of the corporate intranet to come crashing down because their standards-compliance is only as good as what IE6 and now IE7 require. (I think that the effect of IE7 was much greater on internal sites than it was on the Internet as a whole, but I’m just working from personal experience here. I have no way to verify or dispute Chris Wilson’s claim that IE7 broke half of the top 200 websites, so I’m just going to have to take his word for that.) So, rather than do the difficult thing and make it obvious to these people that their sites were built using antiquated, buggy, and often broken code for a product (IE6) which is nearing (if not already at) the end of its support cycle (something they seem to have no problem doing for Windows), they’re taking an easy way out and dumping the responsibility for keeping IE up to snuff with the other modern web browsers onto the developers who have so tirelessly demanded Microsoft’s compliance.
And really, that is the biggest problem I have with this meta tag business: it punishes developers who have already done the most work to build sites that are well-rendered by every major browser and which support the forward compatibility that these standards are supposed to ensure. Developers who are either too lazy, inexperienced, or entrenched in Microsoft’s broken method of rendering the web get a free pass for remaining 7 years behind the times. This is quite possibly one of the only computer-related fields where this would even begin to be an acceptable situation, and that simply boggles my mind. We cannot continue to support sites designed and built during the Dark Ages of the Web; it hinders progress and innovation, and puts us into situations like the one we have now. Websites are just like other pieces of software: they become antiquated, broken, and need to be replaced. Unfortunately, the “operating system” for these pieces of software is a browser so deeply tied into the desktop OS that it cannot support anything but the latest and greatest version of itself.
This brings me to my second point: I seriously question the sustainability of this meta tag version-targeting system. The way that this has been proposed, it isn’t a temporary solution to the problem of maintaining backwards compatibility in IE; it’s a new “standard” way for developers to target their pages for specific browsers and versions (in fact, it’s the exact opposite of a temporary fix; you don’t temporarily opt into the future, you temporarily opt out of it, and Microsoft is hoping that other browser vendors will implement this meta tag as well [interestingly, for some reason, devs from WebKit, Mozilla, and Opera have all rejected and disowned this proposal... I wonder why?]). Again, this sounds like an absolutely fantastic idea in theory, but in practice, it will turn any browser that supports it into bloatware, because antiquated, buggy rendering methods can now no longer be dropped from a browser after being fixed, they need to be retained for the sake of remaining compatible with all those pages out there that bought into the broken way of doing things (and I might note that despite Firefox, Safari, and even Opera going through numerous revisions in far less time than it took IE to go from 6 to 7, there has never been an outcry from developers for these browsers to support backwards compatibility with earlier versions of their rendering engine). What happens two or three versions of IE down the road? If developers build in a meta tag explicitly indicating that IE use the IE8 rendering engine, what does IE9 or IE10 do about that? What about IE11? IE12? How many versions of the Trident engine can Microsoft conceivably cram into this product before it simply collapses under its own weight? How much more difficult does this make fixing bugs in the program? How does this increase the number of potential vulnerabilities in the browser? What happens if IE9 introduces more than just bug fixes, but performance increases in areas like Javascript handling and page rendering? Will sites locked into IE7’s or IE8’s engines benefit from these improvements? If not, why even bother making these improvements in the first place? When everything still renders “just fine” in the default IE7-compliant mode, and standards are optional, what motivation does Microsoft have to continue to innovate and improve its browser?
Segue now to point #3: This idea will stifle innovation in the IE Team and on the Web in general. Certainly, the standards-compliant developers are welcome to “force” IE8 (and presumably IE9 and up) to behave like a modern browser, but if this defaulting to IE7 is being done to help unprepared developers, lazy developers, and corporations without the time, resources, or perhaps most commonly, the desire to update their sites stave off an impending armageddon, what motivation do they now have to do anything at all? If IE8, IE9, IE10, etc. all default to rendering content just like IE7 would have (and again, I question the sustainability of this approach), what motivation do these people now have to do anything at all? What motivation do novice developers have to learn about standards and advanced content creation methods when IE7 works just fine? Sure, the standardistas and the less fanatical but still standards-friendly developers are welcome to use this meta tag to target more advanced versions of the IE engine, but this practice of making standards opt-in rather than opt-out forces people to have to expend more time and effort to learn standards-based practices than they would need to spend just making it look right in IE7. It marginalizes the importance and impact of standards on the most commonly-used browser on the planet. This is bad for standards, not good for them, and standards are good for the Web, even at the expense of older sites ceasing to function. Some may find (and have found) it odd to advocate Microsoft enforcing something like this, since usually Microsoft forcing people to do something is anti-competitive and harmful to the computer industry, but this is not an advocation of more proprietary lock-in garbage from Redmond. This is advocating that Microsoft conform to open standards in the interest of fair competition. If they lose market and mind share because of past attempts to unfairly dominate the Web through proprietary technologies and poor support for even the most basic of standards from HTML to CSS, then they have nobody to blame but themselves for this calamity that they now face, and the longer they put it off, the worse it’s going to be for them when they finally do decide to make modern standards the default. Microsoft is not a charity, and we as an industry should not be expected to coddle them for having screwed up in the past. Nor should we allow Microsoft to continue to hold open standards hostage because it would temporarily damage some portions of the web and the corporate intranet (and I do wish to stress temporarily… sites can be updated, and will only be updated if there is a motivation to do so). If Microsoft would get off its ass and just freaking announce and end-of-life date for IE6 and that incompatible sites would no longer render or possibly even function correctly in newer versions of IE, that alone would be enough incentive to get corporations off of their own duffs and invest in modernizing their internal infrastructure and external Web presence.
To take a brief tangent into the hazy realm of economics, imagine if you would the number of jobs and the amount of economically stimulating cash would be generated by at least encouraging, if not outright forcing major companies to upgrade their websites and corporate intranets. It could – admittedly without the benefit of insightful education into the workings of economic factors – be argued that Microsoft making IE8 act like IE8 by default would be a good thing for the economy in this down-turning market, as it would drive the creation of tech industry jobs in the form of new contracts to freelance web developers and development firms. These are quite typically rather lucrative contracts which would drive considerable money into the hands of a segment of the market most likely to further re-invest it into the economy (in the form of purchases, likely from the very companies shelling out cash to upgrade their web-based infrastructure), doing far more benefit than free hand-outs from an already cash-strapped federal government.
But back to the real world, there are other ways that this sort of preservation of the ancient corporate American intranet could have been handled without a) blaming developers for making badly-designed sites so that they’d work in IE6/7 and b) further placing an additional onus of responsibility on standards-compliant developers to make their standards-compliant sites render correctly in IE8’s non-default super-duper standards-compliant mode. Unfortunately, all of these alternative methods would rely on some combination of user education, developer training, and the “breaking” of the Web which Microsoft is so terrified of doing (despite the fact that the vast majority of the web is either built to standards, or to such ancient implementations of HTML that it immediately falls under the purview of Quirks Mode). The sites most likely to “break” (by which I believe the IE Team means “render incorrectly” more than “ceases to function entirely”) are those written by tech-savvy developers trying to cleverly circumvent the bugs and limitations of IE’s Trident engine.
Making IE7-compliant mode opt-in, through either the inclusion of the meta tag or the use of the also-proposed X-UA-Compatible HTTP header, would allow these tech-savvy developers to “fix” their sites temporarily while still placing an onus upon them – and not the standards-based development community which has been doing the legwork to get Microsoft to pay attention to this issue in the first place – to update their sites before this temporary stop-gap measure ceases to be supported in the future. For those sites that don’t have active support teams or who for whatever reason were tech-savvy enough to know how to work around IE’s shortcomings but not up-to-date enough to know about this temporary solution, a button and/or contextual menu item (I’m thinking both) can be added to the browser that would toggle IE7-compliant rendering for a given domain. Make it look like a band-aid, and trumpet the feature as the best of both worlds: forward-looking standards compliance and the ability to continue to view “legacy” sites in a non-destructive manner. You’re already giving the browser the ability to switch renderers, just put that ability into the hands of the users. With proper education of users on the use of this feature, and proper education of developers through notifications from Microsoft on any and all tech-related blogs and news sites to ensure that this “band-aid” feature would be required only in the most dire of circumstances, Microsoft could continue their pledge to not “break the Web” while still properly implementing modern Web standards. And if you don’t like the band-aid button, here’s another one for you: make IE8 a stand-alone product, separate from the built-in, deeply-Windows-integrated IE5/5.5/6/7 releases. Since I’m pretty sure that by this point, most of the “Web breakage” has already happened in the nearly-mandatory move to IE7 (which inexplicably hasn’t impacted IE6’s browser share all that much), most of what’s left is corporate intranets still stuck in the mid-to-late 90’s. Let people run the antiquated IE5/5.5/6/7 engine for those sites that need it, run IE8 for the actual Intarwebz, and make the new IE8 release available for all versions of Windows from Win98 through Vista (seriously, it can’t be any more work than making sure IE10 still has IE7, 8, and 9’s rendering engines in it…) to ensure maximum adoption so that devs can more quickly move to end-of-line the old versions of the browser.
As a final salient point, making yet another opt-in to replace the opt-in of the doctype switch because so many people (and WYSIWYG editors) completely loused that idea up simply begs for this opt-in to be similarly abused in the future. There’s even a setting in the meta tag for “edge”, which will force the page to target the latest version of a browser’s rendering engine regardless of how far in the future the page is being accessed. Knowing that most devs aren’t going to want to be locked into a specific release of a browser (as they’ll want a well-formed site to be able to take advantage of improvements to performance and capabilities over time), and knowing that WYSIWYG editors are going to make “edge” the default for inexperienced devs simply because it looks bad to target an older browser release as a default, the proliferation of “edge”-defined sites – despite strong advisement from Microsoft not to do this – is going to ruin this as a way to guard against future incompatibilities in rendering the same way the doctype switch has failed to do so for the exact same reasons. Opt-ins don’t work, because everybody wants to opt-in to the future, even if they don’t understand what that means. The only way to preserve standards and their forward-compatibility is by opting out of them as needed until the people responsible for maintaining and creating content on the Web get their heads in the game. If they choose not to, there are plenty of forward-looking developers out there who will gladly take their business once they explain to their clients why their sites don’t have as much portability, functionality, speed, or simplicity. Standards as defaults drive innovation; standards as options do not.
Now for my paragraph of anti-Microsoft paranoia, which will likely serve to undermine all of the hopefully well-reasoned arguments I’ve just made (oh well). I can easily see this move by Microsoft as a way to ensure that IE7 becomes the “gold standard” for the internet yet again. It may not be the intent if the IE Team right now, but faced with sharply declining browser share and a potential way to make up for it through this new non-standards-compliant IE7 default rendering method, I have no doubt that someone at Microsoft will turn this into another crusade against open innovation. By effectively paying lip service to standards by including them as a non-standard feature, Microsoft is once again already marginalizing the open standards community in favor of maintaining its own proprietary, or at the very least, “broken” standards, which serve to keep people locked into their products, lest those customers find that they are no longer able to use their corporate intranet site after moving to another browser vendor. It’s a small – and predictable, based on past performances – step from this marginalization to another take-over effort built on the back of IE7 and 8, rather than IE4, 5, and 6. It’s easy to understand why this would work, too… even after the rise of Firefox as a viable alternative and the steady increase in Safari market share, IE still commands anywhere from 60% to 95% of the traffic going to most popular websites. This is arguably the most commonly-used (if not popular, since that sort of implies that it’s something people want to use, rather than people simply not knowing they can use anything else) browser on the market, and leveraging the power of stupid people in large numbers is something that Microsoft is very, very good at. But that’s just my bit of anti-Microsoft paranoia to cancel out the well-reasoned arguments. Feel free to just pay attention to this paragraph and ignore the other 9 when making your counter-arguments.
January 30th, 2008 at 11:34 am
A post like this would have been better the first time… When people post things without reasons or explanations, it usually means they have none to begin with. My apologies.
January 30th, 2008 at 12:17 pm
I completely agree with you… When I first read about IE8’s so called “feature”, I thought exactly the same. (Although I probably wouldn’t be able to write 10 full paragraphs about it
) This feature will certainly do more harm than good…
January 30th, 2008 at 8:56 pm
Not that I’m any “fan” of IE, god forbid (FF user all the way). But here’s a pro IE 8 article that does have *some* valid points to it http://www.alistapart.com/articles/beyonddoctype
Not that they outweigh the negatives, mind you.
Great post, and
my, 10 paras. Awesome, dude
February 2nd, 2008 at 11:16 pm
Next question for you to ponder over – would it be better for them to do this and have a standards-compliant-ish version of IE at least available to some developers if they manually specify it, or would it be better for them to leave out the standards-compliant-ish IE8 engine and force even those who are willing to manually tag their pages to use IE7’s engine?
(disclaimer – Aside from needing to specify older rendering engines in the Riven Journals Restored, which I’ve already done in a few places, I will be eating razor blades before I use this tag just out of spite of IE. ;p )