A Landmark Day for the Web

There was a controversy storming over the way Microsoft proposed to handle standards compliance in their upcoming Internet Explorer 8. At first, MS released a screenshot that showed IE 8 rendering the Acid Test (a web standards compliance test). Everyone in the web development community was ecstatic. Finally, IE wouldn’t “break” the Internet! Then, it was revealed that a special trick was needed to render standards-compliant web pages correctly: a <meta> tag instructing IE 8 to follow standards. The community was in an uproar and most everyone (including me) agreed that it was wrong to have to specially code web sites to force IE 8 to do what it should be doing right in the first place. MS’s argument was that having IE 8 follow standards correctly would mean that dozens of corporate intranet web apps written specifically for IE 6+7’s quirky behavior would break, leaving their poor customers helpless. It seemed like business as usual at Microsoft. Today, however, the IE team announced that they are reversing their decision and that IE 8 will render sites following standards by default and that developers of IE 6-specific intranet applications can stick the <meta> tag in their apps to give IE 8 the proper handicap to render their apps correctly. Phew! Now, we just have to wait 10 years for IE 8 to be adopted on a wide scale and we can dump all of our IE6+7 hacks!

What’s the big deal? For those of you who don’t work with web standards much, let alone web development, here’s why this is important. A group called the World Wide Web Consortium has spent thousands (ok, I made that number up) of man-hours defining standards that specify what a web page should look like given the HTML and CSS code used to generate the page. The ECMA has spent thousands more hours defining standards for how JavaScript should work to give our web pages those flashy effects. In theory, I should be able to code a web page with specific HTML/CSS/JavaScript and have it behave the same exact way, no matter which browser, IE, Firefox, Safari, Opera, Lynx, is used to display it. However, Microsoft never saw fit to follow these standards completely. Instead, they made some completely ridiculous decisions and countless bugs that made it extremely difficult (if not in some cases, impossible) to develop web sites that behave the same in IE and every other browser. This caused countless hours of hardship for many web developers.

Some developers took that approach of writing web pages that will only work correctly in IE and even went to lengths to try and block other browsers from visiting their sites. This means that if you happen to own a Mac or run Linux, you’re out of luck or are forced to trick the site into thinking you are running IE.

IE 6 was released in 2001. While there were some improvements over IE 5.5 in terms of features and standards, it still was nowhere near perfect, and it took Microsoft 5 years to release IE 7. Again, while IE 7 offered some improvements, it still had plenty of “quirks” that made it difficult to develop for. Now, nearly 2 years later, Microsoft is just starting to talk about IE 8 and has not released any sort of early testing version. It may be another 2 years before IE 8 sees the light of day. In the meantime, IE 6 still controls a healthy amount of usage, enough that, after 7 years, developers cannot choose to dismiss it and must ensure that their web apps work with the ancient pile of rotting garbage that is IE 6.

So, the good news is that Microsoft’s IE team has finally awoken to the desire for and importance of web standards. This could even mean that IE reclaims its throne among Windows users. Just think of the terabytes of network traffic that will be saved by users not having to download hacks for IE and workarounds built into JavaScript libraries! Think of the thousands of man-hours of developers’ time saved by not having to hack around IE’s quirks! Of course, it will come at the price of IE-specific-web developers having to learn how the web should work. I think the ends justify the means in this case.