What is a standard?

by Charles Miller on April 14, 2003

Standard has to be one of the most over-used terms these days. Technologies compete against each other, and get into slanging matches over who is the most “standard”

The term is meaningless.

A software or protocol standard, by definition, is simply a published specification that goes into enough detail that two people who follow the standard will end up with software that can talk to each other.

Standard != free. If you have written a standard, there is no reason you can't charge people to read it. You can decide who is allowed to implement it. You could hold patents over its basic premises, You own the copyright or patents, you can license it however you want. So long as it's published somewhere, somehow, it's still a standard.

Standard != fair. Even if a standard isn't totally private, that doesn't mean just anyone can implement it. Some standards are published under RAND (Reasonable and Non-Discriminatory) terms. This means that anyone who wants implement the standard must be allowed to, so long as they pay the same as everyone else. This is, of course, as fair as any other economic measure. If the RAND terms specify a $100,000 licence fee, you'll only ever see a free implementation if one of the big boys chips in. If the "fair" license-fee is per deployment, then it can never be free software.

Standard != useful Just ask the SAMBA team. Which is more useful? The CIFS standard, or their battery of regression tests against real Windows implementations?

CSS2 is a standard, as is HTML4. There does not exist a single implementation that complies 100% with either standard. Some get close, but there are always gaps, and always bugs. A standard may be a useful target to work towards, an ideal, but practically it is only ever as good as the most compliant, widespread implementation.

Standard != safe. Whenever a standard has a single, dominant implementation, it's worthless. The de-facto standard will always follow that implementation, whatever the written standard says. To pick something non-controversial (i.e. not .NET), Perl is a completely free standard. You can download the source-code and from that produce your own, 100% compliant implementation. But what's the point? Perl is a living language, and the real standard isn't in the current implementation, it's in the next one. If you don't keep up with the bleeding edge, you may as well not bother.

Standard != Standard. Most standards are written in human languages, and are thus imperfect descriptions. There is always room for interpretation, and without some kind of reference implementation to compare against, two independant implementations of the same standard are almost always going to be totally incompatible. Which makes the reference (which itself encompasses a set of assumptions) far more standard than the standard itself.

Previously: The Memory Management Glossary

Next: Java, the evolutionary dead-end