编者按:本文来自“InfoQ”(微信公众号ID:infoqchina),作者:赵钰莹,36氪经授权发布。
近日,GitHub 年度开发者大会 GitHub Universe 2019 正式拉开帷幕。GitHub 在峰会现场宣布了一项永久保存代码计划——GitHub Archive Program,通过不间断的跨各种数据格式和位置存储多个副本的方式来保护开源软件代码,至少保存 1000 年。
开源软件的出现为科技发展提供了动力,这也是全人类的共同遗产。 GitHub Archive Program 的任务就是最大可能为后代保留这些开源软件。为了完成这项计划,GitHub 与 Long Now Foundation、the Internet Archive、the Software Heritage Foundation, Arctic World Archive、Microsoft Research、the Bodleian Library 和 Stanford Libraries 合作,通过不间断地跨各种数据格式和位置存储多个副本来保护代码,维持至少 1000 年的长期存档。
GitHub 表示,尽管发生全球性灾难的可能性很小,但所有存储在现代设备平台上的内容都可能会在几代后消失,跨多个组织和存储形式的归档软件将有助于确保其长期保存:在线归档员将其称为“ LOCKSS”,因为大量副本可以确保安全。
目前,大量的知识存储在临时媒体设备上:硬盘、SSD、CD 可以使用数十年,备份磁带名义上只有 30 年的寿命,还得严格控制热量和湿度。即便未来这些硬件还在,但运行在上面的软件可能早已被淘汰, GitHub Archive Program 计划有更长远的打算,以解决数据在未来丢失的风险。
与此同时,这一计划也为受到访问限制的开发者提供了选择,如果 GitHub 在某些地方不可用,受影响的开发人员可以使用 Internet Archive 和 Software Heritage Foundation 访问其项目的公共代码。
在 Long Now 创始人 Steward Brand 的启发下, GitHub 采用“分层”策略来归档代码。通过提供从实时到长期存储的一系列解决方案,该方法旨在最大程度地提高灵活性和耐用性。存档程序分为三类:热门,一般和冷门:
热门:接近实时更新
一般:每月或每年更新一次
冷门:每 5 年以上更新一次
GitHub(以下各存储方案按热度排列,GitHub 为热门项目首选)
每次访问 GitHub,GitHub 都会将 Git 数据复制到世界各地的多个数据中心。此外,在 Git 的多个位置存储数据、问题、拉取请求以及数据备份,所有这些都可通过 GitHub API 实时获得。
GHTorrent
GHTorrent 监视 GitHub 公共项目的时间线,并进行归档,递归爬取归档内容和依赖性。这些存档每天或每月可供下载。
GH Archive
GH Archive 监视 GitHub 公共事件时间轴,将这些事件归档,并使用 BigQuery 使它们可查询。开发者可以按小时、天或月下载快照。
Wayback Machine
互联网档案馆 Wayback Machine 将检索 GitHub 的公共资料库(包括新的资料库、问题、拉取请求、Wiki 等),并将副本存储在旧金山和其他位置的硬盘上,这些档案将通过 git 和 https 公开提供。
Software Heritage Foundation
Software Heritage Foundation(软件遗产基金会)将定期抓取 GitHub,并将其公共存储库添加到存档中,并向其提供公共 API 访问权限。
Bodleian 图书馆
牛津大学的 Bodleian 图书馆将 GitHub 的 10,000 个最受关注和最依赖的存储库保留为 Piql 胶片格式,从而为 Arctic Code Vault 提供冗余。
GitHub Arctic Code Vault(北极)
2020 年 2 月 2 日,GitHub 会对每个活跃的公共存储库进行快照捕获,并保存在 GitHub Arctic Code Vault 中。存储所使用的胶片卷轴长达 3500 英尺,由专门负责研发超长期数据保存技术的挪威 Piql 公司提供并编码,其中的薄膜使用卤化银聚酯技术。根据 ISO 标准,这种介质的使用寿命长达 500 年;同时,老化模拟测试表明,其使用时长也能达到原来的两倍。
这是位于北极世界档案馆(AWA)中的数据存储库,位于北极山永久冻土区深 250 米。该档案馆位于斯瓦尔巴群岛的一个废弃煤矿中,比北极圈更靠近北极。 GitHub 将在 2020 年 2 月 2 日捕获每个活动公共存储库的快照,并将这些数据保存在 Arctic Code Vault 中。
斯瓦尔巴群岛受国际《斯瓦尔巴群岛条约》的管制,属于非军事区,是世界上最北端的城镇所在地,地球上最偏远和地缘政治最稳定的人类居住地之一。AWA 是挪威国有采矿公司 Store Norske Spitsbergen Kulkompani(SNSK)与长期数字存储提供商 Piql AS 的一项联合计划。 AWA 致力于永久保存档案,胶片卷轴将被存储在位于斯瓦尔巴群岛偏远群岛一座废弃煤矿密封室内的钢壁容器中。
尽管斯瓦尔巴群岛受到气候变化的影响,但在可预见的将来,可能只会影响到最外面几米的永久冻土,预计变暖不会威胁稳定性。矿山靠近著名的 Global Seed Vault(仅一英里之遥),这增强了斯瓦尔巴群岛作为人类集体知识的稳定且长期的档案馆地位。
存档在 GitHub Arctic Code Vault 中的 02/02/2020 快照将包括所有活动的公共 GitHub 存储库,此外还包括由星号、依赖项和咨询小组确定的大量休眠存储库。快照将由每个存储库的默认分支的 HEAD 减去任何大于 100KB 的二进制文件组成,每个存储库将打包为一个 TAR 文件。
为了提高数据密度和完整性,大多数据将以 QR 编码存储。易于阅读的索引和指南将逐项列出每个存储库的位置,并说明如何恢复数据。
微软研究院的 SILICA 项目
GitHub 存档计划与 Microsoft 的 Silica 项目合作,通过使用飞秒激光(目前科技条件下所能获得的最短脉冲激光)将所有活动的公共存储库写入石英玻璃片中,最终将其保存超过 10,000 年。
GitHub 正在召集 GitHub Archive Program 咨询小组,其中包括人类学、考古学、历史学、语言学、档案科学、未来主义等方面的专家,就应该在归档中包含哪些内容以及如何与继承者进行最佳沟通提出建议。
存档的简介将包括 QR 解码、文件格式、字符编码和其他关键元数据的技术指南,以便可以将原始数据转换回源代码,以供将来其他人使用。该归档文件还将包括技术树 - 路线图和 Rosetta Stone,以供将来好奇的人继承该归档文件的数据。
关于存档及其使用方式的概述,“技术树”将作为软件开发和计算的快速入门手册,并与该存档的用户指南捆绑在一起。它将描述如何从原始数据向后处理到源代码,以及如何提取项目的目录、文件和数据格式。
据报道,该档案还将包括应用开源的信息和指南,以及当下开发者使用开源的情况,以防将来读者需要从头开始重建技术。在人类拥有可以运行的现代计算机但没有可在其上运行的软件的范围内,档案及其技术树可能会非常有价值。但是,该价值很有可能是历史性的。
一千年是很长的时间,一千多年前尚未建成吴哥窟等古代遗址。但是,GitHub 认为可以考虑并计划在未来 1000 年内实现各种可能性,主要任务是为后代开发者保留开源软件,并打算将 GitHub Archive Program 作为开源社区重要性的证明。希望这项计划现在和将来可以进一步宣传全球开源运动,促进在全球范围内广泛采用开源和开放数据政策并鼓励长期思考。
封面图来自pexels