If you came to this website when I started blogging back in 2009, it’s probably because you were a web developer who was into the then-cutting-edge technology that was HTML5 and CSS3, but had to deal with the COBOL and 8-Track Tape of the browser world, Internet Explorer. I loved experimenting with new web standards (and still do), and it really bugged me that in my client work I couldn’t always use them because this browser, which at that time did not receive an update for five years, was holding me back.
So I spent a lot of time bending IE to my will. I wrote articles on how to implement CSS3 features like text-shadows, custom cursors, viewport units and a slew of other then advanced CSS properties in the Cthulu of web browsers. I even made it scream in pain while I forced it to understand CSS transforms (and I too, moaned in agony, since it required a lot of matrix arithmetic combined with understanding the awfully documented voodoo that was Internet Explorer’s Matrix Filter). Developers seemed to like reading these articles, and some even thought I was a developer to admire (of which I was humbled to read about). I used to joke that if I didn’t have to worry about IE, I could use the enormous amount of creativity and brain-power supporting it to something more worthwhile, like curing cancer.
So, even though I haven’t worried about Internet Explorer for over seven years now, Microsoft has said that IE is not supported anymore and is effectively dead. While I join you all in cheering and dancing on its grave after the years of PTSD that Internet Explorer gifted us developers, I want to take a step back and look at its legacy. Surprisingly, there were some good things that came out its existence (really!).
Surprisingly, It Started Out As A Good Browser
If you were a web developer back in the late nineties, you will remember the first browser wars: on one side was Netscape, the company that really made the web mainstream with the first easy-to-install and use web browser (I know you Mosaic fans may have a lot to say about this sentence in the comments below … have at it). On the other side was Microsoft’s Internet Explorer. Netscape was the market leader in browser tech until Microsoft really started focusing on Internet Explorer with version 3.0. IE, surprisingly, was somewhat interested in web standards, and was the first browser to support CSS (eventually IE 5.5 for Mac would have the best CSS support of any browser in the late nineties/early 2000s). On the other hand, Netscape tried to implement their own stylesheet format (JSSS) instead but had to reverse course in the last minute and hack in CSS support in Netscape 4. As a matter of fact, Netscape had to do a lot of hacking to deal with their new serious competition from Microsoft, and Netscape 4 became a huge unstable mess.
This is not to say Microsoft followed web standards completely. They definitely did things their own way. Some of these decisions were great for web developers. Ever use .innerHTML
? That was an IE thing! Netscape users had to do a convoluted hack to do the same thing. Drag and drop, CSS custom fonts, vector graphics, AJAX … all of these were implemented in IE first before Netscape or any other browser (yes, Netscape did have downloadable fonts, but there were no good tools to create the TrueDoc fonts it required and this functionality was deprecated in later versions of the browser). All of these originally proprietary technologies later became part of official W3C web standards (even parts of IE’s vector graphics solution, VML, were incorporated in the SVG standard). IE’s JavaScript and CSS debugger, I believe, was the first one available on any browser (if it wasn’t, it was the first one I had ever seen) … and for the time of its release, it wasn’t half bad.
Netscape fell behind and eventually died. And that’s when things started getting bad for the web.
The Stagnant Years
The Browser Wars between Netscape and Microsoft have a lot of common with the Space Race between the United States and Russia. Before the Soviet Union fell in the early 1990s, the U.S. had to make sure it looked technologically superior to the Russians. It poured a lot of money into the space race and scientific advancement. It wanted to be, and arguably was, the winner of the space race. When the U.S.S.R. fell, it didn’t have to worry about that anymore, so it stopped investing in space. Its space program became a shell of the greatness it once was.
The same happened with IE. With Netscape out of the way, IE became stagnant. IE6 didn’t receive an update for five years. New web standards were invented (SVG, HTML5, CSS3) and older ones improved upon (the official W3C Document Object Model being the most obvious), but IE didn’t bother implementing them. Why should they? They won.
There were browsers like Firefox and Opera that implemented newer web standards, but the vast majority of users were using IE. A lot of developers, if they wanted to do cross-browser web development, would use Flash, since it ran in all browsers that supported plugins. I, however, bet on JavaScript as a platform, and made a JS library called helpers.js that had an API to implement advanced browser functionality in an cross-browser way (the source of helpers.js is still available on my website for those who are interested in how it worked … it does show what we had to do to make JavaScript work in all browsers back in the day). Betting on cross-browser JavaScript to do web applications turned out to be a good strategy for me considering what happened next.
Finally, Competition Arrived
A few things got Microsoft to take the modern web seriously again:
- Google Chrome: with the invention of Gmail and Google Maps, Google was betting the farm on the web standards as a platform and wanted to innovate on it. It knew it needed to implement its own browser to get these new features to market, and improve the performance of client-side web technologies, since Microsoft wasn’t going to do it.
- iPhone: if it wasn’t for Apple, web developers may have been still using Flash as the cross-browser web platform. Because Apple refused to allow Flash on iOS, it needed to make sure that web standards were updated to match Flash’s features.
- The Web Standards Project: although established in 1998, its work to persuade all browser manufacturers to follow web standards ensured Microsoft followed the more established ones in the IE6 era. Without their work, IE might have fallen more behind than it did (a scary thought indeed). Their work was important for the future of web standards and can’t be overstated.
- Security: It seemed a month didn’t go by unless some security expert uncovered yet another exploit in IE6 that a hacker can use to access your computer or steal your data. Many of these flaws were because of ActiveX, IE’s plugin architecture designed to allow developers to run native code in the web browser (what could possibly go wrong?)
How Developers Transitioned
With IE now having serious competition, developers had to worry about the legacy of IE6, since there were still many users who refused, or didn’t know how, to upgrade this ancient browser (this was the era before browsers auto-updated themselves). Developers wanted to use up-to-date web standards, but were held back by this beast. But a great thing happened: web developers took control of the platform:
- jQuery became the easiest way to create what was then considered modern cross-browser web applications. Developers didn’t have to worry about the differences between IE’s older proprietary DOM vs the official W3C DOM; jQuery implemented a standard API that would bridge the two together (and in a much better way my own helper.js did).
- Developers were excited about web standards again. A new generation of web developer bloggers like Paul Irish, Divya Manian, Chris Coyier, Lea Verou, Sara Soueidan and countless others blogged, touted and promoted new web standards. People like me, CSS3 Pie’s Jason Johnston and the OG IE developer Dean Edwards created polyfills, shims and hacks to get old IE to behave like a modern browser … sort of.
- Progressive Enhancement became more commonplace. Although the term was coined in 2003, this strategy really took off in the post IE6 world. A lot of the time, it was okay to not have a feature in an older browser as long as there was a workable fallback, like how escalators can become stairs if they break down.
Why IE’s Death Is Bittersweet For Me
Don’t get me wrong: IE’s death is something I am really happy about. I am glad we don’t have to do any more hacks or fixes to support this browser (and I really haven’t had to for a while). But there are two reasons why I still have a soft spot for the clunky lug that is IE:
- I miss the challenge of making something like CSS transforms work in something that wasn’t designed for it in a performant way. I love hard technical challenges … and you gotta admit, IE is technically challenged :-).
- The stagnation of IE made people care about web standards. When web standards weren’t being followed because the dominant browser didn’t care, competition was created. When developers saw what a modern, standards-enriched web stack can do, they cared about them, blogged about them, evangelized them, and helped create new standards. We now have an amazing eco-system because of that passion. It took years of lack of web standards for technologists to realize how important they are. Ironically, we have IE’s apathy to web standards to thank for the front-end developers noticing them and not taking them for granted anymore.
As I said earlier, I always joked I could do something way more worthwhile if I didn’t have to worry about IE. In my next blog post, I will be discussing a major project that I have put together for the last two years to promote web accessibility. I hope it is as successful as my blog posts that promoted making web standards work in IE when I first started blogging. Stay tuned for my next blog post for more.
0 responses so far
Give Feedback
Don't be shy! Give feedback and join the discussion.
Please Note: If you are asking for help using the information on this page or if you are reporting a bug with the code featured here, please include a URL that shows the problem you are experiencing along with the browser/version number/operating system combination where the issue manifests itself. Without this information, I may not be able to respond.
denotes a required field.