A while back, Microsoft stunned the standards world by responding to developer objections and agreeing to have IE8 render like IE8 by default (and yes there are many things in that sentence that should be wrong, but aren't).

Nobody could quite believe that Microsoft would really do something that genuinely supported web standards, especially when they were reluctant to do it.

Sadly the disbelief was justified - Microsoft have now done a backflip on their backflip. IE8 won't always default to rendering in standards mode after all, interoperability principles notwithstanding.

The latest idea is that IE8 will render in IE8/standards mode by default for general web pages; put a "broken page" icon on the toolbar when in IE8/standards mode; default to IE7 mode for intranets; and let the user change the defaults if they want to.

Because that's so much simpler than having IE8 render like IE8 unless explicitly told to do otherwise.

A couple of links if you hadn't heard:

broken page icon?

OK, so technically the broken page icon means "go into compatibility view". It replaces the more accurately-named "Emulate IE7" button from the previous beta. But that's not really what it looks like:

Screenshot of the Compatibility View icon

That looks like "broken page" to me. Which is particularly annoying as it will only be shown when the page is being rendered in standards mode; and it will be placed in the address bar rather than somewhere like the "Tools" menu.

it's all about the intranets

Obviously I am not surprised by this development in the saga. I said last time around that X-UA-Compatible is all about 'not breaking bad web apps' and this just confirms my suspicions.

The only sites that will render in IE7 mode by default are those accessed by local URLs like http://intranet/. Of course if you can access your intranet using both http://intranet/ and http://www.intranet.real.domain/ then you're going to see it in two different rendering modes.

So I guess you're going to have to forward one to the other or set the meta tag/HTTP header with the correct rendering mode. Which begs the question why this change was useful in the first place, if intranet developers still end up having to modify settings somewhere along the line. Why not leave things as they were - get intranet developers to just set X-UA-Compatible and be done with it?

But instead Microsoft decided to modify IE8's rendering mode selection process again.

Ok, so it's just intranets. This isn't so bad, right?

Not quite.

the defaults aren't

The nasty little rider in this latest announcement is the fact that users can now 'apply compatibility view' for all websites:

Screenshot of IE8 beta compatibility view settings panel

That user choice (and display of the broken page icon) can be overridden by developers using the meta tag or HTTP header. That makes sense, since the developer should know for sure if their site will work in IE8 or not.

But... think that through for a moment, and you'll realise we're back to square one. We now have to modify all our sites, all the time, since users can override our chosen rendering mode if we chose the default rendering (that is, we wanted IE8 to render as IE8 like Microsoft promised last time around).

If we build a site that works in IE8 and then leave things to the default, IE8 users with 'display all websites in Compatibility View' selected will see the site rendered like IE7.

Awesome, isn't it?

confusing for users

I really do wonder what the average user is going to make of this.

I can't fathom why Microsoft thinks the average user is going to know when to click the busted browser button. It's essentially asking the user to understand the finer points of standards compliance and rendering modes, when most users still seem barely aware that the blue e icon on their desktop is not actually "the internet".

Average users shouldn't need to select rendering modes! They should be able to just browse, letting developers and browser makers sort out the details.

But if the user is presented with the option at some point I can them going for the "safe" sounding option of enabling "compability view" for all websites. After all... it sounds kind of like a good thing, right? Compatibility is good, yeah?

so where does this leave developers?

Well, we have two options if we want to build sites that work in IE8, in IE8 rendering mode:

  1. Leave things to the defaults, and ignore users who've set IE7 mode to be on all the time.
  2. Explicitly set our sites to render in IE8 mode, even though we did the right thing and shouldn't have to fart around with X-UA-Compatible.

Logically I think most of us will go with Option 2, since you don't want a user to think your site is broken because they're seeing the "broken site" icon; or worse still have the page actually break because the user is applying the wrong rendering mode.

no real surprises

We are back to what Microsoft wanted to do in the first place. We have to specifically choose a rendering mode for IE8, since there's no reliable default under this new model.

But Microsoft can still say that by default an internet page will render in IE8 mode. They can still pay lip service to interoperability, even if they're not really getting into the spirit of the thing.

It's not a hard equation really: Microsoft makes money off intranets, but doesn't make money off web standards. So, they're always going to protect their intranet interests over web standards considerations.

It's a little sad, since for a while there it looked like Microsoft was actually responding to developer feedback. But it's not surprising to find out that you can't trust a multinational corporation to keep a promise it didn't want to make in the first place.