What are web standards?
Working in web development, you hear the word “standards” a lot. And I mean, a lot. Internet Explorer is lambasted for not supporting standards, Opera holds itself up as the only browser that truly tries to fully implement standards, and web developers around the world chide each other for not following standards. The funny thing is, most people truly don’t understand what standards are or how they become so.
Let’s start with the #1 myth on the web: the W3C creates standards. This is completely false. The W3C’s stated goal is to create standards but it cannot *actually *create them. Why is that? Because standards are, quite simply, anything that the majority of people decide to do. Web standards, therefore, are anything that majority of browser vendors decide to follow. The W3C can make recommendations as to what should be done but it has no authority to force implementation. If the W3C could actually create standards, then we’d not still be waiting around for proper browser implementations of XHTML, which was finalized in 1999. The W3C has no power to force browser vendors to do anything; anyone can decide to do whatever they want. Even vendors who sit on the W3C often don’t adhere to the specifications (and all of the browser vendors do).
The W3C has been traditionally bad at creating standards. What they are incredibly good at is documenting and normalizing what has already been implemented in browsers. Such activity led to the creation of HTML 4 and DOM Level 1 based mostly on innovations included in Internet Explorer 4. Yes, folks, Microsoft was more influential over the creation of these standards than any other browser vendor because they went ahead and innovated without waiting for someone to tell them it was okay.
In fact, many of Microsoft’s innovations have become standards on their own. The
innerHTML property. The
XMLHttpRequest object. Rich text editing via
designMode. No browser would dare implement anything without supporting these; that’s what makes them standards. The W3C is now going through the process of formalizing these in the HTML 5 specification and the XMLHttpRequest specification.
It’s become fashionable to blame Microsoft for not following standards, but one could argue that if the most dominant browser on the planet isn’t implementing something, it may not actually be a standard. Internet Explorer has, as a conservative estimate, 80% market share worldwide. That means only 20% of Internet users are using “standards-compliant” browsers. Is something really a standard when only 20% of the market’s users use it? Ponder that for a bit.
The truth is that Microsoft has merely followed the lead of the most rebellious company that ever touched the web: Netscape. Netscape was the one to first say, “we’re gonna do whatever we want,” and introduced the
<blink> tag. History has shown that the web moves forward when browser vendors start innovating. And Microsoft isn’t the only one that does this. Mozilla implemented non-standard features such as
XSLTProcessor; Safari implemented the
<canvas> tag; Opera implemented the
<event-source> tag and the
window.opera object. Yet no one complains about them going out on their own and innovating…it’s only Microsoft that’s the bad guy. Why is that?
As Alex Russell has pointed out numerous times, innovation doesn’t belong in the hands of the W3C. True innovation, innovation that can move the web forward, needs to come from the browser vendors. Let the free market decide what features are most desirable in web browsers and then ask the W3C to document that; these are true standards. Waiting for the epic HTML 5 specification to get done in 2022 won’t push the web forward. Getting smart guys like Alex working on browsers does.
Disclaimer: Any viewpoints and opinions expressed in this article are those of Nicholas C. Zakas and do not, in any way, reflect those of my employer, my colleagues, Wrox Publishing, O'Reilly Publishing, or anyone else. I speak only for myself, not for them.