From: Dave M. <db...@cs...> - 2001-10-05 14:21:26
|
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 |