Update: According to the IE blog, the IE team has changed its stance from what it was (as described in this post) to a more logical one. I intended to do another blog post about it, but other things in life have been more interesting (like getting sleep since I’ve been a bit ill). They also have a beta version available, but I am not going to bother with it this time around.
Internet Explorer has been hated by web developers for quite some time. It is terrible in a lot of ways, but one of the biggest problems is that it has always been quite far from following standards, causing developers to spend a significant amount of extra time making webpages work in Internet Explorer. Microsoft claimed that IE7 would fix these problems and I even thought they might do a decent job for a while. I gave time to test the beta and even submit a bug (that was ignored). When I saw how poor of a product IE7 was, I lost all faith that Microsoft would ever develop a good browser.
At that point, I decided that I would quit testing my personal pages in Internet Explorer and I have since paid as little attention to the browser as possible. My exposure has been limited to hours of CSS “fixes” to get both versions of IE to look right (no easy feat since they screw up in different ways) at work only. Then, today, I came across an IE blog post from a month ago about “Compatibility and IE.” How can they continue to make such terrible choices? Their idea is to add a meta tag that ties the rendering of a webpage to a specific browser (not even to a specific rendering engine). In other words, you have to set a meta tag that specifies exactly which browser version the page looks best in for every single browser (of course they don’t acknowledge the number of browsers out there). You can also have the server send the info in the header, which is an even worse idea (just imagine downloading a webpage to read at a later time and having it render terribly because the header information was not included not to mention the pain this creates for mirroring).
To give people an idea of how stupid this idea is, I thought I’d start off the meta tag, showing what it might look like if other browsers adopt this idea:
<meta http-equiv='X-UA-Compatible' content='3B=2; Abaco=1; ABrowse=edge; Alefox=edge; Altimit OS Web Browser=edge; Amaya=edge; Android Web Browser=edge; AOL Explorer=edge; Arachne=edge; Avant Browser=edge; AWeb=edge; Bento Browser=edge; Beonex Communicator=edge; Camino=edge; Charon=edge; CompuServe=edge; Deepnet=edge; Dillo=edge; DocZilla=edge; Emacs/W3=edge; Enigma=edge; Epiphany=edge; Flock=edge; Galeon=edge; Ghostzilla=edge; Gollum browser=edge; IBrowse=edge; iCab=edge; IceWeasel=edge; Internet Channel=edge; Internet Explorer=8; iRider=edge; Kazehakase=edge; K-Meleon=edge; K-MeleonCCF=edge; K-Ninja=edge; Konqueror=edge; Krozilo=edge; LimeChat=edge; Lobo=edge; Madfox=edge; ManyOne=edge; Maxthon=edge; Midori=edge; Mothra=edge; Mozilla Firefox=3; NeoPlanet=edge; NetCaptor=edge; NetPositive=edge; Netscape=edge; NetSurf=edge; Nintendo DS Browser=edge; OmniWeb=edge; Opera=edge; Oregano=edge; Planetweb browser=edge; Safari=edge; SeaMonkey=edge; Shiira=edge; Skipstone=edge; Sleipnir=edge; Slim Browser=edge; Smart Bro=edge; Songbird=edge; SpaceTime=edge; Swift=edge; Tkhtml=edge; UltraBrowser=edge; VMS Mosaic=edge; Voyager=edge; Web Browser for S60=edge; Wyzo =edge; XeroBank Browser=edge; X-Smiles=edge; Yahoo! Browser=edge;' />
Of course, a web developer would have to change “edge” to the current version of each of these browsers (and this list of 70+ is by no means a complete list) to ensure it renders correctly. WTF?
Why can’t we just keep “quirks” mode so that users aren’t alienated from old content (as much as I’d like to get rid of it); any page that does not have a DOCTYPE declaration should render in quirks mode. Any page that does have one should render in the best, most standards-compliant way available for the specified type. That means the page might look a little different as browsers are updated to comply more correctly to the standards, but developers should be developing to the standards not to the browser (obviously, you have to make adjustments for browsers, but those should be minimal and should not ever make the page look bad when viewed with full compliance of standards).
The way it works now in good browsers is that they follow the standards as closely as possible (though non-Trident browsers aren’t perfect either). If they encounter something like drop shadows that they do not yet support, no big deal; the shadows simply don’t show. When an updated version comes along, the shadows show up and the page is improved with no additional work from the developer. The Internet Explorer method prevents a page from ever being rendered more correctly. A web developer would have to manually tell IE to start following the standards as each feature starts to be supported (or use “edge” and hope IE does not get worse…).
The other awesome thing about this idea is that every future version of IE has to support every previous version’s mistakes! If an ignorant developer relies on an IE8 bug to make the page render a particular way, s/he’ll use that meta tag to specify IE8. IE9 comes along and has to be able to render it. IE10 comes along…. Eventually terabyte hard drives will be useful as storage devices for the billion rendering modes IE will support.