I think there is a fallacy implicit in Robin's response that should be
pointed out. Robin's idea seems to be that you write a formal
definition (more or less isolated from implementer and user input),
publish it, and that is it. In reality, a language definition
(including core library specs) needs to be maintained over time just
as much as an implementation, but in a different style, in
adherence to somewhat different rules and constraints.
Definition maintenance should include:
1) correcting errors, both superficial and substative
2) clarifications, resolution of ambiguities
3) adoption of improved definition techniques (some of which would be
incremental and local, some of which may require extensive or global
changes)
4) correction of misdesigned language features (e.g. nonsensical "val
rec rec rec ..." syntax)
5) incremental addition of new language features (e.g OR patterns,
functional record concatenation, structure "where" definitions,
lazy datatypes)
6) specification of new libraries
The maintenance of the Definition should be carried out by a trusted
core group with mechanisms for open publication and community
discussion of proposed changes, including particularly involvement of
the implementation community. The rate of change should be limited
and managed according to a plan to allow for the implementation and
user communities to adapt, perhaps following an episodic change policy
(e.g. a new "release" of a major component of the definition every 4
or 5 years).
The Definition should be an "open" document, with community control
over how changes get committed. As with open source software, there
can be stable and developmental versions. The definition sources
should probably be maintained in a public CVS repository, for instance
in the Standard ML sourceforge project.
One of my regrets about the Definition is that it is frozen in
a published book, and "owned" by it's original authors and the
publisher. It should belong to the community, and I personally
am willing to transfer my share to the community. We should look
into the feasibility of opening access to the definition in some
form (presumably the latex sources). This should be possible since
I don't think either the authors or the publisher have a significant
economic incentive to keep it closed at this point. This argument
also applies to the Basis specification as well, which has to be
regarded as an integral and essential part of the Definition.
As Robin pointed out, maintaining a definition is a nontrivial task,
but I am not convinced that it a significanly larger and more
difficult task than maintaining an implementation. In some ways
it is certainly easier, because there are fewer levels of abstraction
to be concerned about, and it does not have to adapt to evolving
platform technologies.
Dave MacQueen
|