During the browser wars of the late 1990s, Internet Explorer edged out Netscape Navigator as AOL’s choice of browser. Discounting any business reasons, many people attributed this to a design choice made by IE: it was componentizable. While the Department of Justice focused exclusively on the extent the browser itself could be decoupled from the operating system, developers worried more on whether the individual pieces (networking, HTML rendering, user interface, …) could be pulled apart, modified and reassembled into different configurations. This was key for AOL and many other vendors who wanted to create a branded web browser by slapping a different “skin” on top of the same pieces under the hood.
In fact the ease of integration for IE helped spread the web-capability into all Microsoft applications. That Outlook could host HTML email or Excel easily import tables from a web page using point-and-click process (simplifying the problem of screen scraping, before the idea of semantic web could take off) was not a far stretch. But the fact that Visual Studio doubled as a full-fledged web browser suggested things were going too far– a contemporary twist on the joke that every application written at MIT grows until it can read email. Soon every application contained a tiny embedded browser somewhere, a tradition that continues with MSN/Live Messenger today for example.
Firefox has co-opted this capability in a very interesting way, to its own benefit. The IE-tabs extension for Firefox allows viewing one or more tabs as an embedded IE page by hosting “Trident” (aka mshtml.dll) the HTML rendering engine. Net result is an option for 100% compatibility with IE.
This is very interesting because interop in a competitive market always helps the small fish. In a world where network effects are significant, being compatible with the market leader is often essential for survival– and raising the cost of interoperability is very much in the interest of the market leader. This is why OpenOffice spends a lot of time trying to reverse engineer and implement Microsoft Office document formats, but not the other way around. Web browsers are not like telephones, instant messaging clients or productivity software in this way, because the concern is not about pairwise interop. But there is an indirect effect: when most users have Internet Explorer, most websites will be optimized for IE. This is a completely reasonable business decisions for a vendor, not a conspiracy. When 90% of users are on platform Foo, the efficient web designer will focus his/her resources on making their service function well on platform Foo. There is a point where investing in the others is justified, but it will always take a back-seat to the primary revenue generator. This is the benefit of enjoying the market leading position: other software has to emulate the leader, not the other way around.
Granted the existence of standards such as HTML, Cascading Style Sheets, DOM etc. simplifies this somewhat. In principle it is no longer a moving target because all clients are trying to implement the same specification, instead of one group making this up as they go along and everyone else a passenger along for the ride. In reality, this vision fails because:
- HTML standard gives plenty of leeway for conforming implementations to create different user experiences based on the same document
- Web browsers are far from perfect in their conformance to standards
- Each browser defines a different extensibility framework such as Flash, Java, ActiveX controls etc. some of which are highly dependent on the underlying platform, eg the operating system.
Outcome is compatibility problems. Large websites often have the resources and expertise to develop and run Q&A cross platform, so they have no problems. It is often the smaller scale operations, hobbyists or niche audience hang-outs that have spotted history of browser compatibility. By a stroke of luck they could work just as well in Firefox, Safari, Opera etc. Equally like they will have minor visual blemishes, missing functionality or flat out not function at all. This is where the IE Tab add-on comes to the rescue for Firefox.