Linux|29 年过百万次 commit,Linux 内核何以发展至今?( 二 )


随着 DCO 的标准化使用,现在几乎所有的 commit 都有一个 Signed-off-by 标签 。通常每个 commit 平均会有两个该标签,能够反映代码在合并之前的维护者层次结构,有助于追溯补丁进入代码的路径 。
Linux|29 年过百万次 commit,Linux 内核何以发展至今?
文章图片

Signed-off-by 之外,Linux 内核还增加了表示审查的标签(Reviewed-by 和 Acked-by) 。审查对内核代码的质量来说相当重要,标签的加入令这个过程更加清晰,有越来越多的维护者选择使用标签来表示已审查 。
在审查 git 仓库时,Linux 基金会发现了一些比较有趣的标签,像是 "Enithusiastically-ack'd by"、"Thanksto"、"Based-on-the-Original-screenplay-by"、"Catched-by-andrightfully-ranted-at-by" 等等 。但这些标签并没有像上述两类一样被广泛采用 。
行之有效的发布模式
Linux 内核的发布模式已渐趋成熟,现在基本固定为 Prepatch(或"-rc")、Mainline、Stable 和 Long Term Stable 四类版本 。
Linux|29 年过百万次 commit,Linux 内核何以发展至今?
文章图片

社区曾对发布周期进行了大量的探讨和实验,并逐渐找到了行之有效的发布模式,发布周期也几乎完全可预测——每个发布周期由时长两周的“合并窗口”开始,这时,新功能经适当的 review 后可被纳入接下来要发布的 git 仓库 。一旦它被标记为 rc1,那么集成测试、调试和稳定化的周期就开始了 。然后每周对 rc 候选版本进行标记,直到达到目标质量和稳定性 。发布后,随着下一个合并窗口的到来,这个周期又开始循环 。
内核的主线树由 Linus Torvalds 维护,这棵树引入了所有新功能 。新的主线(Mainline)内核每 2 到 3 个月发布一次 。但这样的发布节奏较慢,难以满足大多数用户的需求 。因此,从 2005 年开始,每周发行一次稳定版(Stable)内核 。
用户还想要受维护时间更长的版本,于是 2006 年发布的 2.6.16 版本成为第一个长期支持(LTS)版本内核 。此后每年都有一个新的 LTS 内核,该内核将由内核社区维护至少 2 年(从 4.4 版本开始延长至 6 年) 。Linux 内核官网公布了所有现存 LTS 版本的发行日期、EOL 日期及维护者(目前 6 个 LTS 版本都由 Greg Kroah-Hartman 和 Sasha Levin 这两人维护) 。
Linux|29 年过百万次 commit,Linux 内核何以发展至今?
文章图片

贡献者:长尾的力量不可忽视
不少组织都在为 Linux 内核做贡献,贡献者排行榜前列几乎都被 Intel、Red Hat、IBM、SUSE、Google、Samsung、AMD、Oracle、华为和 ARM 这样的大企业占据 。
从 2007 年到 2019 年,Linux 内核共接受了来自 1,730 个组织的 780,048 次 commit 。排在最前面的 20 个组织占了 68% 的 commit 量 。
Linux|29 年过百万次 commit,Linux 内核何以发展至今?
文章图片

在过去十年中,每年有超过 400 个组织为 Linux 内核做出贡献 。其中相当一部分可能只有过一次 commit 。从每年的 commit 比例来看,其中 1/3 贡献来自神秘的长尾 。也就是图中最上面浅灰色 “Others” 的部分 。
Linux 基金会指出,企业的贡献会根据业务需求和战略的不同而有所变化 。前 20 名贡献者中,有些是 2007 年之后才加入,有些在此前做过很多贡献的公司,被收购后便不再继续参与 。贡献者的多样性为内核发展赋予了一些弹性 。
除了组织贡献者,Linux 内核社区成员也致力于增加个人贡献者的多样性,他们通常愿意花费自己的时间来指导新的开发者 。Linux 基金会有一个 Kernel Mentorship(LKMP)项目,用来帮助新加入开源的开发者进行实验、学习,并为开源社区做出贡献 。
内核社区的共同目标:高质量、可靠性
报告的最后,Linux 基金会指出,内核社区的重点是保持一个共同的目标,即拥有一个没有回归的高质量操作系统,愿意根据需要创建新的流程和工具,以帮助提高效率,并继续提升 Linux 内核的可靠性 。
内核测试现在也引入了一些自动化测试工具:静态分析工具如 sparse(语义解析器)、smatch(源匹配器)和cocicheck(语义补丁,测试特定的 bug),由 0-day 和 Hulk Robot 这样的自动测试机器人在 Linux 内核树上运行 。机器人在发现和跟踪 bug 上起到不少作用 。这些测试工具能够帮助开发人员跟上上游内核的速率变化,并继续改进内核版本,提升其稳定性 。
Linux 内核如今被应用于诸多领域,基金会认为,改进基础设施,进行正确的安全分析,是接下来要应对的重大挑战之一 。目前 Linux 内核已拥有一个很好的基础,它应当继续引领创造最佳实践,以促进整个开源软件行业的发展 。


推荐阅读