Today I began rereading Brooks’s The Mythical Man Month, and in the first chapter, where Brooks talks about the craft of programming, there is an interesting passage:
The dependence upon others has a particular case that is especially painful for the system programmer. He depends upon other people’s programs. These are often maldesigned, poorly implemented, incompletely delivered (no source code or test cases), and poorly documented.
What a lovely idea, that source code is part of the complete software package. Even though Brooks is only talking about delivering source code to system programmers, I think the idea is much more broadly applicable. The world of computing would be a much nicer placer, if source code was a part of the software package normally, and not exceptionally as it is today.