Compatibility mode in IE8
I have had my hands on the release candidate of IE8 for a couple weeks. One thing that will become obvious is that their are three distinct modes for rendering. Like other modern browsers there is a Quirks and Standards mode. Microsoft also added a compatibility mode which is intended to emulate the IE7 engine. Since IE7 is a lot more like IE6, I.T. departments will be a bit more likely to upgrade their clients. These I.T. Departments are the strongest force holding back the deprecation of IE6 since a lot of them are using internal web apps that were not coded with standards in mind and will break on a modern browser. A developer of a website can add a meta tag to their page that will instruct IE8 to run in compatibility mode for the version that a page was designed. Since it may not be practical to update every site to have this meta tag in the head, a configuration is available in the IE8 browser to enable compatibility mode on all web sites or on site specifically added to a list in the preferences. All of these are commendable steps that Microsoft has taken to move their browser and users to the world of open standards without breaking the IE6 hold-out-internet.
Here is where the headaches begin: Microsoft has even gone as far as letting users opt in to compatibility mode during the install process of the IE8 browser. The choice is presented to the end user and is worded in such a way that the user would feel scared to not choose compatibility mode. Since this choice is presented as a simple radio option, there is no opportunity to restrict compatibility mode to a list of domains, like in the preferences. The compatibility mode will be used for all pages. This means that potentially most of those that go through the upgrade process from IE 6 or 7 to 8 will end up rendering in an IE7-like state, and unless your browser checks the user agent string for the mode, your hacks for IE7 will not exist. I am not proud to say that I have a few IE7 hacks though I have restricted them to IE7, so that any other browser will use a standards compliant default CSS set.
I have discovered one work-around. Microsoft does provide a meta tag that will instruct IE to always render in the latest standards mode. Using this should force your browser to behave. It would also be smart to ensure all hacks for IE6 and 7 are restricted to the intended version only with selector specific hacks or conditional comments. I do this by writing the user agent version as a class in the body tag and writing my selectors against that. Also remember to check your page using the IE8 developer tools, as they will show you if your site is rendering in the proper mode.