为什么 Linux 是开创性的?
与世界上许多伟大的项目一样,Linux 最初只是一个非常小的项目。
1991 年,Unix 还是 x86 操作系统大家族中一位既重要、但存在感又略显不足的成员。
这一年的 8 月 25 日,芬兰计算机系研究生 Linus Benedict Torvalds 在 Usenet 新闻组 comp.os.minix 上宣布,他正在研究“一款面向 386(486)平台的 AT 克隆形式(免费的)操作系统,他只是兴趣使然,这款操作系统可能不会像 gnu 那么大、那么专业。”
就连 Torvalds 自己也不知道,他的一个小小决定后来给这个世界带来了何等深远的影响。
三十年后,Linux 已经成为 IT 领域的王者。
世界上几乎所有的主要网站,包括谷歌、Facebook 以及维基百科,都运行在 Linux 之上。云也是一样,即使是在微软自己的 Azure 当中,最受欢迎的操作系统仍然是 Linux。全球五百强超级计算机全部采用 Linux。另外,得益于 Android 给力的市场表现,Linux 还成为最受欢迎的最终用户操作系统。
为什么 Linux 是开创性的?
通过采用 GPL 许可证(这是一种自由软件许可证),承诺参与的开发人员将他们对 Linux 项目的贡献授予公共领域,Linux 操作系统能够成功地建立一个完整的平台,为许多用户提供,强大和灵活性,具有与专有解决方案相当或更好的功能。事实上,许多其他操作系统的灵感都来自于 GNU/Linux 项目。
在过去的 30 年里,依靠来自世界各地的大量志愿贡献者,Linux 已经成长为计算机领域的佼佼者。可以说,它已成为人类成就的标志性象征。
Linux 已成长为一个全球可用的自由软件基础,它在很大程度上保持了对来自政府、公司和学术机构的干预的弹性。从服务器电脑到智能手机,再到嵌入式设备,Linux 改善了世界各地数十亿人的生活。
Linux 已经无处不在。
Linux 之父:完全没想到我的实验习作能存在 30 年
Linux 之父 Torvalds 谈到 Linux 的发展历程,作为“缔造者”,他对 Linux 的崛起有着既开心、又困惑的复杂情感。
至于这款操作系统的生日,Torvalds 认为严格来说它有 4 个生日:
“第一个就是新闻小组上公开帖子的时间,即 8 月 25 日。现在,大家还能找到帖子的标题、发布日期和时间,还有完整的帖子内容。但 0.01 这个版本虽然从未出现在任何公开场合当中(仅在私下发布)、也没有被往来邮件直接提及,但却同样是个历史性的节点。现在,大家可以通过 tar 文件中的创建日期找到 0.01 的诞生时间(9 月 17 日)。”
“所以,我觉得它们俩都可以说是 Linux 的生日。顺带一提,有些人对 Linux 的诞生日还有不同意见。例如,最早公开提及 Linux 是在 7 月 3 日:当时我第一次在 Minix 新闻组上公开寻求 POSIX 文档,并提到我正在做一个尚未命名的项目。另一方面,Linux 的首次正式亮相是 0.02 版本,相较于 0.01 版本加上了一个小小的补丁,当时的日期是 10 月 5 日。”
在早期探索中,Torvalds 得到了赫尔辛基大学教授们的鼓励。
“大多数情况下,Linux 项目都表现得非常低调。不像那种传统的大学项目,我也不希望它成为大学项目。但赫尔辛基大学、至少是计算机科学系,对于非官方项目还是抱有很开放的心态。我一直不觉得 Linux 有多么特别,它只是碰巧发展壮大了而已。我从来不觉得成功的项目就必须得有特别的推进方式,或者必须要有大学官方项目的光环作为加持。Linux 在大学里的应用不少,但我觉得我们系在这方面的心态特别开放,单纯是把 Linux 看作一个很酷的本地项目。”
没过多久,Torvalds 就意识到自己的小项目绝非池中之物。
到 1991 年底,Linux 已经比 GNU Hurd 或者 Minix(Andrew Tannenbaum 开创的免费教育用 Unix 操作系统)获得了更多关注。
“大概是 1991 年圣诞节前后,我开始对磁盘进行分页。从这里开始,Linux 相当于是在 Minix 的未竟边疆中拓荒了。也正因为如此,Linux 的版本号才从 0.03(大概是 1991 年 11 月)跃升至 0.12(1992 年 1 月),” Torvalds 说, “这可不是什么激进之举(当时也有其他人在开发执行分页等 Minix 扩展),但至少表明 Linux 正在超越 Minix、做一些我并不熟悉的尝试。到 1992 年夏天,我们已经成功运行起 X 版,那时候的 Linux 看起来也与之前的 Minix 完成不同(从那之后,我就再也没有关注过 Minix)”。
其余的事情可以说是顺理成章。纵观 Linux 的整个发展史,最令 Torvalds 震惊的是 1992 年、自己第一次意识到有一群不认识的人在使用 Linux 并为它开发补丁。”
当时,Linux 做出的种种尝试还没有专门的术语进行表述。如今,我们知道这是开源。开源所强调的世界各地开发人员在共同所有、共同管理的代码之上携手贡献的概念,也成为有史以来最重要的软件开发方法,甚至没有之一。
虽然如果没有 Linux,Linux 可能根本不会出现。但其他极具影响力的早期 Linux 开发者,包括 Theodore Ts'o、James Bottomley、Gerald Pfeifer 以及 Greg Kroah-Hartman,对于 Linux 项目的成长同样至关重要。
Linux 算是起飞了,但当时的 Torvalds 根本弄不清它的发展方向。“91 年的 Linus 完全想象不到 30 年后的世界,甚至压根没觉得自己的这款实验习作能存在三十年。在他看来,当时有很多项目都比 Linux 重要得多。”
商业世界里的 Linux
在诞生之初,Linux 并没有被正式定名为 Linux。“Linux 只是我定的开发名称,从没想过把它当成最终定名,毕竟它听起来太狂、太自负了,基本相当于「Linus 的 Unix」。所以,Torvalds 给它取了个比较……难听的名字,叫「Freax」,意为「Free Unix」。
幸运的是,第一位 Linux 管理员 Ari Lemmk 认为 Freax 这名字太“蠢”了,跟「freaks」同音。他认为 Linux 就挺好,毕竟听起来不错、又是已有的开发名称。”
回顾这一切,Torvalds 常常觉得“当初非常纠结的一些东西,现在想想其实也没那么重要。只是在当时、在其中,人总会被眼前的事物困扰。”
例如,“个人而言,0.03 是个巨大的进步,因为这是 Linux 第一次获得自托管功能。但有些人觉得 0.12 更重要,因为从这时起它才真正获得有限的可用性(也就是前文提到的,有其他人开始使用这套系统)。没错,当时愿意尝试 Linux 的都堪称铁粉,但从 0.12 版本起已经开始有了活跃的内核开发者。”
着眼于宏观趋势,Torvalds 认为 1992 年初 Linux 转而使用 Gnu Public License Version 2(GPLv2)的决定尤其重要。他回忆道,“我们最初使用的不是这个许可证,但我认为 GPLv2 正是让 Linux 获得广泛欢迎的一大重要原因。并不是每个人都喜欢 GPL,我在自由软件基金会那边就遇到过不少问题。但我仍然认为 GPLv2 非常重要,也呼吁大家认真对待许可问题。”
“我认为参与项目的企业也做出了巨大贡献,我知道这个话题已经被说烂了,但我还是想要强调,开源社区中的某些部门、某些参与者对于商业元素的介入表现得太过消极。”
Linux 的商业利益很重要,也是支持它走到今天的关键驱力。
“这是个文化议题,虽然最初体现得不明显(92 年时已经陆续出现了各种商业 linux 发行版),但却贯穿了整个开源发展史。在此期间,IBM 的加入、甲骨文、Red Hat 上市等等都是重大事件,但我认为最重要的就是开源内核开发者学会了如何在众多企业之间共生共存。这一点非常独特、也非常关键。”
Torvalds 个人觉得架构移植可能在概念上最具划时代意义,特别是 Linux/alpha 移植,它改变了项目的整个发展愿景。“当然,包括 BitKeeper 以及之后的 Git 等版本控制系统(CVS)都是很大的进步,改变了我们管理源代码的能力。内核树中也曾有一部分尝试过另一种 CVS,即并发版本系统。但对于 Linux 这样的分布式项目,并发版本系统表现并不理想。所以 BitKeeper 与 Git 虽然没有直接改变内核,却间接让一些发展进步成为可能。”
事实上,Torvalds 表示直到建立起 Git 之后,他才开始觉得自己是个成功的程序员。因为从那时起,Linux 再也不会沦为用过即抛的一次性项目。
展望未来,Torvalds 给自己做了定性:“我 51 岁了,我也喜欢自己正在参与的一切。如果不做 Linux,我还能做什么?在花园里闲逛?真的难以想象。也许再过几年,等孩子们都长大成人、另立门户了,我的答案会有所不同。但我还是很难想象自己蹲在后院挖土,希望到时候别被打脸。”
Linus 的担忧:我们都老了,但 Linux 维护后继无人
不过,在日新月异的技术世界,Linux 已不再年轻。
2019 年, Linus Torvalds 曾在 Linux 大会上公开表达对 Linux 维护后继无人的担忧。
在目前这一代维护者逐渐老去之后,Linux 项目将走向何处?
Torvalds 谈到了为开源操作系统寻找未来维护者时的种种挑战。
Linux 内核社区的参与者们年纪不算太大,“很多新人都在 50 岁以下,他们才是目前开发工作的主力。当然,跟那些 30 岁上下的人们相比,我们确实是越来越老了。好在我们这些长期参与项目的早期成员还能做做维护与管理工作。”
“我们的维护者确实不够。能编写代码的人很多,能处理一部分维护工作的也不少,但很难找到那种可以吸纳他人代码贡献并立足上游将一切整合起来的人才。这也是我们目前面临的一大主要问题。”
顶尖 Linux 开发者们已至暮年。
上一代顶级程序员们确实在逐渐老去,Linus Torvalds 本人今年也超过了 50 岁。
软件开发分析公司 Bitergia 创始者之一 Jesús M González-Barahona 发现,在以“参与项目的时间”作为“年龄”指标对 Linux 内核开发者进行统计时,可以看到新生代程序员的占比一直在逐年下降。目前占比最高的参与者们,一般是十多年前就加入了 Linux 社区,之后几代的比例则呈现出下降趋势。
Parallels 公司服务器虚拟化 CTO James Bottomley 表示,“老一辈贡献者仍是项目主力。Linux 内核开发工作一直无法接棒,几年之后不知道还能剩下多少早期成员。”
谷歌软件工程师兼高级 Linux 内核开发者 Andrew Morton 则总结道,“我们正在变老,精力也越来越差。从现在来看,年轻一代也不像当初的贡献者们那样对内核开发充满热情。”
从多年前开始,Linux 基金会就一直试图解决问题。一直在努力吸引更多新的人才。现在大家基本达成了共识,人才匮乏已经成为 Linux 实现进一步增长的最大障碍。Linux 基金会希望通过 LinuxCon 在新生代程序员中建立影响力。
如今,Linux 作为最流行的操作系统,在超过 20 亿的设备上运行,已经成为人类技术发展中的不可或缺的一部分。我们难以想象无人维护的后果会是什么样。