谈谈 GitHub

laike9m 先生曾于 2019 年撰写了题为 People Die, but Long Live GitHub 的博文。文章提出了一个颇有思考价值的问题:

如果你希望存储一段信息,让 100 年后的人也能访问,要怎么做?

他给出的答案是:

想来想去,也只有 GitHub 了。

近日在 悼念陈皓先生的博文 中,他也再次重申了这个观点:

Elon 想删除不活跃的账号,而 coolshell 也总有一天会因为欠费或域名到期而下线。此时,我也不得不再贴一次 《People Die, but Long Live GitHub》,希望大家开始认真思考这个问题。

但是 GitHub 其实和其他互联网服务并没有什么区别。你所珍视的东西,你所需要托付的东西,他们理论上却可以自由支配——尽管有着法律、隐私政策和公司规章的限制,但这些限制也可能成为他们支配你的数据的理由。

GitHub 作为「数据备份」为什么是不可靠的

首先是 DMCA 问题。近日有 几个破坏者在 GitHub 的 DMCA 仓库上发送 Spam 信息以表达对其 DMCA 政策的不满 。虽然笔者并不认同这些破坏行为,但是 GitHub 的 DMCA 政策确实遭到了滥用。试想任何公司都能通过一纸简简单单的版权主张,将你的仓库封禁,而你却没有任何申辩的机会——更不用说即使允许你申辩,成功的希望也是渺茫的。

其次是政治和贸易限制问题。或许生在欧美国家的人从不曾担心这个,然而对于 世界互联网的二等公民,这却是不得不担心的一个问题。GitHub 曾经 因为贸易禁令而封禁了伊朗的开发者,试想是否有一天,因为政治因素,来自中国的开发者也被封禁呢?这并不是 GitHub 的错,但是作为用户,我们也不得不为这些风险做好打算。

最后,几乎所有的互联网服务,你的账户都不是你的。不透明、不完善的风控规则和内部程序, GitHub 能够在没有预警的情况下,将你和你在 GitHub 上的一切成果都化为乌有。他们有权这样做,也有能力这样做,而个人面对这种情况,是相当无力的——你需要自证清白,而对方却不会做无罪推定。

GitHub 在作恶?

说实话,对于 GitHub 这样的企业,我是带着尊敬和崇拜的心境的。世界各地的开源参与者们,可以不分国籍、性别、年龄、种族、信仰,在一起工作、创造代码,即使这并非是 GitHub 一人之功,它的推动作用也是不可或缺的。而上面所列举的种种,或是出于政治与法律的因素,或是出于社区治理的因素,对于一家企业来讲,这些不可抗力也都可以理解。GitHub 是一个伟大的公司,直到它被 Microsoft 收购。

早在收购前,开源社区便有人敲响了警钟。但是大家都沉浸在无限免费的 Private Repository,GitHub Actions 和 Codespace 的喜悦中,赞美着 Microsoft 再次拥抱开源。但其实一切馈赠都在暗中标定了价格。Microsoft 需要 GitHub 庞大的代码库,你的代码、你的创造、你的遗产,不过是 Microsoft 用 75 亿美金获取的资产的一部分。我们 Microsoft 是什么时候开始布局,用代码训练 AI 的。但是 GitHub Copilot 对版权的漠视,让社区开始提倡 不要将代码上传到 GitHub

就在前几天,GitHub 又一次经历了服务降级。在 Microsoft 收购 GitHub 后,GitHub 故障的频率也越来越多了。或许这是由于越来越多的人参与到了开源工作,又或者是 Azure 云平台带来的额外复杂度,但颇为讽刺的是,Copilot 故障的频率确是最低的。几日前我制作了一个「GitHub 故障喜报」,而托管在 GitHub Pages 上的喜报生成器也由于故障无法打开,更增添了一些荒诞。我们不知道,是否有一天,GitHub 会因为故障丢失某些数据——如果其中包含那些你们希望长期保存的;而一些数据的价值,至少对于个人来说,是多少 SLA 赔偿都无法衡量的。

我们不知道 Microsoft 接下来会对 GitHub 做出怎样的更改,但是从 Microsoft 的历史上来看,它是一家有作恶倾向的公司。它曾经对开源世界持有 拥抱、扩展再消灭 的态度,而从近期它和它的伙伴「ClosedAI」的表现来看,Microsoft 似乎走回了老路。

最后,我想谈谈 Git 本身。Git 是一个去中心化的版本控制系统。GitHub 将 Git 变成半中心化的,但最终,即使没有 GitHub,你依然可以保存一个属于你自己的 Git 仓库,并将它公开给所有人,或是和人进行代码的交换与合并。这一切并不依赖 GitHub,甚至并不一定需要互联网。

结论

GitHub 的种种弊端,指向了一个令人绝望的答案。不管是 laike9m 所列举的、与 GitHub 相比的服务,还是 GitHub 本身,都没有足够让我们信任。我们唯一能做的,就是现在去备份一份自己存放在 GitHub 上的代码,放到哪里都好:自己的本地、NAS 上、VPS 上、或是其他代码托管平台,给自己多留一条后路。

至于留给百年后的信息,在漫长的时间尺度上,我们的一切对抗都是徒劳。无论是人本身,还是人的数字遗产,最终都将尘归尘、土归土,在熵增中化为一堆原子、一抹星尘。

我曾经历过三次重大的数据丢失,起初带着遗憾,随后便释然了:很多数据,我们仅仅是知道在那儿,却不知道它是否正确、也不曾拿出来查看过。或许只有看的时候,才知道这个数据是否真的存在。这样想来,人活着带着一堆数据走来走去,本来已经够麻烦的了。倘若死后还要带着一堆数据,那不如「让它随风飘远」吧。