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?

Most probably backward compatibility. IE is the oldest of them all.
–
Manoj RJan 22 '13 at 13:09

17

I would guess it is the culture at Microsoft not to follow universally accepted standards in the attempt to create their own standards and their own little world. They have a history of doing this in everything from network protocols to software development environments.
–
maple_shaft♦Jan 22 '13 at 13:15

Great. I spend 15min typing up an explanation of how MS choose to put their efforts with IE into tight OS integration via ActiveX, instead of R&D in CSS/HTML/JS, only to find the question closed when I return to paste in my Magnum Opus :(
–
GrahamJan 22 '13 at 14:41

3 Answers
3

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.

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.

@Bart I doubt anything like an actual member stating such actually exists, I believe the w3c box model is pretty good evidence that they did this to some degree.
–
RyathalJan 22 '13 at 14:04

2

In that case, I would hesitate to ascribe wilful intent for incompatibility to the W3C. Then it could just as well be that the W3C thought that IE would be conforming or that the difference was small enough that IE could be converted to the standard easily enough.
–
Bart van Ingen SchenauJan 22 '13 at 14:16

1

@Bart, IE's main competitor in the first browser war, Netscape, wasn't considerably more conformant with W3C. It wasn't until later versions of Mozilla and early Firefoxes that a reasonably conformant browser was available. But those browsers post-date IE6.
–
Billy ONealJan 28 '13 at 7:37

@BillyONeal: Thanks. That strengthens my belief that W3C did not set out to bash IE, unless they wanted to bash every browser of that era.
–
Bart van Ingen SchenauJan 28 '13 at 7:55

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.