Opening up free software development through mandatory contracts
Free software development is already, at its bazaar best, an open process in which the barriers to entry are low, and in which anyone with a modicum of politeness and technical competence can get bugs affecting them fixed and new features implemented.
However, there are many projects on which for various reasons this doesn't happen. Either the maintainers are overworked or have lost interest and development is slow, or the programs are large, complex and relied on by many people, so development is strictly controlled (as in the case of Firefox, OpenOffice, Linux and the core command-line utilities).
If all these programs had comprehensive contract suites, where contracts covers unit tests, system tests, and other metrics such as performance, memory consumption, code size, and even age of changes (for example time without bugs being filed against them) then a lot of these programs could be opened up to more participants: the tests would automatically provide a large part of the oversight that currently absorbs much of the time of project leaders, who are often also the most productive programmers.
This is not a silver bullet, nor is it the only option: version control systems that allow decentralised operation and easy branching, for example allow the spectrum between mainline releases and personal hacks to be populated more easily and fully; but for the greatest number of users to benefit from the widest array of programming talent, changes must, except where a fork is justified, go upstream as far as possible.
Now I just have to persuade myself to adopt a test-led programming style. Or even to write some tests. Sigh…
Reuben Thomas, London, 8th November 2006
Last updated 2017/05/11