Internet Explorer has a number of proprietary features that aren’t found in other browsers as well as a number of incompatibilities with the standards. Does anyone have an idea what is the cause of those incompatibilities?
For example: I develop a browser extension using Crossrider framework. The extension works well with all combinations of [Windows | Mac OS | Linux] and [Chrome | Firefox] but it does not work with IE because IE handles $(window).height()
and $(window).scrollTop()
a bit differently.
Is there a known thorough analysis of that situation, or an interview with an insider that would clarify the cause? Is it the corporate culture, the design process, a QA flaw, or some horrid unknown legacy?
10
Why is Microsoft® Internet Explorer® incompatible with other browsers and published standards?
- To add features that other browsers don’t have
- When programmers write web pages that use IE-only features, the code will not work on other browsers. This encourages end-users to view those sites in IE (and thus more people use IE, and since it only runs on Windows, more people use Windows).
- Microsoft tools (FrontPage is the most famous for this) tend to produce code that only works on IE, or works best on IE. While this promotes #2 above, it deserves its own bullet because the next developer to work on that web site or web application is now has to use the same Microsoft technologies that were originally used produce it, or have to rewrite the entire project in a different technology.
Corporate intranets are particularly vulnerable to this strategy because they provide an environment where all users are on the same browser (until a new version comes out). Also, if a site is not customer facing, there will be no budget for even the tiny cost of supporting multiple browsers. Over time, the legacy intranet sites at a company prevent that whole company from abandoning IE (or even a specific version of IE) for another browser.
Microsoft’s approach is a double-edged sword. On the one hand, it has produced the XML/HTTP asynchronous request functionality which made AJAX possible (and other positive innovations) which other browsers quickly copied. But Microsoft also ends up producing versions of IE which are incompatible with each other, thus biting the very developers who played the most into Microsoft’s plans.
My favorite example of intra-version IE incompatibility is Micrsoft’s own IE6 Countdown campaign where they encourage people not to use their own browser. The theory being that Microsoft can encourage people to upgrade to a more recent version of IE, whereas others who shout “IE6 Must Die” are more likely to encourage users to use another brand of browser instead of IE.
In short, it’s a fairly successful market-domination strategy by Microsoft which has sometimes hurt and sometimes helped the rest of the industry. For myself, I try to produce only validated, standards-compliant HTML that is tested on the latest version of any browser with 2% or more market share (plus the latest 3 versions of IE).
Microsoft and Internet Explorer are registered trademarks of Microsoft corporation in the US and/or other countries.
1
As usual, the question is one of incentives. If you need to know why something actually happens (as opposed to what people claim, or would like to believe), follow the money.
Imagine the situation where you have a comfortable market position in a key technology (personal computing). The value of networks is to a large degree in its size, so you want to be able to reach as many users as possible with your products. Since they are very probably already using your system, it is worthwhile to introduce new features and spend effort only on backwards compatibility with your own products. Compatibility with competitors’ products is lower on the priority list, since it doesn’t create as much value potential for yourself; in fact, it can cost you value if competitor’s products become interoperable enough that somebody could do without your system altogether.
Note you needn’t even posit any conscious malice on the part of developers or management here. Doing your own thing and promoting your own protocols, standards etc. rather than contributing to general ones is simply natural behaviour for a dominant player, and probably unavoidable without very stringent legal measures that the public in general is apparently not willing to authorize. In fact, most of what I’ve heard and read about the mindset at Microsoft leads me to believe that most of their people genuinely, honestly think that their products are so wonderful and superior that only unpleasable malcontents would want to use anything else in the first place, and that they would do their loyal customers a great disservice if they spent effort on interoperability rather than ‘innovate’ cool new stuff.
Causing pain to web developers who do have to support different products is simply a side effect of this attitude. It seems very callous and even evil to us outside practitioners, but I suspect that many of us would take the same stance if tables were magically reversed.
The grief IE causes is a 2 part problem, both of them really stem from the fact IE won the first browser war. It used to be the best and most advanced browser, but they sat idle for a long time and are now playing catchup, but they have a huge legacy burden now other browser has, because many companies have millions invested in internal sites that only work on a specific version of IE. MS would be committing suicide if they didn’t make the transition between versions as pain free as possible. Second because they won the first browser war and were approaching total monopoly the W3C actively wrote standards that conflicted with existing IE functionality in an attempt to remain relevant as a standards body as far as browsers were concerned and thanks to newer browsers that followed those standards it worked.
6