Earlier today I was working on a website at work that had severe performance issues in Internet Explorer. The site has a healthy amount of Javascript, a significant portion of which was actually written to overcome various bizarre shortcomings of IE6. For example, IE6 doesn't support the ":hover" pseudoclass for any element that isn't a link, which frankly is absurd, because it almost seems deliberately omitted, since somewhere they would have to check if the element was a link or not. Anyways so every page of this site was taking as much as 35 seconds to fully initialize and run all of the startup Javascript code. This, needless to say, was disconcerting for me, and I tried in vain to optimize my code.
Just then, something very mysterious happened. I reloaded the page, blinked, and it was initialized. Everything was fine. I had written some code to time the hardest parts of the Javascript code, and where these were reading 35ish seconds before the entire page was now loading in less than a second—still nowhere near on par with modern browser performance but quite tolerable. I was ecstatic even though by all outward appearances it appeared as though my little Javascripts had been touched by the Flying Spaghetti Monster Himself somehow, and this was a little alarming to me. At this point my surprise turned to incredulity when I checked the changes to my files; there were none. I had added a superfluous semicolon to one function but when I removed the semicolon the performance was the same. The website had unexpectedly made a 7,000% speedup, and I was mighty suspicious of this. I had a colleague confirm it and he couldn't. The site was just as slow as ever on his machine. I was nonplussed, to say the least.
Which brings me to the point of this little entry. Internet Explorer 6 is eightish years old, as obsolete as a program can be when so many people still use it. That number is diminishing rapidly, but Microsoft recently announced they will continue to support it until 2014. This is terrible news for web developers, because IE6 provides what I would generously call an inferiour web experience by today's standards. It's two versions behind now that IE8 is stable, and it's really showing its age. Yet, because so many corporate users have to use IE6 at their job, it's still vital to make sure any website I build works in IE6. I get that. But what if we change what it means for the website to "work"?
Here's what I propose. Every user, no matter what browser they're using from Chrome to IE6 to godforsaken lynx, should be able to read and view all content, but that doesn't necessarily mean that they need to be able to see animations or transition effects or fun stuff like that. It's extremely difficult to get these kinds of things to work well in IE6, and rather than burn up so many man-hours trying to make the experience exactly identical, I believe it would be more beneficial to only assure that IE6 users can view all the content. If the styles are messed up and the website looks terrible, that's obviously a huge problem, but if clicking that photo gallery link opens an iframe instead of fading the page to a lightbox, I don't think that's necessarily the end of the world. In circumstances where you have a browser as inefficient as IE6 is, particularly at manipulating the content of web pages, you have to use a very light touch lest you introduce too much latency. So my idea is to produce the CSS and Javascript in such a way that semantic data is preserved, but the site experience degrades gracefully along with the age of the browser. IE8, Firefox, and Chrome users may get super fancy animated transitions between elements on the page, and various interactive things, but IE6 users will get just the page and its contents, laid out statically to be just as useful if not as delightful.
The moral of this story is that IE6 users have the crappiest browser still in use in the world. Absent real user testing I can't know this but I imagine by now they're accustomed to the web looking strange. Build your site in such a way that it's still usable to IE6 users, even if that means generating a different experience for them. Alright. Time to relax, space cadets; I'll talk to y'all later.
Showing posts with label internet explorer. Show all posts
Showing posts with label internet explorer. Show all posts
12 September 2009
09 March 2009
Not as Many IE Woes?
Mattie had a look at my web app I've been working on in his virtual machine and it ran just fine. Now, on the whole, this is very good news, because it means I don't have to be as concerned about IE6 users. At the same time, though, it also means that I've basically wasted half the time I've spent optimizing and that I've committed a cardinal sin of programming: optimizing prematurely. Even though I believe that it's understandable I didn't run around the office trying it out on everybody's virtual machine, I still feel pretty foolish having not asked a single coworker to have a look when I discovered something anomalous. Live and learn, I guess.
I didn't get content until today anyway so it all works out. I stayed a little late tonight getting the first block of it into the layout, but when I merged my files with another developer's our versions were in conflict. After a cursory attempt to rectify the conflict I decided to go home. I had already attained Last Developer Standing status for the day and I needed Fred around to do the merge anyway. Tomorrow, then. Wish me luck, space cadets.
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.
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.
tags:
development,
ie6,
internet explorer,
programming,
web design
Subscribe to:
Posts (Atom)

