Open standards

Dear Dobey, standards are crap. Noone has been able so far to produce a standard document that unambigiously describes something in a way that makes people implement it correctly. Standards are just a non-working version of a program in plain English. And even humans fail as compilers for that language. The best-known example for this is HTML, where websites still load different scripts and CSS for every browser to make it work. But even a standard as simple as HTTP is broken in lots of browsers.

The point I’m trying to make is that to programmers open standards don’t matter. What matters is a way to communicate with other people that implement the same thing to answer questions that you have. Because in the end, it doesn’t matter if your application is standards compliant, what matters is that it works. Good examples of this are KDE and GNOME working together at Freedesktop or the communication I see going on between Mozilla and Webkit people. A bad example of this is Microsoft’s communication about OOXML with other people trying to implement it. Which shows why standards are broken: We need to send Jody there right now and hope he asks all important questions before it gets a standard. Because, if it is one and a uestion pops up, noone is gonna answer them.

The only thing standards are good for is marketing. You can label your application as supporting a new standard. And that makes people not familiar with software development think it’s better. My scenario for this is imagining Flash would be standardized by the W3C as the successor of HTML. That wouldn’t help anyone, because no documentation produced by Adobe could explain all the warts of such complex software as a Flash player. The only thing able to ducment this correctly would be the source code.

And this gets me back to OOXML. I had wished the official statement to say something along the lines of “We have to support OOXML no matter what and the only way to get answers for our questions is to ask MS in the standardization process, because MS is not interested in answering questions otherwise. We’d wish the format would just die and nobody ever uses it, but it seems this will not happen. So we had to send Jody there.” This would at least have explained my feelings towards GNOME’s OOXML involvement a lot better.

10 comments ↓

#1 jdub on 11.26.07 at 09:18

That’s pretty much what we said, but in somewhat less colourful language. :-)

#2 Chris Cunningham on 11.26.07 at 10:44

This is wrongheaded. HTML is the absolutely perfect example of why a reference implementation is no substitute at all for a standard; witness the way that browser-sniffing, rather than having died off, has now evolved to sniff for “Firefox” specifically.

Standards are massively useful. I’d wager that the vast majority of people who visit freedesktop.org do so as spectators looking to follow standards, not developers wishing to collaborate on them. The difference is between standards and “standards”. Just like it is between open and “open”.

– Chris

#3 Chris Cunningham on 11.26.07 at 10:53

(That said, Microsoft are definitely in both the “open” and “standards” camps, and anyone who think keeping quiet about it is a good idea is about as useful to the community as the Washington Post’s editorial page is to democracy.)

– Chris

#4 Alan on 11.26.07 at 11:45

“MOOXML, less crappy than the last documentation they provided.”

Not exactly cause for celebration. Great to see Jody working to make the best out of a bad situation though.

#5 otte on 11.26.07 at 11:45

jdub: Maybe a lot of people didn’t get this “less colorful” language, in particular those in the hobby/zealotry departments, like OSNews. I mean even I wasn’t sure.

Chris: Well, if Mozilla’s HTML implementation were the standard and not the W3C doc, you could figure out every problem you had easily: write a test and run it in Mozilla. And if you’d still didn’t get it, step through the code in a debugger. WIth a standard, you can’t run it, you just have plain text. You have to ask the people that wrote it what they meant. And if those people are unresponsive, you lost. So HTML is only as good as the people around it make it.
And for the usefulness of the HTML standard, look at how many people sniff for the standard. They only sniff for browsers that implement something they want and then code to it. If the OOXML standard says #FF0000 is red and MS Office reads #FF0000 as blue, guess what other apps will do.

#6 Sean on 11.26.07 at 18:12

How exactly does that link show the HTTP is not implemented correctly? Everything on that link has to do with the user interface presented to users by the browser, even the “protocol” section. I’m not aware of any browser that doesn’t implement the protocol correctly, although I am aware of some random non-browser apps that fuck it up pretty badly.

#7 Dan on 11.26.07 at 22:28

Benjamin,

While I agree that standards can be a tedious PITA to work, and can be terrible, you’ve phrased it with a ridiculous sweeping breadth that I can’t agree with.

I think your initial assertion that standards are useless crap because they cannot “force someone to implement something correctly” is completely absurd. It’s like saying that an orange sucks because it cannot repair a car. Be realistic about what a standard actually is. If you want to try to force anybody to do anything, then the closest you’ll be able to do with words is a legal contract. Standards (in any form – from ISO/IEEE standards on paper or verbally agreed standards) don’t to force people to do anything. Even a “perfect” (i.e., completely crystal-clear and unambigious and self-consistent and so forth) standard will never succeed at forcing anybody to do anything because it is still *only* a guide to interoperating with ideal applications that follow the standard perfectly, and not a legal document. Naturally in the real world there is clearly no such thing as an ideal version of *anything*. You can complain that the world isn’t perfect, but that won’t change anything.

And then there’s “…in the end, it doesn’t matter if your application is standards compliant, what matters is that it works.” Well, sure, unless your system needs to interoperate with other systems, in which case odds are it’s going to have to do so in a way that the other systems understand, and your system will have to be de-facto compliant even if nobody puts a “compliant” stamp on it. If everybody decides that the standards don’t matter, then interoperability will suffer because the applications will all be speaking different dialects of the same language that other applications don’t expect. And that’s not good, because flaws in the standards and implementations make it difficult enough in the first place, without even further difficulty added when engineers and marketing divisions decide that standards aren’t as important as what they’re trying to accomplish, and introduce incompatible variations.

If a standard doesn’t work, then it ought to be replaced. If engineers start to believe that a “x and y and z standards suck” means the same thing as “standards suck,” then interoperability will suffer.

#8 Dan on 11.26.07 at 22:41

…further, just to be clear, I’m all for reference implementations, but it simply isn’t possible to use the same implementations on different platforms and environments.

#9 Dan on 11.26.07 at 22:49

…and when it is possible, it isn’t always advisable (would it really be wise in terms of security for everyone to use the same HTML rendering implementation?)

#10 mpt on 11.26.07 at 23:50

Have you read the HTML 5 specification draft? It attempts to specify everything unambiguously, including error-handling for malformed HTML. As a result, much of it (particularly the parsing section is effectively pseudocode.