Why Are We Still Using Internet Explorer 6? – Part Two

Nearly a year and a half ago I wrote this post about why many large organizations are still using Internet Explorer 6. Every now and again, the post is re-discovered and is re-circulated and I get some great feedback about it. I’ve decided that it is time for a bit of an update on the subject, so here goes.

I’m going to assume that you’ve read my original post, but in one line, the reason many large organizations still use Internet Explorer 6 is application compatibility. My employer (a large government department) has recently experienced this first-hand, having had to postpone deployment of Internet Explorer 8 after discovering compatibility issues (mid-deployment) with some important business applications. I have no idea how come they only discovered the issues after starting to deploy. Either someone didn’t do due diligence and test before-hand, or worse, they were completely clueless about the risks of incompatibilities. Either way, as a fellow IT employee in the same organization, it’s down right embarrassing.

One of the most frequent comments I receive as feedback on my original post is that folks get the compatibility issues, but they believe that we wouldn’t be in this situation if these incompatible applications had been written using web standards. It’s the fault of the application developers that their applications only work properly with Internet Explorer 6.

It is definitely true that Internet Explorer 6 isn’t very standards compliant… well, not by 2010 standards anyways. Thing is, these incompatible apps weren’t written last week, or last year. The state of web standards was very different when many of these applications were written.

Time for a little web history lesson. Let’s go back in time, about 13 years or so to late 1997.

HTML 3.2 is an W3C recommendation (HTML 4.0 will be a recommendation by the end of 1997, but will be updated and re-published again in April 1998). CSS level 1 is also a W3C recommendation. In the world of browsers, the world is basically using Netscape 4.0 or Internet Explorer 4.0 (I’m ignoring Opera, cause lets face it, most other folks did too). Both of the 4.0 browsers support HTML 3.2 and some CSS 1, but both browsers have serious bugs in their CSS implementations. At this point, other than HTML 3.2, neither browser is really “standards compliant”. Opera was closer, but web site designer/developers weren’t about to implement standards compliant sites if it would only work in Opera.

Fast forward a couple years to 1999. HTML 4.0 has been published (twice) as a W3C recommendation, as has CSS level 2. Internet Explorer is now at version 5.0 and Netscape has… essentially vanished from the scene. The Netscape story is a long and interesting one, but in a nutshell, they open sourced a large part of the code, started building version 5 on top of that, but discovered that the code was a complete disaster. So they tossed it out and started from scratch. Netscape 5.0 would never see the light of day. Internet Explorer 5 on the other hand included improved CSS and HTML standards support. In fact, Internet Explorer 5.0 for Mac was the first browser to achieve full support of CSS 1 (it had even better standards support than Opera). Internet Explorer 5.0 was also the first browser to include XMLHttpRequest, the basis for AJAX, the technology on which almost every major web site today depends (there is no “#NewTwitter” without AJAX & XMLHttpRequest). XMLHttpRequest in IE5.0 wasn’t script accessible, but it was there behind the scenes.

Move forward another year to 2000. Nothing has changed in the world of W3C web standards (they went off and focussed on XML, XSLT, etc. for the next few years, I think) Netscape 6 is re-born, with a largely re-written codebase. But the browser is bloated, and generally doesn’t work well on any PC that isn’t relatively new. By the time a couple of minor versions (6.1 & 6.2) come along to improve the performance situation, the world has been introduced to Internet Explorer 6.0. Shortly thereafter, the world is also introduced to Windows XP, with which comes a bundled IE6. This is about where I (and a huge chunk of the rest of the world) made the switch to Internet Explorer as my personally preferred web browser. Both of the IE and Netscape 6.x browsers support the current W3C standards, but the realm of CSS 2 in particular there is a huge difference in the implementation. Both products still contains major bugs and in many cases each product has interpreted some aspects of CSS 2 differently (so-called CSS 2 errata, clarified in CSS 2.1). In fact, the next revision of CSS, version 2.1 will drop parts that nobody implemented correctly, and will change other parts to match how the browsers of the day actually worked. The browsers drove CSS 2.1, rather than the other way around. By this time, it is important to note, Internet Explorer 6.0 accounts for almost +90% of the browser market share. Internet Explorer 6.0 is for all intents and purposes, the standard. It has bugs in its implementation of CSS (most notably in the box model). But in the first few years of the 21st century, if you build a site to 100% W3C standards, it’s going to be broken in +90% of the worlds browsers.

This is the era in which these applications which are incompatible today, in 2010, were built. To the Internet Explorer 6 de facto web standard.

Over the next 4 years, the situation doesn’t change much. HTML stays at 4, CSS stays at 2. Netscape and Opera (and several other smaller browsers) continue to release updates with improved implementations of W3C standards, but can’t seem to gain (or re-gain) any significant market share. In fact, Internet Explorer remains at version 6 (with a couple of service packs added) and peaks at +95% market share. Of course Microsoft is also been investigated for anti-trust issues related to their bundling of Internet Explorer with their operating systems. All this to say that frankly they haven’t got much motivation to release newer browser versions. The only other significant thing to come out of these years is XHTML, which frankly was a misguided detour which thankfully will likely be abandoned as a result of the adoption of HTML 5. The reasons why deserve their own post, but in a nutshell, there isn’t a single released version of Internet Explorer available today which supports XHTML. At least not when served by a web server using the correct MIME-type (application/xhtml+xml). So most web servers deliver XHTML with a MIME-type of text/html which most browsers parse as HTML (not XML or XHTML). Even if your site is XHTML compliant, if you serve it with the correct MIME-type to a supported browser, it won’t look the way you’d expect. Only a tiny percentage of sites are XHTML coded and served, on purpose and by design, using the correct MIME-type. And most of those are owned by computer science academics and grad students. But I digress.

Things begin to change at the end of 2004, when a little browser known as Firefox begins to actually take a chunk out of Internet Explorer’s market share. What made Firefox different from the dozens of other browsers that had tried before? I honestly couldn’t tell you. Probably just a good example of right place at the right time. I know I jumped on Firefox at about 1.0 and haven’t looked back. But Firefox re-ignited the so-called browser-wars of the late 1990’s, but in the 2000’s one of the things that earns you points is standards compliance. It also re-ignited the actual development of web standards: CSS 2.1 (2005 & 2007), CSS 3 (2005) and HTML 5 (2008 draft).

The thing I want you to take away from this post is that these critical business applications which today are holding us back from moving forward with more standards compliant browsers were in fact developed to the standard that existed in their day. Namely, Microsoft Internet Explorer 6’s (buggy) interpretation of HTML 4 and CSS 1&2. With +90% market share, for better or for worse, Internet Explorer 6’s version of the standard was THE standard.