Implementability

The easier a specification is to implement, the more implementations will
be made and the more compatible they will be. Easy implementation also means
that implementers have time to be creative and come up with novel ways to use
the technology. Implementations will be cheaper; in fact they can be virtually
free if they can be made by individuals in their spare time. Fixing bugs is
among the most expensive operations known to developers, especially if there
are people that, unwittingly, have come to rely on them. Avoiding bugs is thus
of the foremost importance. Implementability can come from simplicity or from building on well-known, existing
components.

Building on existing components means using technologies that programmers
are familiar with, such as context-free grammars (expressed as EBNF or some
variant) or XML 1.0.

It does not mean adding dependencies on new or ill-understood
technologies. XSLT, e.g., should probably not have used XML Namespaces. It
could have distinguished between commands and data in more conventional ways.
XSLT is now in danger of undergoing the same evolution towards incompatible
subsets as HTML, which used SGML, another technology not understood by
developers.

As Jakob Nielsen says, it is unsafe to use a new specification until at
least a year after it has become official ([Nielsen00], page 34).

W3C's specifications thus far aren't very complex, at least not when
compared to those of some other standards organizations, but they are already
getting more intricate. W3C probably has to look at the IETF again for how to
keep specs simple, because already one of the most often heard complaints is
that the number of interdependencies, especially among the XML family of
specs, is becoming hard to deal with, especially for developers who create
their first XML-based programs (and if we want the Web to develop, we'll need
many first-time developers).

Indeed, XML 1.0 itself is already too complicated for some of the
applications for which it was designed, as shown by the project that has been
started on the Internet to define a simplified version (see [Park00]).

The existence of two implementations of a specification is no guarantee
that there will be more, but it does give a hint. It is therefore a good idea
that many W3C working groups now ask for two or more implementations before
submitting their work as a "Proposed Recommendation."