originally posted january 18, 2005
This Web Page Is In Spanish When You're Not Looking
Debunking the Nerd Pissing Contest Known as "Web Standards"
For all the anti-religious fervor that spreads through the geek community, you'd think holy wars would be unfashionable. There's the battle of emacs vs. vi, two unintuitive text editors: a geek must learn one and then bash the other. There's the battle of Windows vs. Mac vs. Linux, in which each participant calls the other two liars and then spouts lies to back itself up. One thing that has surprised me so far is the strict adherence to what people call "Web standards," which they claim will ensure a level playing field on all platforms.
There Is No Such Thing As a Web Standard
The World Wide Web Consortium (W3C) creates what are known as "recommendations," such as XHTML 1.1 and CSS 2. These recommendations define a common markup for content and style, respectively. They are only "standard" in that the W3C makes both, and that the W3C maintains widely-used validators for both.
If you have XHTML and CSS markup that passes the validators for each, you have what is known as "valid XHTML" and "valid CSS." The W3C maintains that each user agent (such as Internet Explorer) should follow certain guidelines for presentation. This is where things get ugly.
Standard XHTML Is Not Pretty
All web applications are ugly, no matter how good the markup is. All web applications can be foiled by pulling the plug on your Internet connection. All web applications freak out if you leave them alone for too long. All web applications are built by people who have seen established UI guidelines that have been built up over 20 years, then discard those guidelines because Firefox and IE don't let you build any of them into web applications. Web browsers represent the lowest common denominator of interfaces, yet people code for them anyway because users are just too lazy or unwilling to install any real software.
That said, just because your web page is "standards-compliant," whatever that means, that means nothing. It means that you like the way it looks in Firefox or Safari, and that either IE renders it properly or you don't care about IE because it's not standards-compliant enough and you don't care about alienating 90% of web users.
It is completely possible to make valid HTML that looks great in Firefox and that looks like utter shit in Safari. (That's probably because Safari uses the Konqueror engine, which chokes on a lot of style elements.) It's also possible to make valid HTML that looks great in Safari but looks like shit in Firefox. (That's probably because you didn't follow the recommendations, even if you thought you did. The web is funny that way.) Lastly, and least surprisingly, it's possible to make valid HTML that looks great in Internet Explorer and looks horrible in Firefox. (That's probably because you're being paid off by Microsoft. You'll be sued.)
Standard XHTML Is Not Usable
The W3C guidelines dictate that your content should be usable by people with large graphical browsers, small graphical browsers, tiny cell-phone-sized web browsers, screen readers, and printers. You did test your web site with all those readers, didn't you?
Every web site has its own conventions for navigation, layout, and so on. There are no official guidelines anywhere, certainly not at the W3C, for how a web application should mimic a native application -- but that doesn't stop people from trying.
There are link tags that indicate a document that comes next,
before, "up" from, etc., to be used in navigation. Opera implemented a
toolbar that read from these tags or inferred information to produce these
tags. The Mozilla project poorly imitated this in the Site Navigation Bar,
which lacks the ability to infer any navigation information unless you
download an extension. Furthermore, Internet Explorer doesn't support them
at all, so link tags are officially useless.
So now you have your web site with its ugly navigation. You have all your
images that are totally unnecessary because people need to read your site
on screen readers. You have
black links against black text,
which confuses users but which you think looks cool. You have
semi-transparent backgrounds and static divs that make
everything slower than a Pentium 4 struggle to render your site. What you
have is an awful mess of a web site that is valid HTML, a designation
that serves only to stroke one's geek ego.
Know Your Target Market
Are you writing for the masses? Write for Internet Explorer. Firefox can supposedly render everything just as well as IE, so that 10% of the population can sit back and enjoy it.
Are you writing for geeks? Write for Firefox. They'll like you for it. Make sure to latch onto the latest flash-in-the-pan trends like alternate stylesheets and Atom feeds.
Are you writing for pseudo-intellectual political wonks? Just install MovableType like all the other non-conformists do.
Are you writing web pages for mobile phones? Write "NEED MONEY FOR FOOD" on a cardboard sign and stand on a street corner. You'll make more money that way.
It's Not the HTML That Breaks Browser Compatibility
A lot of people dislike folks that say "Write for Internet Explorer," saying that doing so harms the fabric of the infosphere and is "considered harmful" and so on and so on. What they don't realize is that it's not HTML that breaks compatibility, but rather JavaScript. JavaScript is a programming language that can't be "validated" per se. You don't see people slapping "Valid JavaScript!" stickers on their web sites because there is no such thing. JavaScript is used to make developers pretend like their web site is a dynamic application such as a lousy clone of Opera M2.
No web browser implements JavaScript correctly. They all have their own interpretations of what is only vaguely a "standard," and that's where the fun comes in. Asking someone to rewrite their IE web application for Firefox is asking them to break their application in a totally different way.
Hitting a Moving Target Every Time
Once you're done with XHTML 1.1, don't stay put. XHTML 2.0 is coming out and it's totally different! You'd better upgrade your entire web site so that Firefox users won't be left out in the cold when version 1.1-beta5-rc6 with BlockProHelmet 0.5 extension comes out.
The W3C moves at a glacial pace, but don't let that stop you. Use Microsoft-created toys like XML HTTP Request to build your standards-compliant application, then bitch when non-Microsoft web browsers don't work with your application.
I'm Special
I've written a lot of standards-compliant XHTML and CSS, and sometimes web browsers are nice enough to render it the way I wanted. However, there is no commandment from anywhere that you can design a web site to be pixel-perfect. IE, Firefox, Safari, Opera, Omniweb, and all the other browsers are broken in totally different ways. Rather than obsess over correctness and validity, try writing some useful content. Maybe I will someday.
Back to January 2005, or to the year 2005.
