Building a Universal Archive of Source Code
cacm.acm.org
cacm.acm.org
Lorie proposed a "universal virtual computer", or UVC, to solve this problem, but it omitted the description of the peripherals (which, I'm told, was the hardest problem in bringing up the Spacewar emulator) and additionally has such a loosey-goosey definition that no reimplementation from the spec could conceivably be compatible with any other implementation.
Chifir, from Nguyen and Kay's paper, is a proposed solution to this for the problem of one single computer. You can implement the CPU part of Chifir in under an hour. We can probably come up with a better bootstrappable CPU; Chifir shows a promising direction to go in.
The biggest serious project in the direction of an archive of buildable source code is Debian. Thousands of volunteers work constantly to ensure that every version of every package can be built from source at the time, and it's mirrored all over the planet to protect from accidental loss. Unfortunately, Debian doesn't have a commitment to maintain compilability of old versions, although they do retain the source code.
How do they intend to archive the generated documentation of software? How do they intend to keep this stuff running? How do I even "run" a generic code for something in an arbitrary github archive? Just storing and presenting git repositories nicely doesn't sound like a breakthrought, especially if it is a clone of github, i.e.
My experience of software development is that just having the source is close to worthless unless you also have some way of building and running it.
For instance I just downloaded Microsoft's WCF samples. Even with the instructions I am unable to use them because the instructions do not apply to the platform I am using (Win10 Home). If something current from a major supplier that is, presumably, interested in making it work doesn't go then what hope is there for something decades old that runs on an OS and hardware that no longer exists?
Many old languages could be preserved by implementing AST based interpreters, even non-dynamic languages. Better than having the source and building and running it, is the ability to powerfully debug, monkey patch, and query the runtime.
The idea is that absolutely anything could be rebuilt, if needed.
Not sure what they do for old development hardware! An interesting question, if you can't run Windows 3.1 on the latest Dell, or whatever. (Or... VMS...) Virtual hardware, perhaps?