Here's a fascinating post from Chris Wilson, who is Platform Architect for Internet Explorer. In it, he details Microsoft's laudable attempts to follow browser standards, and the difficulties it faces. Why? Because too many users expect new versions of Internet Explorer, which comply better with Web standards, still to be compatible with the older, proprietary tweaks that Microsoft used in the past, for example in Internet Explorer 6:
developers of many sites had worked around many of the shortcomings or outright errors in IE6, and now expected IE7 to work just like IE6. Web developers expected us, for example, to maintain our model for how content overflows its box, even in “standards mode,” even though it didn’t follow the specification – because they’d already made their content work with our model. In many cases, these sites would have worked better if they had served IE7 the same content and stylesheets they were serving when visited with a non-IE browser, but they had “fixed their content” for IE. Sites didn’t work, and users experienced problems.
In short, there was an expectation that even under standards mode, IE would keep working the same way. Because sites expected IE6 behavior, the DOCTYPE switch failed to protect compatibility in the real world when we changed behavior under standards mode to become more compliant. We realized that “Don’t Break the Web” should really be translated to “Don’t change what developers expect IE to do for current pages that are already deployed.”
This is a situation where Microsoft must just bite the bullet and “Break the Web” - or, rather, “Break the Already Broken Web” - to force users to re-code their sites to comply with open standards. Until Microsoft takes this step, it will always be trapped, at last partially, in the web – and Web - of its past. The difficulties the company is having with this balancing act also shows why users should always follow open standards, because they can't rely on proprietary elements being preserved from version to version, and are bound to end up having to re-code at some point.