As Andrew Tannenbaum said, "The nice thing about standards is that
there are so many to choose from." Apparently he followed this up by:
"And if you really don't like all the standards you just have to wait
another year until the one arises you are looking for." So how does one choose? Why adopt one specification and not another?
There are many possible reasons, and this article is an attempt to
catalog some of them. In the course of my work at Infrae, I run into many specifications that we may decide to implement or use, so having a common vocabulary and set of questions about this is important to us. Note that I use the word 'specification', not 'standard' in this article, as there are far more specifications than true industry standards. Many so-called "standards" are only aiming to become so, but naturally many fail in this process due to a variety of reasons. Specifications fall into a number of categories. A non-exhaustive list: How well is the specification adopted within the industry? I.e., is
this specification industry-standard or seems to be on the way to be
so? There are a lot of specifications that are really not
standards. Industry adoption has two sides to it: If there are few of the former, there won't be many of the latter. An
example is SVG in browsers. Even though it is expected that the uptake
of SVG technology will be big once it is established in popular
browsers, this uptake is not taking place right now as the browsers
don't support it very well. In other areas, like the Linux desktop,
SVG is seeing some use now. Even though systems that conform to the specification may be
implementable fairly easily, it may be that few systems exist that
actually use this for useful purposes. RDF has a problem like this;
even though it is relatively easy to produce some RDF, and tools exist
that can then take this RDF and do some analysis, there are actually
few systems that use this RDF to fulfill practical use cases. RSS is
an exception, but only a partial one, as only few RSS streams are
actually fully RDF compliant. How well is the specification implemented within the industry? If a
specification is well implemented, this helps interoperability between
software. CSS is an example of a specification that is implemented
commonly by browsers, but not all to the same level of quality. The
practical result of this is that the same CSS needs to be tested on
all browsers, and pragmatic subsets and tricks are developed in order
to work around limitations in the implementation on some platforms. The DOM specification has been implemented quite a few times in
Python, but very little Python software actually works across Python
DOM implementations, because the implementations differ a lot in
quality, supported feature set, and there is a lot of inconsistency in
the translation to Python of the various DOM APIs. In contract,
because of more rigidly defined and checked interfaces in Java, this
language gains more interoperability between its various DOM
implementations. Another example is Javascript-based browser
DOMs. While many inconsistencies exist, the browser DOM still allows
cross-browser applications to be developed. XSLT is an example of a specification that seems to be well
implemented across many platforms, probably due to the clarity of the
specification, the limited scope, and extensive conformance test
suites. How much does the market (or a particular market, or a particular
client) want to adopt the specification as a standard? Even in cases where industry adoption is still limited few
implementations exist, significant forces in the market may still very
well want implementations. They may want this for rational reasons, or
due to industry hype, or a combination of both. One good reason for
adoption of a specification is its popularity, so industry hype may in
fact be a worthwile reason to adopt a specification. Hype may exist in limited markets. Most people for instance haven't
heard of SCORM, but it does have some buzz in the education market. How much buzz is there in the industry and market? Are vendors
promising support? Are there high visibility projects? Glowing
magazine articles? Does the specification fit the actual problem domain? XSLT can be used
well for templating and transformations, but it's not very well suited
for writing whole applications. Even if a specification is not optimally suited to a problem domain,
other factors may still cause it to be adopted -- increased
interoperability for instance, or reduced learning time. How easy is the specification to implement? There are a whole set of reasons
why a specification would be easier or harder to implement. Will implementing a specification in fact increase interoperability? There are a number of categories of interoperability: The more difficult it is to implement a specification (correctly or
completely), the fewer the interoperability benefits. Will the implementation specification likely make it easier for the
developer to learn the system (or learn how to interoperate with the
system)? How much of a network effect is needed to make implementing or using a
specification useful? If first everybody needs to implement the
specification to actually make its use worthwhile, a chicken and egg
problem exists. An example of this is the semantic web. If only everybody had their
web systems produce large amounts of semantic information in the form
of RDF, it'd be very useful in many ways and useful tools would be
created which process this information. Unfortunately nobody is doing
this as there are no tools to process the information. Specifications can be useful for a number of reasons:
Tue Mar 01 2005 18:53 Criteria for evaluating specifications:
What is specified?
Questions to ask when encountering a new specification
Industry adoption
Implementation quality
Market demand
Buzz
Suitability
Implementability
Interoperability
Learnability
If only everybody
Reasons for usefulness
