Subject: Re: Control of collaborative development projects?
From: Russell Nelson <nelson@crynwr.com>
Date: 8 Dec 1997 19:36:57 -0000

L. Peter Deutsch writes:
 > In answer to your question, I've believed for decades that the APIs, not the
 > individual routines or even data structures, are the hardest and most
 > important part of a software system design, and require the most skill and
 > experience to specify in a way that won't break as the system evolves.

Like, for example, specifying a file format which doesn't break when
you add things to it (e.g. "The first three tab-separated things on a
line have the following three meanings.  If you find things beyond the
third, keep them with the record even though you don't know what they
are.")

I agree here, Peter.  There are a lot of mistakes to be made here, and
it's probably best to have made more rather than few.  So if you're
setting up a team of freed software developers, put your senior member
on specifying APIs.

Or else you'll wind up reengineering things as the Linux project is
doing, e.g. with the filesystem API in 2.1.*, or as the network device
API needs to be fixed (a little).

-- 
-russ <nelson@crynwr.com>  http://www.crynwr.com/~nelson  | Freedom is the
Crynwr Software supports freed software | PGPok |   primary cause of peace.
521 Pleasant Valley Rd. | +1 315 268 1925 voice | Obedient, Christian, statist:
Potsdam, NY 13676-3213  | +1 315 268 9201 FAX   |    you only get to pick two.