While development of software always implicitly takes place in contexts of inherited entanglements and legacies, its maintenance deals explicitly with what is already present. Software maintenance locates itself in media res, in the middle of things. Maintaining software typically involves intervening in the material archive of source code, documentation, and software tools. Doing so successfully requires relevant situated knowledge of how the software at hand already hangs together, and how to effectively put this knowledge to use. This knowledge builds on first-hand experience, acquired in practice over shared lifetimes of people and code. For code to continue to endure over time, ongoing articulation of its entanglements is externalized and materialized across contributing programmers and software development tools, each themselves vulnerable and in need of maintenance. This paper analyzes how this process of externalizing and materializing knowledge is negotiated. We conclude that the common knowledge which suspends the string figure of software in time and in a broken world (Jackson 2014) is always a locally hybrid assemblage which carries this knowledge forward. Hence, to maintain software well is to add on to its legacy.
Read full abstract