
My previous post, The Web is broken has a lot more going behind the scenes.
The point of reference is this post by Ian Hickson:
However, it seems that these real world concerns are not a factor in the TAG’s findings, since the day after I posted the aforementioned blog post, they published a document describing how browsers must always follow
Content-Typeheaders, how specifications must never require browsers to ignore such headers, and how authors must all go and correct their mis-configured servers.
There’s two ways to write specifications. You can architect something that’s elegant and correct. Or you can design
something that works in the real world.
A content type tells you what the server is returning, and video is not text/plain. Unfortunately, in the real world the content type is often wrong, and any browser that listens to it will just not work. It will be “spec compliant†but useless to anyone.
There’s a lot of reasons why content types are wrong. Not reading the manual: I myself setup several sites before I realized I’m not serving the right content type. Then there’s being lazy: would you rather add a new cool feature, or go and fix the content type on all your pages?
And then there’s practical. For example, the correct content type for RSS feeds is application/rss+xml. In co.mments, I serve RSS feeds as content type application/xml. I do that because clicking on the Subscribe link has one of two results.
If it’s the right content type, you get a confusing Open/Save dialog which annoys users. It’s also hard to develop and test that way. If it’s the wrong content type, you get an XML that gets translated into HTML so the user is getting a Web page they can deal with. And I can test it with my browser.
In other words, the spec has one view of right and wrong, but the real world has the opposite view.
Remember when Google Accelerator broke some sites (thanks to Bill again for reminding me)? The standard makes a clear distinction between GET and POST. GETs don’t have side effects.
But the Web is about people, and people make their own distinction between links and buttons, and have their own perception of side effects. A login link on the top of the page has no side effects. For people, neither does logout, and there’s no reason for it to look any different.
Do you build Web sites for people or machines?
As a Web developer I’m often caught in that cross fire between GETs that are incredibly useful if they do have side effects. You can bookmark them, grab them from a feed reader, and use them as link. Yet, the capture more of the action, they work better.
Setting up barriers to usability has the opposite side effect on standards.
Again I’m passing the mic to Ian:
The biggest thing I’m worried about here, to be honest, is that every time we (the standards community) require the browser vendors to do something that they consider makes their user’s life harder, they get one step closer to ignoring _all_ standards. That is, it’s not just that they pick and choose the standards they want to comply to — there comes a point where engineers decide that they’ve had enough of "stupid specs" in general, and ignore all of them. At that point, we (the standards community) might as well go home, because we are utterly powerless without the engineers listening to us and doing what we tell them to.
It’s a tough call, but the standard community needs to realize it can’t work in a vacuum, away from the people who want to use the technology.
Update: Also read this post by Mike Champion.