澳门新银河国际

澳门新银河国际新闻
29年过百万次commit,Linux内核何以发展至今?
发布时间:2024-03-01
  |  
阅读量:
本文摘要:1991年,21岁的芬兰大学生LinusTorvalds写下第一行Linux内核代码时,多半没有想到它会成长为今天这样的庞然大物。当年8月25日,Torvalds在MinixUsenet新闻组里发了一封帖子,称自己正在做一个自由的操作系统,“就是个兴趣爱好,不会搞得像GNU那么大那么专业”。事情的发展显然远超他的预期,如今小到传感器,大到超级计算机,从智能手机、手表、汽车等日常用品到航天器等设备,Linux内核的身影已无处不在。

澳门新银河国际

1991年,21岁的芬兰大学生LinusTorvalds写下第一行Linux内核代码时,多半没有想到它会成长为今天这样的庞然大物。当年8月25日,Torvalds在MinixUsenet新闻组里发了一封帖子,称自己正在做一个自由的操作系统,“就是个兴趣爱好,不会搞得像GNU那么大那么专业”。事情的发展显然远超他的预期,如今小到传感器,大到超级计算机,从智能手机、手表、汽车等日常用品到航天器等设备,Linux内核的身影已无处不在。

随着迄今为止最大版本LinuxKernel5.8于今年8月初的发布,Linux内核已拥有超过2万名贡献者,历史commit数超过100万次,迎来一个新的里程碑。上周恰逢Linux29周年纪念日,Linux基金会发布了一份详尽的Linux内核报告,涵盖了自1991年9月17日首次发布以来,到2020年8月2日最新版本的Linux内核历史。版本控制:从BitKeeper到GitLinux基金会从2008年开始每年发布Linux内核报告,但此前一直难以将其发展过程完整串联起来。

今年,借助DanielGerman博士的cregit工具,他们成功追溯到了第一个版本,Linux内核的发展时间线变得清晰。根据版本控制方式,可大致分为以下三个阶段:pre-versioncontrol(前版本控制):1991年9月-2002年2月4日BitKeeper:2002年2月4日-2005年4月15日Git:2005年4月16日至今版本控制对社区协作能力影响重大,这在2000年代初是一件令人颇为苦恼的事情。

使用版本控制系统,也就是BitKeeper之前,贡献者需要将补丁提交至邮件列表,待Torvalds接受后放进源码树,再发布整个树的新版本。在这种方式下,具体是谁在做贡献、贡献的数量和路径都不够透明。

2002年2月4日,BitKeeper的使用标志着Linux内核commit历史的开启。然而BitKeeper为专有软件,这一决定在社区中遭受了长期质疑。

直到2005年,BitKeeper拥有者LarryMcVoy决定收回无偿使用BitKeeper的许可。Torvalds本人当时又对现成的CVS和Subversion等集中式版本控制工具感到不满,因此自己动手,用十天时间写出了Git的第一个版本。Git目前已成为开发者们非常熟知且广泛使用的分布式版本控制系统。LinusTorvalds则表现得更多的是迫于无奈,他曾声称自己“根本不想做源代码管理,觉得这是计算机世界中最无趣的事情”。

自从版本控制系统由BitKeeper改为Git后,Linux内核每年的贡献者和commit数量都在稳步增长。历年的内核报告数据显示,2005年5月发布的2.6.12版本平均每小时收到2次commit。15年后,2019年的平均数是每小时9.4次。

而在最新的5.8内核中,平均每小时commit数达到了10.7次。繁杂且自成体系的内核代码首个内核版本linux-0.01.tar.Z由88个文件和10,239行代码组成,运行在i386这样单一的硬件架构上。到了5.8版本,这一数据扩张为69,325个文件和28,442,673行代码,并能够在30多种主要的架构上运行。数量上的庞大仅是Linux内核代码的表象,它自身更是形成了一套复杂的体系,不熟悉的人往往不知从何处下手,极有可能“牵一发而动全身”。

这或许也是内核维护者难寻的原因之一。Linux内核发布第一天起的某些代码仍在当前版本中使用,例如Torvalds和大学好友LarsWirzenius共同编写的vsprintf例程,它也是为数不多存在至今的首次commit中的源代码。今年的内核报告提到,有2,964个能被追溯至1991年的token如今在5.8版本中也能找到。

澳门新银河国际

5.8版本超过一半的代码写于近7年内,但之前所有年份都对此版本有贡献。过去的代码不断在后续的版本中留下痕迹。持续膨胀的内核文件量和代码行数未见得完全是一件好事,为了使系统不变得臃肿,内核维护者需要做一些修枝剪叶的工作。Linux内核中未使用的代码和文件都会被视情况删除,有一些版本还会进行大的清理,例如2018年的4.17版本,删除了8个架构,净减少大约180,000行代码。

不仅仅是源码,Linux内核维护者还会关注空白行和代码注释,以确保源码的可读性。开发者原创证书和标签管理2004年对开发者原创证书(DeveloperCertificateofOrigin,简称DCO)的标准化是Linux内核史上的一个关键变化点。DCO的引入为开发者和用户提供了法律保护,同时又不至于增加程序负担。它极大地提高了跟踪补丁进入内核的路径的能力,加上版本控制系统向Git的过渡,DCO有效地减轻了开发者做贡献的开销,因此变得很受欢迎,后来也被许多其他开源项目采用。

随着DCO的标准化使用,现在几乎所有的commit都有一个Signed-off-by标签。通常每个commit平均会有两个该标签,能够反映代码在合并之前的维护者层次结构,有助于追溯补丁进入代码的路径。Signed-off-by之外,Linux内核还增加了表示审查的标签(Reviewed-by和Acked-by)。

审查对内核代码的质量来说相当重要,标签的加入令这个过程更加清晰,有越来越多的维护者选择使用标签来表示已审查。在审查git仓库时,Linux基金会发现了一些比较有趣的标签,像是Enithusiastically-ackdby、Thanksto、Based-on-the-Original-screenplay-by、Catched-by-andrightfully-ranted-at-by等等。但这些标签并没有像上述两类一样被广泛采用。

行之有效的发布模式Linux内核的发布模式已渐趋成熟,现在基本固定为Prepatch(或-rc)、Mainline、Stable和LongTermStable四类版本。社区曾对发布周期进行了大量的探讨和实验,并逐渐找到了行之有效的发布模式,发布周期也几乎完全可预测——每个发布周期由时长两周的“合并窗口”开始,这时,新功能经适当的review后可被纳入接下来要发布的git仓库。一旦它被标记为rc1,那么集成测试、调试和稳定化的周期就开始了。

然后每周对rc候选版本进行标记,直到达到目标质量和稳定性。发布后,随着下一个合并窗口的到来,这个周期又开始循环。

内核的主线树由LinusTorvalds维护,这棵树引入了所有新功能。新的主线(Mainline)内核每2到3个月发布一次。

但这样的发布节奏较慢,难以满足大多数用户的需求。因此,从2005年开始,每周发行一次稳定版(Stable)内核。用户还想要受维护时间更长的版本,于是2006年发布的2.6.16版本成为第一个长期支持(LTS)版本内核。此后每年都有一个新的LTS内核,该内核将由内核社区维护至少2年(从4.4版本开始延长至6年)。

澳门新银河国际

Linux内核官网公布了所有现存LTS版本的发行日期、EOL日期及维护者(目前6个LTS版本都由GregKroah-Hartman和SashaLevin这两人维护)。贡献者:长尾的力量不可忽视不少组织都在为Linux内核做贡献,贡献者排行榜前列几乎都被Intel、RedHat、IBM、SUSE、Google、Samsung、AMD、Oracle、华为和ARM这样的大企业占据。从2007年到2019年,Linux内核共接受了来自1,730个组织的780,048次commit。

排在最前面的20个组织占了68%的commit量。在过去十年中,每年有超过400个组织为Linux内核做出贡献。其中相当一部分可能只有过一次commit。

从每年的commit比例来看,其中1/3贡献来自神秘的长尾。也就是图中最上面浅灰色“Others”的部分。Linux基金会指出,企业的贡献会根据业务需求和战略的不同而有所变化。前20名贡献者中,有些是2007年之后才加入,有些在此前做过很多贡献的公司,被收购后便不再继续参与。

贡献者的多样性为内核发展赋予了一些弹性。除了组织贡献者,Linux内核社区成员也致力于增加个人贡献者的多样性,他们通常愿意花费自己的时间来指导新的开发者。

Linux基金会有一个KernelMentorship(LKMP)项目,用来帮助新加入开源的开发者进行实验、学习,并为开源社区做出贡献。内核社区的共同目标:高质量、可靠性报告的最后,Linux基金会指出,内核社区的重点是保持一个共同的目标,即拥有一个没有回归的高质量操作系统,愿意根据需要创建新的流程和工具,以帮助提高效率,并继续提升Linux内核的可靠性。内核测试现在也引入了一些自动化测试工具:静态分析工具如sparse(语义解析器)、smatch(源匹配器)和cocicheck(语义补丁,测试特定的bug),由0-day和HulkRobot这样的自动测试机器人在Linux内核树上运行。

机器人在发现和跟踪bug上起到不少作用。这些测试工具能够帮助开发人员跟上上游内核的速率变化,并继续改进内核版本,提升其稳定性。Linux内核如今被应用于诸多领域,基金会认为,改进基础设施,进行正确的安全分析,是接下来要应对的重大挑战之一。

目前Linux内核已拥有一个很好的基础,它应当继续引领创造最佳实践,以促进整个开源软件行业的发展。


本文关键词:29年,过,百万,次,commit,Linux,澳门新银河国际,内核,何以,发展

本文来源:澳门新银河国际-www.jandamanis2.com

咨询电话
0804-93246044
公司地址:江苏省南京市玄武区玄武湖
邮箱:admin@jandamanis2.com
淘宝店铺:
Copyright © 2008-2023 www.jandamanis2.com. 澳门新银河国际科技 版权所有 ICP备75682600号-5