Subject: Re: Control of collaborative development projects?
From: "L. Peter Deutsch" <ghost@aladdin.com>
Date: Thu, 11 Dec 97 21:14 PST

> I am not convinced that this is possible.  Software I have seen that was
> completely designed and then completely implemented tends to be designed
> badly; software I have seen whose design evolved along with the code is
> often superb.  Most software people write for the use of a class of people
> including themselves is written this way, I think.

On the other hand, APIs that are designed as they go along jerk around the
developers on both sides of the API and can lead to massive unhappiness and
eventual abandonment of the project in frustration.

I took a somewhat absolutist position about designing APIs before their
clients and implementations.  It really is a function of the size of the
developer community.  If you have thousands of developers writing to an API,
there is a very high cost to changing anything in a non-backward-compatible
way; if you have a few dozen, the cost is much lower, and it may be a lot
more effective to put out something pretty good that can then evolve, simply
to get it into the light of day sooner.  An example of the former is the
Windows GDI and the Java core classes, neither of which (in first
approximation) can ever be changed in a non-backward-compatible way.  An
example closer to the latter is the Ghostscript driver interface.  Even so,
the two times I made non-backward-compatible changes to improve the design,
there was a big outcry from driver writers (of whom there were a lot more
than I realized); since then, even though it has caused a certain amount of
cruft to accumulate, I've kept the changes backward-compatible.

> ... thought cannot substitute for experience.

No disagreement there.  On the other hand, careful thought by a group with a
lot of relevant experience can go a long way.

-- 

L. Peter Deutsch         |       Aladdin Enterprises :::: ghost@aladdin.com
203 Santa Margarita Ave. | tel. +1-650-322-0103 (AM only); fax +1-650-322-1734
Menlo Park, CA 94025     |        http://www.cs.wisc.edu/~ghost/index.html
*Oppose bulk-mail abuse of your mailbox and newsgroups: http://spam.abuse.net*