Version Two
Published 16 years, 10 months pastSo yesterday was interesting. In a whole lot of ways.
As I expected, there were some widely varied reactions (there’s a good list over at Digital Web, if you’d like to taste the rainbow) and many of them were in opposition to the whole idea. The opposition was fine, but the tone taken by many was not. Even though I expected some flaming, I admit I really didn’t expect the overall tone to be so vitriolic, and I found it to be profoundly depressing. I’m not talking to everyone here, but it still needs to be said: if you feel the need to impugn the integrity or intelligence of another person to oppose an idea, you’re undercutting yourself, not your target nor the thing you oppose. It’s the dialectical equivalent of “considered harmful“.
A number of people said things to the effect of what Roger said: “explain why we’re wrong to oppose this”. That I cannot do. I was hoping for opposition, because that’s the only way to really test an idea. I’m not so arrogant as to think that I alone can account for every variable and forecast the eventual outcome. I can only explain, as I tried to do, why I think it’s a good idea, and listen to the reasoning of those who think it’s a bad idea.
No explanation is ever complete, of course, so here’s some followup.
I suspect that a good deal of the emotional objection springs from a perception that the proposal is to require all browsers to implement targeting. Not at all. Please be clear on this: nobody is saying this should be required in any browser. It can be interpreted as a requirement for authors, which is a separate issue, and I think one that’s quickly becoming negated as people work through the details. Not necessarily negated in a way Microsoft would like, but that’s really their problem. (See, for example, Sam Ruby’s solution.)
One very likely outcome here is that IE does this and all the other browsers don’t. In a lot of ways, I’d be happiest with that outcome, because it would give us the opportunity to evaluate both approaches in parallel. Personally, I think other browsers should adopt the same mechanism only if they feel they need it. So far, they’ve indicated that they don’t. Fair enough. IE gets to try its hand at maintaining multiple internal versions, and everyone else can continue as usual.
In that vein, I have to admit that I don’t understand the assertions that this will make life harder on other browsers, that they’ll have to support all the various rendering modes in IE.whatever. Can someone explain that to me, please? I’m not saying the assertion is wrong. I’m saying I don’t understand why that would be the end result.
At a wider level, I think a lot of people are discounting the fact that version targeting is absolutely nothing new in the standards world, let alone the web development world. Conditional comments, CSS hacks, and the DOCTYPE switch itself are all examples of version targeting. When I write *+html
… I’m doing it because I know IE7, and IE7 alone (at least for now), will see the declarations in that rule. I did exactly that just the other day, in fact. There’s a whole sub-set of the current CSS corpus based on figuring out parser bugs to exploit into hacks that are used to feed rules to specific browsers or specific versions of browsers. We’ve been doing this for years. I mean, okay, if you’ve recently done client work where you didn’t need any form of detection at all—as in, you quite intentionally used none of the things I just listed—then you can exempt yourself from the “we” in that statement; furthermore, my hat is off to you. Seriously. Because I can’t remember the last time I was able to avoid using at least one or two CSS hacks in a project in order to deal with browser inconsistencies.
I’m not going to claim that these mechanisms are universally broken. In fact, I believe exactly the opposite: they’ve long since proven their utility in an imperfect world. (The perfect world being the one where all browsers implement all standards correctly and no form of browser detection is ever needed.) That alone made me reconsider the targeting proposal in a whole new light.
The handling of JavaScript libraries in a world where the pages calling the libraries will determine how the JS is interpreted—that’s definitely something I hadn’t considered. As I understand it, the problem case is one where a JS library that uses (say) IE9 features is loaded into a page that triggers the IE7 engine. The library would need to preserve backward compatibility with all the IE versions that could be used.
But isn’t that already the case? Every library whose source I’ve studied has all kinds of detection, whether it’s feature or browser detection, in order to work with multiple browsers. I would think that under version targeting, the same thing would be necessary: you do feature detection and work accordingly. Again, it’s entirely possible I missed something there, so feel free to let me know what it was.
As for the proposed default behavior, where no X-UA-Compatible
information gets you the IE7 rendering, I can’t defend that, nor do I have any wish to defend it. I tried for most of an hour to convince a member of the IE team that the default behavior should be “latest”, not “IE7”, and was unable to make a sufficiently persuasive case—by which I mean a case that overcame the (perceived) needs of the IE team. My hope is that someone will succeed where I failed.
Because yes, I too want to be able to leave off the meta
, leave my server’s HTTP headers alone, and still get the latest and greatest in standards support from IE.whatever. That’s how browsers have always acted, and it’s what I’m used to handling. If someone can convince the IE team that doing this would be in their (and their company’s) best interests, then we’ll all be in your debt. With the growing collection of workarounds, I think it might be possible to convince them that the default behavior we want is going to quickly become the de facto standard, they should go with the flow and make it the default internally. I don’t know if that will work, but it’s worth a try.
It has to be realized that this may well be the only way for IE to advance its standards support in a reasonable time frame, or at all. Version targets let them avoid breaking existing sites, especially intranet sites, while fixing and adding their DOM, CSS, and other implementations. That has to be understood and accepted if the discussion is to be anything more than people talking past each other. Within the world of IE, they must have a way to uphold backwards compatibility with sites developed under older versions of IE. Without it, they will largely stop fixing bugs they discover in their standards support. It really does come down to that. The fact that their current situation is their own fault is not really relevant to the topic of moving forward. This is a way forward for IE, just as the DOCTYPE switch was a way forward for a number of browsers (including IE) back at the turn of the millennium. It may be the best way. If there’s a better way for them to meet that need, then I absolutely want to hear it. But remember, “let old sites break” is a non-starter. You might as well say “let old sites not load at all in any browser”.
At any rate, I’m opening comments on this post, and I do hope there will be reasoned discussion of the pros and cons of version targeting. As always, I’m going to enforce civility in the discussion. Disagreement, opposition, objection: all fine, and in fact encouraged. Flaming: not fine, and will be deleted.