In a recent meeting, there was some discussion about a potential workshop recommendation that funding agencies should offer relatively small grants that would just be used for maintaining existing software, but not doing any new development. I had very mixed feelings when I heard this, and decided I would write up my thoughts and see what others felt too.
On the positive side, there is software that is important to a community but is not well supported, which causes problems, for example, OpenSSL and NTP. Some small and regular amount of funding for maintenance of software like this would likely be useful. And this would address some problems about the ethics of depending on unpaid labor. We might think of this like oiling a moving machine, or patching potholes in a road. This infrastructure is fairly static, though it does need maintenance.
On the negative side, it seems to me that there are very few such scientific packages, where both the requirements and the underlying technologies are static. If the requirements for the software are changing, or the underlying techniques, algorithms, or technologies are changing, then we really want to fund the project to recognize that full changing environment and to do the work that is needed to respond. We might think of this as a living creature, which has to continually reinvent itself to survive in its changing environment. If such a project is only funded a small amount, just for maintenance, this is a project that is going to die soon, and we are just putting off its death a bit. And it might be a better idea to let it die and start working on the next project that will better meet the new requirements.
Don’t take this to mean that I think software maintenance is unimportant – it clearly is. The question I’m trying to address here is if software maintenance without development is a good idea, and if so, under what conditions.
What do you think?
Some work by the author was supported by the National Science Foundation (NSF) while working at the Foundation; any opinion, finding, and conclusions or recommendations expressed in this material are those of the author and do not necessarily reflect the views of the NSF.