Putting The 'Backward' in 'Backward Compatibility'

So some recent decisions and announcements by Microsoft’s Internet Explorer team regarding how standards-compliant rendering will work in the forthcoming IE 8.0 has sparked a big discussion on these internets of ours about whether DOCTYPE switching — up to now the only way to force IE to even try to render pages correctly — is the same thing as browser sniffing, and whether the IE 8 team’s proposed “solution” is or is not stupid.

Before you keep reading (and before I keep writing), let’s all get up to speed by catching up on the discussion:

Just to give you the nickel tour of the issue: Microsoft developers, being a pack of craven, cowardly nincompoops who wouldn’t know innovation if it walked into Steve Ballmer’s office and did an interpretive dance, have committed themselves to maintaining backward compatibility in IE 8 for any web site authored for IEs 6 and 7. On the one hand, this is admirable. After all, for many non-technical users (grandmothers, office workers, my trainer) IE really is the web, and they’re the folks least likely to understand that a web site they use every day is broken because its code was written for a browser older than the War on Terror.

On the other hand, if the IE team is in agreement that standards are good and the way to go for the future, why are they encouraging nearly a decade’s worth of lazy code and practices by continuing to support them? The obvious reason is that Microsoft’s core business is catering to large enterprises, who’ve invested billions of dollars building web-based applications on the IE platform and would be upset if those apps suddenly quit working because a bunch of nerds decided in between Magic tournaments that CSS padding should make a box wider, not narrower.

Anyway, I digress. The real concern behind what we’re talking about is not (just) IE 6 quirks mode, which deserves to be left on the ash heap of history, but also the flawed “standards” modes in IE 6 and 7 which have caused web developers to spend millions of hours researching and using hacks and workarounds to make Microsoft’s browser behave. If IE 8 were to apply its standards mode the same way IE 7 does (via DOCTYPE switching), it’s likely that any IE hacks present on a given site would cause it to break.

So the IE 8 team, in consultation with the Web Standards Project, have come up with a “sweet” (in the sense of iPhone web apps, that is, not at all) solution: requiring web page authors to include a META tag specifying which version of IE their site should work on in order to activate standards-compliant rendering.

First, to get down to brass tacks: yes, it is good that IE 8 has passed the Acid2 test and will most likely render my web sites the way I intended, the same way they render in Safari 3, Firefox 3 and Opera. And if a one-line META tag is what I need to make that work, I’m down with that. Standards are good. Standards are great. Yay standards.

However, let’s just step back a moment and return to the true nitpicky issue here: why is it my problem that Microsoft’s idiot customers locked themselves into IE 6’s grotesque interpretation of HTML and CSS?

Standards should be adhered to not because they work a certain way in a certain version of a certain browser, but because they’re standards. Smart web developers don’t put DOCTYPEs on their web pages just to activate IE’s standards mode; they do it because it’s part of the HTML/XHTML specification and it helps user agents understand how to interpret the document. And yes, triggering standards mode is part of that, but it’s not the only part nor the most important.

When you write broken code, things should break, or else you have no incentive to write non-broken code. Microsoft is trying to make bad rendering the permanent default behavior for Internet Explorer, by forcing anyone who wants standards to opt into them. Meanwhile, they continue to make it difficult (if not impossible) to run older IE releases concurrently with new ones on the same machine, so you can’t just tell someone to install and run IE 6 if they need to use a site with some deprecated code.

Here’s a brain-teaser for you: if you have to add a harmless-but-unusual META tag to standards-compliant HTML code to make it work properly in one or more browsers, is the code still standards-compliant? Technically the answer would be yes, since the META tag is part of all the current HTML specifications and the proposed X-UA-Compatible header would be harmlessly ignored by browsers that don’t support it.

But you could hardly say the browser is standards-compliant. Unless I’m remembering wrong, the XHTML and CSS specs do not say I need to send a certain HTTP header or META tag for my code to be interpreted correctly. Sure, IE 8 may be able to pass the Acid2 test after it’s received that special header, which means it ought to be able to passably render web pages I wrote for Safari 2 two years ago. But calling it a standards-compliant browser is a bit of a stretch.

 
If An Oscars Game Falls In The Forest...

You may not know this, but every year for as long as I can remember this site has held a little Oscars prediction context for which the prize has been bragging rights and often a gift certificate or physical object that I inevitably forget to mail.

I mention it because this year, my Oscars Game-related amnesia has expanded to cover the game itself. In other words, the Oscar nominations were announced this morning and I just realized like five minutes ago I’ve completely forgotten to write an Oscars Game web app for this year. Like, OMFG.

The Oscars Game is a funny sort of tradition around here: there are maybe six or seven diehards who come back to play every year, plus anywhere from a dozen to two or three dozen people who hear about the game from other places and check it out. But it’s one of those traditions that, like black eyed peas on New Year’s or Republicans winning Presidential elections, I’m not sure the observants would miss if it were gone.

For my part, the Oscars Game has served a couple of useful purposes. The 2005 Oscars Game was the first Rails app I ever wrote, the 2006 edition was the first site I did with serious Ajax, and last year’s was the first time I’d ever had to scale a Rails app so it wouldn’t crash every five minutes. Before that, the O.G. was my excuse to try out new PHP tricks and whatever layout ideas I hadn’t been able to use on a real project.

This year I’m kind of a Rails and Ajax wizard, and my recent projects have presented a lot of nice visual and usability challenges. I’m not feeling like I have any untapped ideas that make an Oscars Game really worth building, so we’re left with the community aspect. Though I will admit that if I didn’t find myself on January 22 with two projects on my desk, this year’s Oscars Game would have featured (and may still feature) some of the following techniques and technologies I’ve been interested in:

  • jQuery, either in addition or instead of Prototype.

  • The Facebook Platform, aka the gobbledegook that allows assholes like me to allow assholes like you to pelt each other with “Zombie invitations,” “compare me requests”, “movie quizzes” and “Scrabulous challenges.”

  • OpenID logins, so you can use your LiveJournal/Vox/AIM/Yahoo accounts to sign in. Actually, now that there’s a great first-party Rails plugin for OpenID authentication, this is probably a must-have.

  • A little design idea I’ve used on a couple recent projects I like to call “Comments Freaking Everywhere,” where users could add their own comments to any Movie, Nominee or Category in the system.

All that being said, I do have last year’s code which — with a little cleaning up and porting to Rails 2.0 — can be back up and running and ready for predictiosity in mere days.

So let’s gauge some interest. If you’d like to see the Oscars Game return in 2008, shoot me an e-mail at david@practicalmadness.com. And if you do, I’d greatly appreciate it if you could answer the following questions:

  • Did you play the Oscars Game in 2007 or any previous year?

  • If you played in 2007, would you want to re-use your username/password from last year? Put another way: would you be terribly offended if I made you sign up again?

  • Also, if you played before, what did you think of the experience? Any complaints or (better still) massive amounts of praise? Any feature requests?

  • Would you be interested in playing the Oscars Game as a Facebook app?

 

The requested page could not be found.

include(/users/home/ddemaree/web/public/.incl/ad-banner.inc.php) [function.include]: failed to open stream: No such file or directory