Dan Bricklin, one of the co-inventors of Visicalc, has posted a nice article entitled Software That Lasts 200 Years. He points out that software which helps form societal infrastructure is necessarily concerned more with the long term and total cost of maintenance, and is poorly served by the normal business models which are common in the software industry.
I had a fairly similar notion a while ago. As a recreational programmer, I’ve written dozens if not hundreds of programs for my own enjoyment and experimentation. Every once in a while, I go through and make sure that they all compile and work, and maybe dust one off and extend it in a new direction. Most of the time, this is simple, but occasionally it requires more work. Since I had been working on a simulator for the PDP-1, I hypothesized creating a full machine simulator for an entirely hypothetical machine (probably resembling a MIPS processor of some sort). My software would target this machine, and my work would then merely need to target this emulator.
There are many practical problems with this approach (such as the need to maintain a compiler for the target). It’s hard to maintain the entire stack in some bootstrappable form. Perhaps if I reread Bricklin’s essay with an eye toward increasing maintainability, I’ll make more progress in my thoughts.
Oh well, time for breakfast.