The Perils of Contract Driven Free Software
Over the years I have been able to do a of lot hacking while working on contracts to extend GnuPG. This contract work allowed me to continue my regular work on GnuPG on my own time. This is a kind of collateral benefit. If the ordered extensions are mainly interesting for the client, there is no big problem. The costumer gets what he wants, the public may use the new features if they are useful to them, and I can make a living.
A problem occurs if extensions are ordered which are directly useful for the public or even have been suggested for a long time. In this case I often had to delay work on such features, either to wait for a customer or to settle the development contract. That is because most clients don’t like to pay for stuff which has already been implemented. If the negotiations take long (sometimes more than a year), it is annoying for the public that they have to wait for new features for a long time — despite that it is sometimes only a few days of work. The problem is that a particular feature is part of a longer list of features a client has asked for. Striking out work item after work item during the negotiations, because they have have been implemented in the meantime, might be good for the client but not for me. They may even make the client believe that he only needs to talk a few more weeks to cut down the price even more.
Thus my conclusion is that development contracts done in the standard IT business manner don’t work well in the free software world. They don’t foster development but destroy the very benefit we have with our “community” driven style of development: creativity and the avoidance of features introduced to justify a higher price.
So, how can professional free software development be done without falling into this pit? I have no clear answer to it. As a prerequisite clients need to understand that they benefit by all means of development; whether done by a contractor or independently by someone else. Ideally they should donate to a global project fund to support general development. Individual contractors may still be hired for quality assurance tasks and to oversee the development of features required by the client. It will be hard to work against fixed deadlines; but how often have such deadlines been kept anyway?