Some reflections on Modula-2 standardization

The opinions expressed here are my own, although I suspect that they are shared by several (but by no means all) of the very fine people I was privileged to meet and work with during the standardization effort. Although the prevailing impression may be a sad one, an enormous amount was learned, and some great friendships were forged.


The ISO/IEC Standard and WG13

The official home of the ISO Modula-2 standardization working group JTC1/SC22/WG13 is now hosted at http://sc22wg13.twi.tudelft.nl/ a site maintained by Cornelis (Kees) Pronk, a devoted founder member of the group, of which Martin Schönhacker of Vienna is the present convenor.

The definition modules and the concrete syntax are available from this home site, but the Modula-2 standard itself (ISO/IEC 10154-1) is only available at a price from national standards bodies or ISO (the publisher). However, for those brave enough to want to get a feel for this enormous document, an earlier version (markedly different in places) of the draft is believed still to be available as a Latex document by FTP from the site ftp://ftp.mathematik.uni-ulm.de/pub/soft/modula/standard/draft4/.

Back to contents


A brief history

Classical Modula-2 was developed by Niklaus Wirth at ETH in Zürich, Switzerland in the late 70's. He described this language in a classic text Programming in Modula-2, published by Springer-Verlag in German and in English, which ran to four editions, each, somewhat infuriatingly, describing a subtly different dialect of his brainchild. Devotees of classical Modula-2 will tell you that of these editions of "PIM", the third edition, which emerged in 1985, was probably the best. In designing Modula-2, Wirth built on the strengths of his earlier language, Pascal, and tried to eliminate some of its weaknesses, aiming in the process at creating a type-safe language that would be suitable for large scale projects and systems programming, one that would support data abstraction, one that could be used for teaching, and one that could be compiled efficiently. As with Pascal, his brilliant efforts at achieving all of this aroused great interest, and soon several implementations, and a variety of textbooks followed his own. Unfortunately the original description of the language was not rigid enough; these implementations tended to diverge in their interpretation of the semantics of the language, and to introduce extensions, and, of course, this led to portability problems. Furthermore, Wirth had probably not paid sufficient attention to defining a really useful set of support libraries, with the inevitable result that manufacturers produced a variety of incompatible modules. Of the situation that persisted by the mid 1980's, Susan Eisenbach of Imperial College, London, remarked perceptively that "Modula-2 would be everyone's ideal language if it had just one more feature. Unfortunately, everyone has a different idea of what that one feature should be".

By 1987 the problems with Wirth's definition were quite well understood. Based on some pioneering efforts at rationalizing the inconsistencies in PIM, which had taken place in the UK and the USA, a committee of ISO/IEC, with the impressive moniker JTC1/SC22/WG13, comprised of delegates from several countries, met in Nottingham, England on April Fool's Day, 1987, for the first of a series of meetings aimed at bringing about a standard description of Modula-2 and the definition of a set of standard library modules. The project was ambitious; probably too ambitious. Rather than producing only a natural-language description of the semantics of Modula-2, the group voted to produce one that would be augmented by a formal definition written in VDM-SL (Vienna Development Method - Specification Language), a formalism for giving a precise definition of a programming language in a denotational style. While this mammoth effort of producing VDM-SL was going on (largely the work of a single individual, Derek Andrews of Leicester University), the group fell into the common trap of aiming at a shifting target. With each new meeting would come a plethora of suggestions for extensions and deletions, revisions and reversals of previously agreed decisions, and the like. By 1992 many of the original members had become totally disillusioned, and had left the group. To the credit of those few that remained, a base language standard (ISO/IEC 10514-1) was eventually adopted in June 1996 by most of the countries eligible to vote (with the notable exception of the USA, Japan and the Netherlands), albeit for a language that was significantly different from Wirth's original, and with a set of library modules significantly different from those suggested in PIM.

Since that time a few members have pressed on with efforts to standardize still further extensions, related to Object Orientation, Generics, POSIX bindings and the interfaces to other languages, and details of these can be found from the home site.

Back to contents


Publications

During the group's life time a huge number of documents were produced - at least a metre or two of shelf space - and megabytes of electronic mail flew around at peak times. Very little of all this prodigious effort became available to the general public.

Readers who are interested in the sorts of issues that were identified early on (before the tendency arose to invent a language, rather than standardize one) may like to read an article by one of the group's most perceptive members, who had spent an enormous amount of time analyzing PIM and discussing its shortcomings with the original USA and UK groups:

A preliminary report on the changes that were to find their way into the standard may be found in

Information on the final standard can be found in two highly readable articles by two members who made sure that the project actually was completed when almost everyone else had lost interest:

Postscript copies of these articles are available in UNIX gz format from the WG13 home site (about 42K each; note that the material is actually copyright).

An interesting accessible paper on how compilers might be tested can be found in:

See also the recent article

Back to contents


Meetings and Progress (or lack of it)

Some 12 meetings of WG13 have taken place since 1987. It is impossible to give a concise history of a process that was fraught with many technical and intricate arguments, but the following notes may be of some interest - allowing for some inevitable bias. Others who may remember what I have forgotten are invited to fill in some other angles!

Roger Henry was convenor of the group for the first six meetings, Mark Woodman followed for the next four meetings, Kees Pronk deputised at the next one, and Martin Schönhacker took over formally for the last one.

The first meeting was held at University of Nottingham, UK, 1 - 3 April 1987 (28 delegates, hosted by Roger Henry)

The second meeting was held at the University of Nice, France, 11 - 15 January 1988 (26 delegates, hosted by Jacques Farré)

The third meeting was held at the spectacular Timberline Lodge on Mount Hood, near Portland, Oregon, USA, 22 - 26 August 1988 (26 delegates, hosted by Randy Bush)

The fourth meeting was held at the Johannes Kepler University of Linz, Austria, 10 - 14 July, 1989 (25 delegates, hosted by Günther Blaschek)

The fifth meeting was held at the Open University, Milton Keynes, UK, 4 - 7 June 1990 (32 delegates, hosted by Mark Woodman)

The sixth meeting was held at the University of Tübingen, Germany, 1 - 5 July 1991 (30 delegates, hosted by Herbert Klaeren)

The seventh meeting was held at the Technical University, Delft, Netherlands, 21 - 25 September 1992 (16 delegates, hosted by Kees Pronk).

The eighth meeting was held at Trinity Western University, BC, Canada, 14 - 18 June 1993 (20 delegates, hosted by Rick Sutcliffe)

The ninth meeting (the only one south of the equator) was held at Lake Wanaka, New Zealand, 4 - 8 April 1994 (12 delegates, hosted by Keith Hopper)

The tenth meeting was held at the Vienna University of Technology, Austria, 31 October - 4 November 1995 (13 delegates, hosted by Martin Schönhacker)

The eleventh meeting was held at Oxford Brookes University, UK, 3 - 6 June 1996 (12 delegates, hosted by David Lightfoot)

The twelfth meeting was held at Johannes Kepler University of Linz, Austria, 17 - 18 March 1997 (8 delegates, hosted by Martin Schönhacker)

One notes with some amusement that what was left of the group decided to investigate the relationship with Java(TM). Oh well, if you can't beat them, join them!

Back to contents


Members

Many of the people who contributed to the effort are worth commemorating. Here is a photograph of the WG13 standardization committee, taken in Linz, Austria, at their fourth meeting, in July 1989.

26 K 241 * 394 JPG image of WG13 group of 1989

Tom Pittman (US) took the picture, and is thus not in it. Willi Steiger is clutching a much loved copy of PIM, which included Wirth's 33 page report, and Roger Henry, chairman at that stage, is holding an early draft by Don Ward of what was to become a standard document of about 700 pages.

The members present on that occasion were:

Back row: Rick Sutcliffe (CA), Mark Woodman (UK), Martin Schönhacker (AT), Wolfgang Redtenbacher (DE), Jacques Farré (FR), Pat Terry (SA), Franz Engelmann (DE), Barry Cornelius (UK)

Middle row: Günther Blaschek (AT, host), Derek Andrews (UK), Kim King (US), Willi Steiger (CH), Herbert Klaeren (DE), John Gough (AU), Frode Odegard (NO), Elmar Henne (DE), Stan Osborne (US), Benjamin Kowarsch (DE)

Front row: Keith Hopper (NZ), Albert Meier (CH), John Souter (UK), Roger Henry (UK), Don Ward (UK), Kees Pronk (NL).

Other active members of WG13 at the time, but who were not present at this meeting, included Randy Bush (US), Brian Wichmann (UK) and Zheng Guo Liang (China).

By this fourth meeting, Robert Firth (US), Chuck Bilbe (US), Don Baccus (US), Martin Odersky (CH) and Marius Schoorel (NL) had already lost interest.

Other members who attended at least a few meetings included Brian Wichmann (UK), John Lancaster (UK), David Lightfoot (UK), Dan Resler (IL), Eberhard Enger (DE), Martin Schleußer (DE), Albert Wiedemann (DE), Günter Dotzel (DE), Frank Bender (DE), Richard Thomas (AU), Peter Moylan (AU) and Steve Cater (US). And several other people contributed in small ways, but did not really have a sustained attendance at meetings.

Back to contents


Implementations of ISO/IEC Modula-2

Many of the original implementors of Modula-2 have not bothered to upgrade their compilers to comply with the new standard, preferring instead simply to abandon them. However, several more-or-less conformant implementations exist:

Gardens Point Modula-2

xTech Development Systems

P1 Modula-2

Stony Brook Modula-2

Details of these, and in particular, distributors of such products, are available in a Modula-2 FAQ maintained by Rick Sutcliffe which can be retrieved by anonymous ftp from the site ftp://FTP.twu.ca/pub/modula2/m2faq.html

Back to contents


Déjà vu, and hindsight

Students of programming language history will be quick to observe that much the same "creeping featuritis" has characterized the efforts to standardize other languages, not the least of which was C++. However, C++ has had the combined weight of the UNIX and Microsoft communities behind it, and so the ultimate success of that project was less at risk.

Another standardization effort that lost support from some of its initial supporters was Algol-68, and readers may be interested in an extract from The Emperor's Old Clothes - the ACM Turing Award lecture by Tony Hoare, delivered in 1980, which draws some interesting parallels.

Back to contents


Ten Little Modulans

(written in 1991)

Back to contents