25 February 2009

Internet Explorer 6: The Cancer of the Internet

For the past few weeks I've been working on a project at my former employers, VSA Partners. I've been working on a pretty complicated web application, a sort of live search for product lines where you can drag sliders to specify the attributes you'd like. Very cool, and it works absolutely beautifully in Firefox 2/3, Safari/WebKit/KHTML 2/3, and Google Chrome, not surprisingly. Its performance is by far and away the best in the nightly build of Webkit and Google Chrome, again not surprisingly because those are essentially the same browser and existing on the bleeding edge of browser technology. So far, so good. Internet Explorer even runs it tolerably well, with a 2.5 second lag when the page is first loaded and a 0.24 second lag between user interface interactions; resetting all the controls to their original state takes 2.3 seconds.

And then there's fucking Internet Explorer 6, rubbing its shittiness in our faces much to our collective shame and chagrin.

For this project, I knew that IE6 would be a major bump, so I did my homework on it. I read all the Microsoft Developer Network articles on the subject (and yes, there are MSDN articles specifically about workarounds to IE's craptacularness), the not-so-swift Javascript execution in Internet Explorer. In particular there is a nice three-part article series on there about some of the specific sore spots in IE6's performance. I read up and then applied what I had learned to my code. The result was slow and steady performance improvement over the course of a few days, but overall an abject failure. But, this failure doesn't belong to me; I'm not going to claim it, as tempting as it is for me to believe this is my fault. This particular failure sits quietly and slovenly on the shoulders of Microsoft. Internet Explorer 6, according to W3schools (source: http://www.w3schools.com/browsers/browsers_stats.asp), is still used by about one in every five internet users. This means that, as a web developer and designer, if I ever create anything that can't run or looks terrible in IE6, I've automatically lost one in every five people, 'cause let's face it, those people aren't upgrading anytime soon. Internet Explorer versions 6 and 7 make up 44.2% of internet users.

A little bit of background for those who aren't technically inclined (and for those who are but love reading about Microsoft's many failures). Internet Explorer 6 is notoriously difficult to develop web sites for because it has poor or nonexistent support for many of the new standards that are supposed to make web development simpler. Internet Explorer's rendering of web sites hearkens back to an earlier, more innocent time, when there were no massive javascript applications, when web sites were simple, god-fearing websites and IE6 was all you needed. Times are very different now. With the rise of web applications moving the heavy lifting of making the web work over to the client side, the fastest browser wins, and accurately rendering XHTML code to web pages is fundamental—obviously—to the viability of a browser as a platform. In short, web browsers are now expected to be platforms similar to an operating system. As it happens those two tasks, rendering code accurately and executing javascript code swiftly, are the two things at which Internet Explorer is the absolute worst.

In the case of IE6 I don't think it's fair to poke fun at its javascript interpreter. As I said above it was a different time, and javascript really hadn't come into its own yet. It was rarely if ever used for anything move involved than overcoming the shortcomings of CSS and XHTML code. But nowadays we write whole applications in Javascript and skin them with XHTML/CSS, so IE6's relevance to our present-day world is waning fast. Its javascript interpreter may be apples to today's browsers' oranges, but that still doesn't make reliance on it a forgivable offense. Even since I've been writing them web applications have exploded in popularity and scope. As I've positioned myself to specialize in their design and development, I feel pretty good about this. But there's just one problem... IE6.

In a modern web browser I have access to all the new innovations in browser technology over the past decade, but in IE6 I am stuck in the last century. Yes, that's right, Internet Explorer was released in 2001 and, but for security and aesthetic changes, hasn't changed much. Internet Explorer 6 is still the sorrow of the internet, and something tells me those 18% aren't going to upgrade soon. So... I have an idea.

Fuck 'em. That's right. Fuck 'em. They're using a browser that came out before the dot-com crash; they shouldn't be expecting the internet to behave the same for them. At this point I think it's okay to say, Yes I will look at it in IE6 and if there's a quick fix I can apply I'll do it but I will not burn hours and hours tweaking it. Overall this will mean less money in the short term but it will mean better productivity, more websites launching on time, and the betterment of the internet in general.

Once we stop caring about IE6, it's no big deal to write javascript that futzes with the layout of the page (IE6 is notoriously terrible at manipulating DOM objects), or to write elegantly simple CSS layouts, or to write heavyweight application suites. It'll be a better world and when the IE6 users are finally forced inevitably to upgrade, the rest of the world's web will be ready for them. They'll arrive with fanfare to a beautiful and useful web populated by tools that are as easy to use as they are powerful. I'll be here at the bleeding edge... waiting. Come join me, space cadets.