Keith Bierman's Weblog

Keith Bierman's Weblog

All | General | Java | Music

20040816 Monday August 16, 2004

Standards Do's and Don'ts Bill Moffitt makes the plausible, but naive assertion that Standards bodies should only cannonize existing practice. While I agree with many of his sentiments about what Fortran became from Fortran "90" onwards, his assertion

This was a breach of the implicit goal of a standards body: a standards body should only codify what they can agree is the de-facto standards and not drive the technology

betrays the fact that Bill has been in Marketing too long (Bill is a good friend, and a generally sane person). Consider the plight of folks trying to get a new media type adopted, as an example of the kind of Standard that must drive technology. If the media company tools up and ships media without there being a drive that can employ it, it will certainly fail. Similarly for the drive vendors (the best removable drive, and even a standardized one, is useless without media).

More generally, anytime the "starting problem" (see my previous blog entry) rears it's ugly head, a Standards effort to drive the technology may well be an optimal approach to minimizing wasted investments, shorten the adoption curve, and otherwise improve Life, the Universe, and if not Everything, at least most things.

Now, as to the sad case of Fortran (I was on the Committee for a dozen years, and had been a formal observer for another couple before that) it's a long sad saga (and Brian Meek, who Bill references, was hardly an unbiased observer to say the least).

To make a long and painful story short enough to learn key lessons from:

  1. The Committee was roughly divided into two nearly equal factions, let's call them the Progressives and the Conservatives. The Progressives wanted to create a throughly modern language that would run all existing Fortran codes, and preserve the performance characteristics that made Fortran valuable to the high performance crowd. The Conservatives felt that it was virtually impossible to ensure either of those requirements (since all real codes depended on various vendor extensions and implementation details, and the new Standard was radical enough to require a rewrite of the compilers) and that the appropriate behavior for the Committee was along the lines of what Bill suggests. (In the interest of honesty, I was on the wrong side of that issue at the time. I was a Progressive. I repented after it was too late).
  2. Due to the voting rules, the Committee lurched from one side to the other, taking what had been a pretty coherent (if overly ambitious) document, tossing nearly all of it away (when the Conservatives were on the upswing) and then putting each feature back in piecemeal (losing the structural integrity of the original) over the course of many years as the Progressives recovered their majority. This was the worst of all worlds, a major update, which was very late and no longer done "well"
  3. Both sides were, alas, in agreement that we needed to keep everyone in the One Big Tent. That is, to keep all of the warring factions together. Had we split into two efforts, we would have had two stronger languages. Just as Algol begat C, which begat C++ which begat Java, we would have had something like Classical Fortran as the result of the Conservatives, and something similar to Mathematica for the Progressives (well, probably not an entire environment, but a modern language without the baggage). Both could have been done faster, and probably better.
  4. An example of what happens when you have two closely matched sides, there were two different user requirements for a "bit" datatype. There were two factions on the committee. As a result, no bit datatype made it into the language. The needs didn't go away; but they remain unrequited 20 years later....
But hindsight is better than foresight.

I think it worthy of mention that even during the worst of the battles, the individuals remained cordial and friendly relations were the norm. This was a tribute to the professionalism and to the culture that the Committee had bulit up and maintained over the course of several "generations" of membership.

This all came to an end, long after the camps largely evaporated, due to one particular individual's (a newcomer at the time) influence. It was a very striking lesson to me in human dynamics; the power (albeit negative) of one.

So a few of my lessons:
  • Clearly there was (and is) great value in ensuring that all old codes continue to run. This is one of the riches of Fortran, virtually all the significant code ever written is still usable!
  • Clearly the "starting problem" for the "progressive language" was greatly reduced (in some ways) by ensuring that the existing body of Fortran was compatible.
    • But sometimes two rights make a wrong. By being a decade late, everyone suffered. Users ended up going elsewhere. Vendors ended up with huge costs to bring new compilers to market.
  • Once started, an ISO standards effort will complete if there is *anyone* who wants it to ... even if it's the wrong thing. It's virtually impossible to stop. Our procedures for standards making need to be improved.
  • There is a time for a Standard to drive technology --- usually when the technology is young. After that, Bill is right, the Committee should behave in a Conservative fashion and leave innovation to implementors ... or new Standards ... but not revisions of an existing Standard.
  • While it is necessary in the US (and no doubt other venues) to permit wide participation to avoid anti-trust issues, not having any barriers to entry, or checks on membership can result in a small number (even a single individual) to wreck immense harm to the process. Behavior which would merit immediate dismissal from employment may well have no penalty (other than social) within the Committees.
  • When a Committee is deeply divided, and the divide is nearly down the middle people should think long and hard about the advisability of "splitting up" rather than splitting heads.
(2004-08-16 22:58:46.0) Permalink

Comments:

Post a Comment:

Comments are closed for this entry.

Calendar

« November 2009
SunMonTueWedThuFriSat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
     
       
Today

RSS Feeds

XML
All
/General
/Java
/Music

Search

Links


Navigation



Referers

Today's Page Hits: 109