opt-out version targeting is spam
So. There's been an idea. IE8 is going to pretend to be IE7 unless you explicitly ask it to be IE8. Sure, that makes... absolutely no sense.
[Update 2008.03.05 - Microsoft has now reversed this decision. See the 200ok weblog: IE8 to default to IE8 after all, hell chilly.]
You probably already know what I'm talking about. Let's do the run-down:
- First we have A List Apart: Articles: Beyond DOCTYPE: Web Standards, Forward Compatibility, and IE8 where Aaron Gustafson explains that IE8 will look for a <meta> tag or HTTP header defining the browser version a site was "built for". It will then apply one of several rendering modes to try to keep sites built for old versions of IE from breaking when a newer version of IE is used.
- Then Eric Meyer describes his process of coming to accept the idea, even if he has some fairly obvious reservations: A List Apart: Articles: From Switches to Targets: A Standardista's Journey
- It is important to note that only some members of WaSP were involved in the decision, others were emphatically not: Microsoft’s Version Targeting Proposal - The Web Standards Project
- IE Platform Architect, Chris Wilson, posts details and reasons at the IEBlog: IEBlog : Compatibility and IE8. It's important to note that Chris is also taking the time to respond to comments, including one comment where he says
I'm open-minded, and I'm listening. I didn't like the concept when it was first suggested; however, the evidence has proven to me that it's necessary...
- Jeremy Keith's position is clear: it's a bad idea as proposed due to the opt-out requirement - Adactio: Journal—Broken
- Anne Van Kesteren suggests we simply ignore the whole thing by setting our servers to
IE=edge
: The Internet Explorer lock-in - Anne’s Weblog - Mozilla hacker Robert O'Callahan suggests that the Firefox crew will be unlikely to enter into the massive bloatware and maintenance overhead of maintaining old rendering engines: Well, I'm Back: <META HTTP-EQUIV="X-BALL-CHAIN">
- Opera's Chief Web Opener, David Storey, briefly observes that paves the way to
opt-out of responsibility
: The great opt-out - Slightly ajar - by David Storey
So I've been trying to work out what to make of this whole situation.
almost but not quite
The short version is this: I'm not wild about it, but I think it would be acceptable if the method was opt-in. That is, you should have to intentionally invoke the older rendering engine.
But that's not what's happening. What's being proposed is that to get IE8 to render your site in standards mode, you now have to put in a DOCTYPE
and a new meta tag asking the browser to actually render in the mode specified by the DOCTYPE
.
So I think this is a bad idea.
If the system was opt-in then it wouldn't be too bad. But instead it's opt-out (you know, like all those emails you never asked for). If a developer takes no action their site will initiate the old rendering mode in IE. So all those disinterested developers who only built for IE6 in the first place get rewarded for inaction.
Meanwhile those developers who build to standards have to cruft up their pages (or dick around with their server settings) just to get IE8 to render pages in IE8 mode. This is crap.
version targets are spam
IE8 version switching is like spam! Sure, let people have the option, if they're into that sort of thing. But don't force it on people who never asked for it.
we should not reward ignorance
Chris Wilson mentions on the IEBlog that this is all based on trying to keep badly written pages from breaking in newer, more standards-compliant versions of IE. While I understand it's been hard for MS to weather the storm as thousands of developers the world over discover their sites suck, that doesn't make those developers "right".
Chris says There's no easy answer, because it is impossible for us to tell whether the author wrote their content to standards or to IE's previous behavior.
But there is a way to tell! If they've included a DOCTYPE
, they've declared they want to render to standards. If they did that in ignorance, it's time they started earning their money instead of letting Dreamweaver do their jobs.
Alternatively, MS can just throw them a bone and tell them how to bail out. People who didn't actually want that DOCTYPE
are free to go and remove it from their pages and wear their Tag Soup badges as proudly as they like.
Or, more likely, just let them opt-in to the version target system. It'll still be less work for them than learning how to build to standards.
Yes, IE6 has created a legacy. But freezing half the world in IE7 isn't going to help move forward. It'll just keep things from progressing. People too disinterested to know what a DOCTYPE
is aren't going to engage with this process. They're not going to learn anything or opt in to standards behavior on their own schedule.
once more with feeling...
If we're going to have a proprietary hack, or a new "standard" then for the love of Mike why can't we have an intentional selector hack?
Forget conditional comments or <meta> tags in every single document you maintain. Give us a legitimate version of * html to scope our tweaks to the browsers that need it. Something like ua[ie6] { }
would be just dandy.
Sure, this will only suit those of us who know how to create pages that only need a few tweaks across browsers. But we've worked hard to get to that stage. Why shouldn't we get the love? :)
but basically...
Regardless of how many people support the version target idea - and regardless of just how scary-smart some of them are - right now I think it hurts the web to give bad developers a free pass like this. I think it will lead to many years of lazy developers keeping the web closed. Why bother building to standards? Why bother building for anything except IE7? They can just build in IE7, whack in a meta tag saying that's all they tested, then they can piss off back to the pub.
That's not the intention of version targets, you say? Sure, but that's how plenty of people out there will take it. The whole situation legitimises the approach of building for a restricted platform.
A cynical person might suggest that Microsoft is intentionally trying to lock the world down to IE; or try to get the other browser makers to bleed resources by trying to maintain legacy rendering engines. I have no doubt that individuals at MS do not want this result. But MS the company just might.
just make version targeting opt-in
IE8 should default to IE8, not IE7. I mean really, should I even have to say that?
So much of this situation hinges on the default behaviour. If there's a DOCTYPE
and no meta tag, the browser should default to standards mode. It has received no instructions to contradict the W3C specifications, so why should it go ahead and load up a non-standards-compliant rendering engine?
Having a browser arbitrarily pick a rendering mode against the definition of the document makes a mockery of standards. Allowing a developer to specifically ask for the old rendering mode is a soft option, but it at least the document would contain an explicit instruction to override the DOCTYPE
.
If version targeting became an opt-in system, for all that it'd feel like a dirty little secret it would be an acceptable tool. If version targeting remains opt-out, it's spam.
...ready or not!
But sadly it's not really something that's open to discussion. As Lachlan has already observed, Microsoft doesn’t tell you it’s going to do something of this scale unless it means it.
Microsoft is clearly going to go ahead with this idea. After all the blue monster isn't going to backflip into a higher level of standards purity. The announcement came through A List Apart and apparently they have more articles to come on the subject. Eric Meyer was enlisted to comment on the announcement. Passionate, smart people with serious NDAs were involved in the internal discussions at Microsoft and we still got this result (can you imagine the options that got rejected?).
So it's spam time.