Titus Brown recently asked (on behalf of a friend) what people think of the term and practice of "hardening" software, by which he meant making research software more robust, more easily usable, and possibly scalable. Several people responded that "hardening" is usually used to mean "make more secure", and that what Titus's correspondent was really asking about was something we don't have a simple word for: making software ready for production use. As Morgan Taschuk wrote, this involves eliminating hard-coded paths, adding useful error messages, incorporating command-line flags to turn features on and off, and many other things that aren't really necessary if the program is only ever used by its author on her own machine and data, but are essential to institutional scale-up, i.e., to making the software usable by other people, in other places, on other problems.
Titus would like to hear what other people think of this practice—comments on his post would be welcomed. I would personally be grateful for a fuller list of the steps that often need to be taken to turn what graduate students duct-tape together for themselves into tools that others can rely on: it would be a great core for an advanced lesson.
I'd also be grateful if someone could invent a catchy term for doing this. Years ago, some friends and I started using the term "to blaise" to mean "to improve a program's performance". We took the word from Blaise Pascal, who famously apologized, "I made this very long only because I did not have the time to make it shorter." It never caught on, but that's no reason not to try again. Who deserves to be immortalized (with a very small 'i') as a verb meaning, "to make fit for widespread use"?
Dialogue & Discussion
You can review our commenting policy here.