Recently, Microsoft released Internet Explorer 8, which boasted much better standards compliance than previous iterations of the browser. While it passed the Acid2 test, IE8 failed miserably in the Acid3 test, and many people criticised Microsoft for it. Microsoft Australia's Nick Hodge has stated that Microsoft purposefully decided not to support Acid3, because the test tests against draft standards.

I think this is a very positive sign that MS is finally treating it's position as market leader responsibly. They are conforming preciesly to the published standards of the W3C and no more. This leaves the W3C free to make ammendments to their draft standards that won't conflict with the most widely deployed implementation.

Except there's plenty of stuff IE 8 doesn't support that's a recommended standard. DOM level 2, for example. Most notably, the event model, and everything based off it. This stuff was promoted to "recommended" status back in 2000.

There's hardly anything in Acid3 that isn't a recommended standard.

Besides, the W3C won't generally promote a standard from proposed to recommended until there are a couple of implementations of the thing out in the wild. Someone has to step up and implement them, so the bugs can be worked out. Although, from past history, Microsoft are probably the worst to do it.

The issue with IE 6 wasn't so much that it implemented incomplete standards. It was that it didn't implement even the proposed standards correctly, passed those off as finished implementations, and then wasn't updated for five years. Developers were forced to work around it, causing all kinds of havoc when Microsoft eventually did change some of this behaviour.

Compare that with the approach used by everyone else. Anything non-standard is marked with a browser-specific prefix. So are implementations of draft or proposed standards, or implementations of recommended standards that don't entirely match the behaviour expected. Anything unmarked is generally completely compatible between all those browsers (assuming they all implement it), and anything marked is a big warning sign telling developers not to rely on it, because it's behaviour may change. Or it may disappear completely.