「代码恒久远,bug 永流传。」前不久,GitHub 帮广大程序员把这个噩梦变成了现实。
上周,这家全球最大的开源代码托管机构表示:今年的 7 月 8 号,我们已经把大家 2 月 2 号之前开源的项目代码安全送到了北极,预计存个一千年没有问题。
为什么要费这么大劲存一堆代码?GitHub 曾在去年的 GitHub Universe 大会上解释说:首先,这些代码都是人类文明的宝贵财富,但现有的存储介质都不足以让它们长期保存下去,一旦丢失,后代就要重新造轮子;其次,天有不测风云,万一哪天哪个天灾人祸让地球回到原始时代,起码还能留下点火种,让后代在这个基础上重建新一轮的计算机文明。
GitHub 的担心不无道理。且不说外星人入侵、核战争之类的全球毁灭性灾难,就是在正常情况下,人类文化遗产也有不少一度或永远消失在历史长河中,比如古罗马的混凝土工艺。
因此,GitHub 就想到了这个极富远见和科幻色彩的方法——将代码存到北极。
这个项目名叫 GitHub Archive Program,宗旨是为子孙后代留下一个名为「GitHub Arctic Code Vault」的开源项目代码库,具体做法是为网站上每个活跃的开源代码库创建「快照」,然后将其存储在胶片上运往北极。
受疫情影响,该计划最近才被完成。
如果你在今年 2 月 2 号之前向 GitHub 提交过开源项目代码,那么恭喜你,你的代码很可能已经静静地躺在北极了。
为了表彰广大开发者对开源项目的贡献,GitHub 设计了荣誉徽章(图上的「Highlights:Arctic Code Vault Contributor」字样)。如果你的 GitHub 个人主页下方也有这个徽章,表明你的代码去了北极。机器之心的已经去了。
21TB 代码的北极之旅
此次运往北极的代码达到了 21TB,存储在 186 卷数字光敏档案胶片中。这些胶片来自一家名为 Piql 的挪威公司。据报道,常见胶片的寿命约为 500 年,但 Piql 的胶片在 1000 年之后仍能读取。
代码以二维码的形式存储在胶片上,每一帧可以容纳 880 万个像素。
这些胶片从 Piql 在挪威德拉门的办公地点出发,被打包运到首都奥斯陆机场。它的最终目的地是 600 英里(1000km)外的斯瓦尔巴群岛。
经过上千公里的飞行,代码安全抵达斯瓦尔巴群岛的朗伊尔城。这里的山上有一个「退役」的煤矿,你的代码就被安置在煤矿几百米深处永冻层的一个房间。这一区域被称为人类文明的「诺亚方舟」,全球种子库也在这附近。
一份写给未来的读取指南
GitHub 这一项目的科幻色彩贯穿于每个细节。考虑到一千年后的人类不一定能读懂今天的代码,GitHub 贴心地为每份文档附加了一份「指南」。
指南的开头这样写道:「你可能在一年或一千年之后读到这篇文章,但无论是哪种情况,我们都希望文中的概念,或者说开源的概念,对你有所帮助。」
接下来,他们又简单地介绍了一下二进制、计算机、软件、编译等基本概念,以及如何解码胶片上的信息。
由于不确定人类将来使用何种语言,GitHub 将这份指南用五种语言各写了一遍。
尽管已经解释地非常仔细了,但 GitHub 觉得,后代还是有可能打不开这些文件,因为他们可能缺乏一样最重要的东西——计算机。
地球上最早的人类文明诞生于数千年前,但现代计算机直到最近几十年才出现。如果再经历一次文明重建的过程,我们的后代是不是还要花这么长时间?GitHub 显然已经想到了这个问题。因此,除了代码读取指南之外,他们还留下了另一样东西——「科技树」。
「科技树」是一个独立的人类可读卷轴,里面主要包含现有的工作,旨在让后代对现代计算、开源及其应用、现代软件开发、流行编程语言等有一个详细的了解。
此外,它还包含理解软件所需的多层技术基础,如微处理器、网络、电子、半导体,甚至工业社会前的技术。有了这些技术,我们的后代就有可能重新造出现代计算机。
有人在 GitHub 的这份指南中读出了《流浪地球》般的史诗味道,感兴趣的读者可以前去阅读全文:https://github.com/github/archive-program/blob/master/GUIDE.md。
被封存的不只是代码
在 GitHub 公布代码已经安全抵达北极的消息之后,开发者们纷纷晒出自己的代码被选中的喜讯。
有人将这个项目的「浪漫」演绎到了极致:
但对于另外一些人来说,浪漫永远是别人的:
还有人担心后代看不上自己的代码:
更有意思的是,有人提醒说,GitHub 上几屏都拉不到底的女装教程「Dress」也被冻在了北极:
GitHub 上著名的女装项目,star 量 17.6k,贡献者有 248 位。该项目已经得到了 GitHub 给的徽章。
让我们猜测一下后代打开这个项目之后的反应:
除了北极的这个存储库之外,你的代码(和照片)还有可能会出现在互联网档案馆(IA)和软件遗产基金会(Software Heritage Foundation)的库里,因为他们都和 GitHub 展开了合作,前者已经归档了大约 55TB 的数据,后者也已经归档了超过 1.3 亿个项目。
看来,以后写(传)代(照)码(片)也要多长点儿心了。
GitHub:1000 年不够,我们还打算存几万年
对于一个个体的生命来说,一千年已经很长了。但从整个人类的历史来看,时间是以「万年」为单位的。因此,GitHub 一直在寻找更加持久的存储方式。在最新的博客中,他们介绍了 Project Silica——一种借助石英玻璃存储代码的方法。
这种存储方式是通过永久改变玻璃材质的物理结构实现的,能够抵抗地磁干扰,还能防水防热,可以将数据存储数万年。
目前,GitHub 已经借助该方法存储了 6000 多个全世界最流行的开源项目,而且这个数字未来还将持续扩大。
最后提醒一句,如果不想被存几万年,现在删掉一些东西可能还来得及。