Martin Pool's blog

TAOUP: Open source and code reuse

I think the best and most insightful section of TAOUP is that on why software reuse drives programmers to free software:

Why do programmers reinvent wheels? There are many reasons, reaching all the way from the narrowly technical to the psychology of programmers and the economics of the software production system. The damage from the endemic waste of programming time reaches all these levels as well.[...]

Beneath the surface gloss of their demo applications, the components he is re-using seem to have edge cases in which they behave unpredictably or destructively — edge cases his code tickles daily. He often finds himself wondering what the library programmers were thinking. He can't tell, because the components are inadequately documented — often by technical writers who aren't programmers and don't think like programmers. And he can't read the source code to learn what it is actually doing, because the libraries are opaque blocks of object code under proprietary licenses.

Newbie has to code increasingly elaborate workarounds for component problems, to the point where the net gain from using the libraries starts to look marginal. The workarounds make his code progressively grubbier. He probably hits a few places where a library simply cannot be made to do something crucially important that is theoretically within its specifications. Sometimes he is sure there is some way to actually make the black box perform, but he can't figure out what it is.

This should be familiar to anyone who's tried to make nontrivial use of a complex closed library.

I wrote a while ago about why this meant the Objective C / "Superdistribution" idea of reusable closed components was doomed from the start.

Of course RMS has been saying this all along...

I think this is one reason why many of the best programmers want to work on open software, and will do it in their spare time even if they can't get a satisfactory day job. If you're going to bother to write the best code you can, you don't want it to be lost in a couple of years when the original project is killed for business reasons.

Archives 2008: Apr Feb 2007: Jul May Feb Jan 2006: Dec Nov Oct Sep Aug Jul Jun Jan 2005: Sep Aug Jul Jun May Apr Mar Feb Jan 2004: Dec Nov Oct Sep Aug Jul Jun May Apr Mar Feb Jan 2003: Dec Nov Oct Sep Aug Jul Jun May