The Browser Shuffle

It's interesting how things come full circle, and the disruptor eventually becomes the disrupted. Case in point is the Web Browser, where Mozilla just announced that Firefox 12 would have some important features that were previously endemic to Chrome. This brings me back to the point when Firefox eclipsed IE, forcing Microsoft to begin developing its browser anew.

So let's go back to 2002, when IE6 had effectively 100% of the market share. Sure, there were a few other browsers out there (Beta Mozilla, which had been in the midst of a rewrite for at least 4 years, and Opera, which seems to be a perennial underdog), but no one had more than a percent or so. Macs at that time shipped with an old version of IE that was essentially useless (5.2 I believe). IE was so dominant that Microsoft actually dismantled its browser team around summer of 2001 (they intended to integrate the web into the next version of their OS). I was an intern at Microsoft at the time, and heard through the grapevine that all members of the IE team were to be moved onto other teams or dismissed. This didn't surface publicly until a few years later, but it totally made sense at the time. Why innovate when you are the undisputed king and have the entire market share?

In 2002, I ran across Firefox for the first time. Or rather "Phoenix," as it was called back then (since it rose from the ashes of the Mozilla rewrite). Firefox made a number of improvements over IE, but the most important was tabbed browsing. To clarify, Firefox didn't invent tabbed browsing, but it provided the first good tabbed browsing experience. Before long, Firefox had replaced IE on my computer - I could just fire up one browser, and load my standard set of tabs. It wasn't perfect - it crashed a lot. But it had tabs, was faster, and the UI was much better.

By the time I got to Google in 2004, Firefox had gained a lot of popularity. Considering that IE didn't run on Macs and Linux boxes (which most Google engineers used exclusively), it was pretty much the only option. Most products were developed for Firefox and IE first, and Safari support was only added later. And, at the time, developing for a new browser often meant rebuilding the frontend from scratch, since all of the Javascript was different. I actual remember that my manager David Jeske suggested we build a high-level driver that implemented each operation on every browser. This was like 2005, about a year before the advent of JQuery, so we had to do everything manually (our implementation was much less elegant than JQuery). We built Google Page Creator for Firefox and IE. IE was a lot easier because it implemented contenteditable, allowing you to instantly make any element on the page editable. Firefox was harder because you had to do this manually using a bunch of trickery, and it also had a lot of bugs in its Javascript implementation (it wasn't version 6.0 like IE). Regardless, we launched these platforms - I can't remember if we ever launched for Safari.

Microsoft Backpedals
At some point, Microsoft realized that Firefox was actually a threat. Firefox had significant resources, and its Archenemy Google was even promoting it. It started to chip away at IE6's market share, and after a while, something had to be done. By 2005, Microsoft had announced that there would be a new version of Internet Explorer. This new version of IE had tabs (wow) and a new UI. It also had enhanced support for browsing standards and better security.

So, let's get back to Safari. At some point, buzz within Google started to turn towards Safari. This was interesting, because Google employed several of the core members of the Firefox team, but the word around town was that the underlying engine in Safari (webkit) was much better than the one used in Firefox. Safari was actually the first to implement contenteditable back in version 3, and it seemed to implement web standards much sooner than Firefox did. So, even though Google wanted to push Firefox as an alternate to IE, it also wanted to push forward the state of the web, and Firefox moved relatively slowly. So rumors circulated for a while about a Google-based browser, although no one really knew when this was going to heppen.

I don't think that any real steam picked up until after I left in 2007, although work was already underway on a Webkit-based browser that would run within Android. This is speculation on my part, but at some point someone decided that if Google was already working on a webkit-based browser for the mobile phone, why not also build a version for the desktop? There was already a team working on enhancements for Firefox (including Google Gears), so why not have them just build a browser? Google could continue to promote Firefox while building its own standards-compliant reference for the way a browser should work.

Chrome Dome
So Chrome came out, and it did a few things differently. First of all, it ditched monolithic releases for a rapid development cycle. Rather than releasing a ton of new features every year or two (a la Firefox), there could be a new release as often as once a month. So the first version was absolute garbage, but if you just waited a month, everything got much better. Second of all, it isolated Flash into a separate process, which prevented Flash's inevitable crashes from bringing down your entire browser, and each tab was in also separate process. It used to be that Firefox for Linux would just crash every once in a while, interrupting your browsing and bringing up the error reporting dialog. I actually remember one conversation that I had with a Google engineer in the early days of Chrome. He said something like "Chrome is already much better than Firefox for Linux because it crashes a lot less, so most of the developers at Google have already switched over."

Chrome also offered Javascript performance that absolutely spanked everyone else. Its performance was so good that everyone else had to fight to catch up, and this has spawned an arms race, where each subsequent browser offers better javascript performance than the best from everyone else. This was actually a good thing, because Javascript performance used to be pitiful (even on fast computers), and the performance gains have trickled down to mobile platforms, which are much more performance-constrained. You can now run Javascript-rich web applications on the mobile platform, where a few years ago this was impossible. I remember running a Javascript-heavy web app that I wrote on a prototype Nexus One, and being amazed that it actually worked as written.

Chrome also had a few features that didn't work that other browsers lacked. It included a home screen, which showed you the most recent sites you had opened, and later the chrome web store. It also offered a New Tab button, which allowed you to open a new tab without using the keyboard or a menu (my muscle memory causes me to instinctively hit Command-T, but an older generation needs this). Also, there was an X on each tab that allowed it to be easily killed (without right clicking). Overall, the UI was a bit more polished and easier to use than the browsers that came before it.

Firefox Plays Catch-Up
Firefox slowly implemented the performance changes, making its javascript engine faster, and they even did the process isolation stuff, improving its stability. The developers also focused on supporting web standards, and eventually started to catch up to Chrome and Safari. Over time, Firefox became better and better, partially because Mozilla did switch to a rapid development cycle. However, every time that I fire up Firefox, my browser feels somewhat clunky. Everything is less rounded and slightly less smooth than Chrome, and I find myself switching back.

So, going full circle, Firefox just announced that they were implementing the home screen and the new tab button in an upcoming release. This is, as when Microsoft implemented tabbed browsing, and admission that they have been eclipsed by the next new thing, and that they are scrambling to catch up. I wonder what the next new thing to come along will be. While I'm sure that the desktop browser will continue to evolve, I'm fairly certain that the biggest improvements will involve mobile browsers. Even though their performance is tolerable (in most cases), mobile browsers still provide a second-rate experience. Switching between windows is clunky - I rarely switch tabs on my Android phone, and when I do, I need to go to a separate screen. iOS 5 addresses this on the iPad by offering a PC-like tabbed experience, as does the browser on MIUI. I'm pretty sure that there will be some major improvements in the future that are better-suited for a smaller screen. With the pixel densities that we are now seeing in mobile phones, it is possible to display more information than ever before. This seems like a ripe opportunity for some disruptive innovation in UI design.

Find discussion of this post on Hacker News