如果这个人被车撞了,互联网就崩溃了码农翻身
在软件的世界,有很多关键软件是由一个小型、无薪团队(或者更糟糕,一个人)维护和管理的。
而我们互联网恰恰构建在这些关键软件之上。
当这个人对项目感到厌倦时会发生什么?
他会不会做些恶意的事情?
或者说得“恶毒”一些,他万一被公交车撞了怎么办?
一个小小的偶然事件,就会导致现代计算设施的积木轰然倒塌。
这种情况有多可怕?这里举几个普通人可能根本就不知道,但是极其关键的项目。
世界各地的时区和夏令时规则由各自的政府独立管理,他们经常在有限的通知下进行变更,这让处理时区时很麻烦。
幸运的是,我们有一个标准的TimeZone数据库,可以让软件轻松进行时区处理和转换。
许多软件项目依赖TZ数据库:
BSD 及其衍生系统:FreeBSD、OpenBSD、NetBSD、macOS、iOS
Android
GNU C 库和使用它的系统
各种编程语言:Java、PHP、Perl、Ruby、Python、Javascript、Go、Rust
各种数据库:Oracle、MySQL、PostrgreSQL、MongoDB、SQL Server
我们的互联网世界基本上是由上述软件编写的。
每当时区详细信息发生变化时(每年可能发生几次),数据库就需要更新一下。
如果没有及时更新,不但会引发时间混乱,甚至会扰乱安全功能(因为某些加密工具需要紧密同步的时间)。
对于如此重要的事情,肯定有来自多家公司的高薪团队负责保持更新,对吧?
不,很长一段时间内,只有两个人在维护,即 创始人Arthur David Olson 和 Paul Eggert。
(Paul Eggert)
Olson并不是IT界的专业人士,他只是美国国立卫生研究院的一名员工,Eggert是加州大学洛杉矶分校的教授。
2011年,Arthur David Olson宣布退休,TZ数据库的维护工作才被交给了ICANN,依然由两个人维护:Paul Eggert 和 Tim Parenti 。
SQLite
在之前的文章中我就提到过,SQLite世界上使用最广泛的数据库,它的使用数量超过其他所有数据库的总和。
你可能没听说过他,但是它就在你的身边的:
每一台智能手机中(Android 和iOS)
每一台Mac电脑中
每一台Windows 10 电脑中
每一个主要的浏览器中(Chrome, Firefox, Safari)
大部分的机顶盒当中
每个PHP和Python安装目录中
很多流行的桌面应用(微信、QQ、 DropBox、 Skype、 iMessage、WhatsApp、 Adobe Acrobat Reader....)
......
不信的话可以在电脑中搜索一下 “*.db”,看看能发现多少个。
让人惊掉下巴的是,SQLite维护者仅有3个人!
这三个人并不是像Linus那样,掌管这个一个社区,背后有大量的开发人员,他们三个就是SQLite所有的开发人员了!
这个三人团队完全处于“单干”状态,不接受外界任何补丁和代码提交(虽然SQLite本身是开源的)。
Open Source ,但并不是 Open Contribution。
全世界价值万亿美元的系统都在依赖SQLite,依赖这三个人。
OpenSSL
OpenSSL实现了TLS协议,RSA、AES、SHA、ECC等各种加密算法,以及证书、签名、密钥等一系列安全工具。
互联网通信、云与基础设施、编程语言和框架全都直接或间接依赖OpenSSL,只要你看到浏览器地址栏里那把小锁,背后几乎一定有 OpenSSL。
毫不夸张地说,OpenSSL 是现代互联网“默认的安全地基”。
最魔幻的是,在很长一段时间内,OpenSSL只有1~2名核心的全职维护者,其余是零散志愿者,年捐款额不到2000美元!
是的,你没看错,支撑全球加密通信的核心库,一年经费 ≈ 一台中端笔记本。
与此同时:Google、Facebook、Amazon、银行、政府,每天通过它传输数万亿美元价值的数据。
直到2014年,全球被心脏出血(Heartbleed)漏洞吓醒,利用这个内存处理漏洞,攻击者不用登录就能获取密码、cookie甚至私钥,影响了全球17%的服务器,更可怕的是,这个漏洞存在了两年才被发现!
Heartbleed出现以后,Linux基金会牵头发起来一个核心基础设施计划CII计划,开始寻求各大巨头的支持,最终获得了包括微软、Google、亚马逊、Facebook等13家公司的支持,这些公司承诺:未来三年,每年捐献10万美元。
这些钱中,也只有55万被分给OpenSSL,OpenSSL的发展,主要还得靠自己造血。
大公司都依赖志愿者
这只是冰山一角,还有很多关键项目,例如imagemagick、 xz、FFmpeg,都是由无偿的志愿者组成的小团队在维护。
它们是无数系统的核心,你很可能每天都会使用它们,只是没机会直接接触它们。
FFmpeg 背后的小团队在Twitter上所说,让这些大公司以任何有意义的方式做出贡献可能就像拔牙一样:
xz 的惨痛教训告诉我们,对无偿志愿者的依赖会导致严重问题。
那些价值数万亿美元的公司期望志愿者提供免费且紧急的支持!
微软团队在一个充满志愿者的Bug跟踪系统上发帖,宣称他们的问题是“最高优先级”
我们在礼貌地向微软请求一份长期维护支持合同,他们只是提出一次性支付几千美元。
这是无法接受的!
简而言之:微软希望从 FFmpeg 所做的(免费)工作中受益......但最多只愿意向团队扔一些花生。
而且,即便如此,这种(有点侮辱性的)微薄的支持也只是在微软需要帮助时才会提供。
(注:XZ事件,XZ是个著名的压缩工具,原作者精力下降,压力太大,将维护权移交给了一个貌似专业、靠谱的维护者Jia Tan,他在取得信任后在发布版构建流程中植入隐蔽后门,影响 OpenSSH 等关键组件,几乎危及全球 Linux 系统安全,最终因工程师偶然排查性能问题而被发现。)
我们常常以为,现代互联网是由云计算、数据中心、巨头公司和复杂系统构成的。
但扒开外壳才发现,它真正站立的地方,往往是几个名字并不出名的人、几个维护列表里几乎没人回复的邮箱、以及一堆“先凑合用着”的开源项目。
这些项目没有 SLA,没有 7×24 小时值班,没有“最高优先级支持”,甚至没有稳定的工资。
它们靠的,是责任感、兴趣,以及维护者还没有彻底被耗尽的那一点热情。
当关键基础设施长期建立在无偿劳动和个人意志之上,问题迟早会出现。
我们之所以还没付出更惨痛的代价,并不是因为系统足够安全,而只是因为:到目前为止,我们还算幸运。


