经过29年的努力,Linux内核刚刚接受了它的第100万次提交。有史以来最伟大的开源项目从它的“爱好”开始已经走了很长一段路。作者:StevenJ.Vaughan-Nichols编译:徐久丨出版:四物编辑部原标题:《Commit 1 million:The history of the Linux kernel》1991年8月25日,芬兰研究生LinusTorvalds告诉Minix新闻组,他正在开发他的新的免费操作系统,它将“只是一种爱好”。但29年后,Linux几乎统治了计算世界。在2020年Linux内核历史报告中,Linux基金会讲述了从Linux内核发布的第一天到2020年8月Linux内核5.8发布的故事。同时该基金会已经发布了多份关于Linux内核历史的报告以前,这份报告是独一无二的。这是因为,感谢DanielGerman博士和他的cregit工具,现在可以跟踪所有三个内核的不同开发阶段:预版本控制,1991年9月至2002年2月4日;BitKeeper,2002年2月4日至2005年4月15日;git,2005年4月16日至今。Git和BitKeeper如果您是Linux新手,您可能不知道版本控制是2000年代的热门话题。十多年来,Linux根本没有版本控制系统(VCS)。您可以将您的补丁发布到邮件列表,如果Torvalds接受它,他将在发布整个源代码树的新版本之前将其应用到他自己的源代码树中。当时有可用的VCS,例如CVS和Subversion,但Torvalds都不喜欢这些协作版本控制系统。然而,由于社区压力,Torvalds最终选择了BitKeeper。委婉地说,这不是一个受欢迎的选择。BitKeeper是一个闭源商业系统。Torvalds认为自由软件很棒,但他需要的是最好的VCS和BitKeeper。多年来,关于此事的讨论一直很热烈。最终,Samba开发负责人AndrewTridgell对BitKeeper网络协议进行了逆向工程,创建了一个与BitKeeper兼容的开源VCS。BitKeeper的创建者LarryMcVoy曾经说过,如果有人使用他的程序,他不会让Linux开发人员使用他的程序,他确实做到了。这使得Linux没有VCS。作为回应,Torvalds创建了他自己的一个:Git。但他后来表示自己并不是很想做,“我真的从来没想过做源代码控制管理,我觉得这是计算机世界里最无聊的事情。”无聊与否,经过十天的工作,Torvalds终于完成了他的工作。如今,git无疑是开源中最流行的VCS,也是GitHub和GitLab等编程站点的基础。说到代码,首先是linux-0.01.tar。操作系统z内核,后来称为Linux,只有88个文件和10,239行代码,运行在单一硬件架构i386上。之后事情逐渐发生了变化。目前的v5.8内核包含69,325个文件和28,442,673行代码,运行在30多种主要硬件架构上。Torvalds自己说:“5.8看起来是我们有史以来最大的版本之一。”但是今天的Linux中仍然存在第一天的一些代码。将输出写入标准输出的vsprintf例程仍在代码中。Torvalds说,这部分“是与LarsWirzenius合写的”。它还使Torvalds的大学朋友Wirzenius成为第一个使用Linux的开发人员。从1996年1月v1.3.68开始,维护者文件列出了内核的主要开发者和维护者。该文档的第一个版本只有三个维护者:AlanCox、JonNaylor和LinusTorvalds。截至2020年5.8版本,已有1501名维护者。当然,要真正深入了解Linux内核的历史,您需要查看早期的Linux开发邮件列表。Linux总是在邮件列表上被讨论和设计。“不幸的是,”报告指出,“在1997年之前,只有部分讨论记录是公开的,因为Linux的开发涉及多个邮件列表和USENET组。”在Linux内核的历史上有一件事很清楚:变化来得越来越快。从2005年到2008年,平均每小时有2次提交;到2019年,每小时有9.4次提交。最新的v5.8内核平均每小时提交10.7次。尽管速度如此之快,但Linux发布周期已变得相当可预测。当新功能被添加到git存储库的下一个版本时,每个发布周期都以两周的“合并窗口”开始。一旦此版本被标记为rc1,集成测试、调试和稳定周期就开始了。多个rc候选者被标记,直到Linus和他的主要维护者认为它足够好并且足够稳定可以发布。之后,循环再次从下一个合并窗口开始。直到今天仍有谣言说Linux和其他开源软件是由业余爱好者在他们母亲的地下室里编写的。虽然这对少数程序员来说可能是正确的,但大多数Linux内核开发人员都为IT公司工作。至少从2008年开始就是这样。在那一年,74.2%的Linux内核是由受薪程序员编写的。事实上,也有相当多的志愿Linux开发人员。在过去的12年中,74.2%的受薪程序员中有11.95%是“为爱而生”,其余52%的开发人员是公司和顾问编写的。参与者比例,前十名从上到下分别是:英特尔、红帽、IBM、SUSE、Linaro、谷歌、三星、AMD、瑞萨、德州仪器和甲骨文。部分原因是公司,尤其是Canonical、RedHat和SUSE等Linux发行商,对Linux的健康发展至关重要。这些内核最初是稳定的内核,开发人员承诺会长期维护它们。然后,当在稳定内核中发现错误时,它们会在上游修复并向后移植到长期发布内核。目前,这些是长期内核版本:一些Linux用户希望看到更长的支持窗口。民用基础设施平台(CIP)支持版本4.4和4.19,作为超长期稳定(SLTS)内核发布。CIP为发电和运输、石油和天然气分配以及水和废水管理等基础设施开源。这些项目将得到10年或更长时间的支持。在过去的几年里,内核开发者也把更多的精力放在了自动调试工具上。零日自动化测试bot和华为的hulkbot每天在Linux内核树上运行spares、smatch、coccicheck等静态分析工具。Trinity和syzkaller等模糊器也越来越受欢迎。最终结果将是Linux代码比以往任何时候都更干净。Linux基金会表示,“内核社区专注于维护一个共同目标,即拥有一个不会退化的高质量操作系统,愿意根据需要创建新的流程和工具来帮助他们提高效率。”在当今最大的科技公司的支持下,Torvalds和成千上万的同事成功地实现了这个目标。对于“只是一个爱好操作系统”来说还不错。
