Quiz: if you want to write a computer program to run 200 years from now, what programming language should you use?
I’ve got a guess, and while I won’t be around to find out, it’s an experiment I plan to perform. But first some background.
Digital archiving is harder than it looks, even if you ignore hardware deterioration. There’s only one file format I can reasonably say has stood the test of time: 7-bit ASCII (a.k.a. Plain Text.) It’s the one format that all of the computers I’ve used have been able to handle, from my dad’s Heathkit H-89 to my Palm Pilots. In contrast, the letters I wrote in Word 1.0 in junior high were unreadable by Word 5.0 in college. When I discovered HTML in 1993, I immediately saw it as a credible replacement for ASCII. The main reason was that it was built on top of ASCII: even if all the web browsers went away, you could still understand it by reading it as straight ASCII. What’s more, it had cross-platform mass appeal. (Or at least potential: it hadn’t actually caught on yet.) And it had been designed with both backwards and forwards compatibility in mind: the specification had rules for how old browsers should handle unknown or newer versions of HTML. At the time, most file formats were more like Word 1.0: tied to a specific program version, with no guarantee that newer versions would be able to read it.
I still think HTML is the most future-proof file format after ASCII. HTML is now 20 years old, and the latest browsers can still handle the oldest web pages. These days, HTML is more verbose and is rarely hand written, but most pages can still be read as plain text by a determined reader. What’s more, it continues to evolve gracefully, so it’s unlikely to get replaced the way MP3 replaced MOD (remember MOD?) or JPEG-2000 could replace JPEG.
Which brings me to the Seventh Generation project. I’m thinking of not just printing out letters, but making them available online. I don’t think leppik.net will still be around, but someone will have archives. So how do I keep people from reading the letters too early? I plan to encode them and provide a script that will decode them at the appropriate time. (No fancy encryption, that wouldn’t last; ROT-13 should be enough to keep the honest from accidentally seeing too much.)