Page 1 of 3
Microsoft have come up with a non-standard standard way to implement standard non-standard behavior.
To be sure, they worked with people from the Web Standards Group (WaSP) and other developers to lend some air of legitimacy, but basically what they've done is just what I said above. To understand what this is all about and what it means, we need to back up a little and take a look at some history.
Once upon a time, there was a little web browser called Netscape. The creators of this browser had the audacity to dream that one day the operating system a computer was running on would be irrelevant, because everything thing you did with the computer would be done via the web browser, using applications out in the World Wide Web.
Microsoft were thoroughly committed to the desktop; centralized computing resources, running rich, fat-client applications on powerful machines sitting next to the user. This was the antithesis of the Netscape vision. Realizing that the Netscapers were starting to actually get a hold in the world, and fearing the loss of their dominance, Microsoft set out to crush Netscape using their own web browser, Internet Explorer. Over the next half-decade or so, they did exactly that. They did it so effectively that, by the time Internet Explorer 6 hit the scenes, there really wasn't any other browser to use (at least, not on Windows). To this day, Internet Explorer accounts for between 60% and 95% of ALL web browser traffic on the web (depending on whose statistics you look at).
Once IE 6 hit the streets, though, Microsoft got complacent, and pretty much forgot about the product (at least, if their development efforts are anything to judge by). Oh sure, they continued to support it with patches and bug fixes, and even wrote tools to automate it, extend it, and develop products that worked with it or on it, but they didn't really fundamentally CHANGE it in any way. This includes making it compliant with web standards (which, in the mean time, had continued to evolve well beyond the capabilities of IE).
Now, don't forget that Microsoft had a stranglehold on the web browser market, by virtue of the fact that Microsoft dominated the desktop operating system market. Since the vast majority of the desktops were Windows (which came with Internet Explorer) the vast majority of browsers being used were Internet Explorer. As a consequence, nearly everything on the web was coded to work with IE; the practical outcome of this is that there was very little in the way of NEW web content development that occured without the blessing of Microsoft, since it had to work in IE.
Microsoft wanted to control the web. This isn't news to anyone, and this doesn't make MS evil, per se. MS is a company, and the purpose of a company is to make money for its shareholders. The most efficient way to make money is to be the gatekeeper for something that everyone wants to use. With MS basically owning the desktop computer market, that made MS the effective gatekeeper for the web.
MS had made IE 6 somewhat compliant with the web standards of the time. Some of the lack of compliance may have been due to concious design choices, and some of it may have been due to a simple misinterpretation or misunderstand of the standards (which were rather vague back then; indeed there are still places where there is room for interpretation). However, the result of this was that IE 6 implemented a 'standard' mode which really wasn't, but at least tried to be, and a 'quirks' mode, which tried to be backwards compatible to the even less standard IE 5.0. (Note here that 'less standard' is a relative term; IE 5 was much closer to being standards compliant that IE4, which was much better than Netscape 4, and IE6 was better than any of them.)
When Microsoft released IE 7, they discovered something rather embarrassing: it broke a lot of stuff written for IE 6. To their credit, MS DID improve the standards compliance of IE7; though it still lacks compared to FireFox or Opera, it is much improved over IE 6. However, when IE6 was introduced, it implemented two modes of operation: 'quirks' or 'standard'. In 'quirks' mode, IE 6 tried to render pages the same broken way that IE 5 did, in order to keep from breaking a bunch of pages written for IE 5. In 'standards' mode, it tried to render something close to the web standards, and did it mostly ok, though it still contained a number of really horrid bugs that required ugly work-arounds on the part of the web developer if he wanted to build a standards-compliant page. The different modes of operation would be triggered by the inclusion of a DOCTYPE declaration at the beginning of the page. Existence of the DOCTYPE declaration (which was relatively new) would be interpreted as meaning that the web page author had a clue and wanted standards-compliant rendering, whereas absence of the declaration would trigger 'quirks' mode. Things got a bit more complicated from there, as evidenced by this chart, but that was the heart of the thing, and that remains in use to this day. In fact, that's part of the problem