Archives and time capsules#
SLOP8374 · Week 9
Software Heritage#
The largest archive of source code ever assembled: hundreds of millions of projects, harvested and content-addressed.
It preserves the code. Hold that thought.
The Internet Archive#
The Wayback Machine preserves the web as it was rendered — including the project pages, the download links, and the forums the code lived inside.
Often more useful for a dig than the repository itself.
The Arctic Code Vault#
In 2020 GitHub wrote 21TB of public repositories to film and put it in a decommissioned coal mine in Svalbard, rated for a thousand years.
It includes a guide explaining what a computer is.
Ask what a reader in 3020 would still be missing.
Archiving source code is easy.
Archiving the ability to run it is nearly impossible.
What the vault left out#
The snapshot took the HEAD of each default branch, and only that. No issues, no pull requests, no review history. Binaries over 100KB were dropped unless the repo had 250 stars or more.
Inclusion was keyed to activity: commits in the months before 02/02/2020, or at least one star plus a commit in the year prior, or 250 stars outright.
A project already dead in 2019, with a handful of stars, met none of those tests. The vault preserves what was alive — which is precisely not your dig site.
The executability problem#
Every one of these is a link in the chain:
- The runtime version
- The OS and its system calls
- Environment variables nobody documented
- A service that no longer answers
- The hardware itself
Break one link and you have a text file, not a program.
Why builds break#
| Failure | Example |
|---|---|
| Language version | Python 2’s print "hello" is a syntax error in Python 3 |
| Removed function | C’s gets() will not compile on a modern toolchain |
| Yanked dependency | The package is gone from the registry |
| Changed API | The library moved on; the old signature did not survive |
| Missing build tool | A native module needs an interpreter nobody ships now |
| TLS changes | An old client cannot negotiate with a modern server |
Preserved is not the same as runnable.
Case study: the BBC Domesday Project#
In 1986 the BBC recorded a national survey onto laserdisc, read by a custom Acorn system.
By 2001 it was unreadable — the hardware was gone. Restoring it took a dedicated emulation project.
The 900-year-old parchment Domesday Book was fine.
Container archaeology#
Try it: can you docker build a 2014 Dockerfile?
Usually not. The base image moved, the package mirrors went away, the keys expired. Containers date faster than most people expect.
Required reading#
Rothenberg, J. (1995) ‘Ensuring the Longevity of Digital Documents’, Scientific American 272(1), pp. 42–47.
Di Cosmo, R. and Zacchiroli, S. (2017) ‘Software Heritage: Why and How to Preserve Software Source Code’, iPRES 2017.
Before next week#
Try to build and run your dig site. Document exactly where it fails.
Then write what would be lost if the repository were deleted tomorrow — beyond the code.