Interesting, this is something I’ve thought about as my Selenium automation against an every-changing codebase mixed with regular browser updates requires constant upkeep. I enjoyed the examples of software rot and the classification system.
This appears to be at a much lower level than my Selenium / browser / webapp example and a pitch for their apparently proprietary Rosetta Stone style polyglot language or system called ProgBase. Their discussion of technical challenges looks like a list of functional programming language features and an argument for a simple language. I couldn’t find language examples, only output examples, but I only took a cursory look.
Have there been other evaluations or systematic classifications of software rot along these lines? Other attempts at evergreen code? I can think of some generalizations, from successful open source’s continually evolving code-bases (Linux kernel maintaining drivers in-tree instead of a stable kernel API) to Microsoft’s heroic efforts to support certain versions of software as Windows is updated. At the language level you have Go’s emphasis on compatibility, C’s relative stability as a language, languages like Nim that cross-compile to various languages, JVM, ParrotVM, GraalVM, and the like. History gives us financial and government institutions maintaining long-lived COBOL and other codebases, we also have the libraries in FORTRAN like BLAS and LAPACK that are available as libraries.
This appears to be promoting a product/service which helps companies to create software which lasts for centuries. I can’t help thinking that:
a) Most companies aren’t that long sighted
b) One of the most likely forms of ‘rot’ in commercial software is changing specifications. i.e. The software can continue to work as designed for centuries, but the spec changed a few months after it was written, so it has effectively stopped working.