25 年 Linux 内核开发的经验与教训

746 阅读6分钟
原文链接: sdk.cn
摘要:Linux内核开发社区已经诞生了26年,但是大约16年前,大多数的内核开发者都没有见过面,只是通过电子邮件进行交流。作者说这个项目能够获得成功,靠的是社区的不断自省与调整的能力。在此他总结了这二十多年来的9条经验和教训。

SDK.cn最新推出了技术公众号导航页面,欢迎查看,你也可以将你的公众号推荐给我们!

2016 年,Linux 内核开发社区都在庆祝Linux 诞生25 周年,自此以后,很多人都在问我们它的长寿与成功的秘密。而我经常开玩笑说,我们自己都不知道它是如何走到这一步的。在发展进程中,这个项目遭受了很多的质疑和挑战,但是毫无疑问,这个项目能够获得成功,靠的是社区的不断自省与调整的能力。

大约16 年前,大多数的内核开发者都没有见过面,我们只是通过电子邮件进行交流。于是Ted T’so 提出了内核峰会(Kernel Summit )这个概念。如今,内科开发者每年都会聚在一起讨论技术问题,并且检查上一年的工作,总结一下哪里做的不错,哪里做的不够好。开发者之间彼此坦诚的进行交流,在这个过程中我们不断调整。

在这个过程中,我们让这个项目变得越来越好,从竞争项目那里吸取教训,避免自己出现类似的错误。或许,要想总结Linux 成功的关键原因,我们还需要很多年的时间。但是我们去额可以总结一下这些年的经验与教训。

1.  简短的发布周期非常重要

Linux 诞生之初,我们需要花费数年的时间才会推出一个重要的内核更新。这意味着,我们为用户提供新功能的周期也非常长,这对于用户来说是一件让他们感到非常沮丧的事情。此外,较长的更新周期还意味着,我们要一次性整合大量的代码,因此在准备更新的时候我们要承受巨大的压力。

而缩短更新周期能够解决这些问题。新代码可以很快的被整合进稳定版本中。而且如果开发者错过了某一次更新,他们知道自己两个月之后就可以用上下一个更新,因此他们不需要过早的去对代码进行merge 。

2.   监测进度需要你使用分布式、有等级的开发模式

很长时间以前,所有变更都会直接进入Linus Torvalds ,但是很快这种工作方式就被启用了,因为没有任何一个人能更上操作系统内核这种复杂的项目进度。于是我们引入了领域维护者的概念,内核的每一个领域,都有专人进行负责。例如网络、无线、PUI 和USB 等不同的驱动子系统,以及ext2 或vfat 等不同的文件系统等。把责任制定给成百上千个维护者,能让项目处理一次release 中的成千上万个变更,而且不用牺牲审核以及项目质量。

3.   工具很重要

内核开发曾经很难扩大规模,直到BitKeeper 这个资源- 代码管理系统的出现,它几乎一夜之间就改变了整个社区的工作方式;Git 的出现带来了另一次巨大的飞跃。没有合适的工具,内核开发这样的项目很难发展想去,它很可能会被自身的重量所压垮。

4.   高度的一致性导向很重要

我们有一个一般性原则,只要有一名广受尊重的开发者提出反对,我们就不会对某个变更进行merge 。这个原则可能会让一些开发者感到沮丧,尤其是那些找到了这个问题,并且花费了数个月的时间来解决这个问题的开发者。但是这种做法的好处是,它能保证内核适应大多数用户的需求。没有任何一名开发者可以在牺牲其他人需求的情况下满足自己的需求。这样做的结果就是,我们从只有一个代码库的小项目发展成了一个超级计算机系统,而且它可以满足大多数用户的需求。

5.  “ 严禁回归 原则

十多年前,内核开发者社区达成了一个共识:如果一个内核可以工作在一个详细的设定之下,那么后续的内科也应该可以工作在这个设定下。如果社区发现一个变更会导致回归的情况,他们会立刻解决这个问题。这个原则保证了用户在升级之后,这次升级不会破坏他们的系统。结果是,用户都非常愿意对内核进行升级,获得新功能。

6.   共同参与很重要,但是没有任何一家公司能统治内核开发

自从2014 年12 月3.18 release 发布以来,共有来自将近500 个企业的5062 名开发者参与了Linux 内核的开发。大多数开发者都获得了报酬,而他们做出的变更基本都是服务于各自企业的。但是,虽然任何公司都可以参与内核的开发,但是没有任何一家公司可以为了满足自己的需求而对其他公司造成伤害,也不能限制内核的作用。

7.   项目内部不能有隔阂

内核开发者都有自己熟悉的领域,但是在有正当理由的情况下,任何开发者都可以对自己领域外的东西进行变更。这样一来,所有开发者都可以在第一时间对所有问题进行修复,开发者对于内核的整体理解也更强。

8. 重要的变更往往始于小起点

最初的0.01 版本内核只有1 万行代码;如今没两天增加的代码都会超过这个数字。一些早期的小功能,在未来会发展成重要的子系统。

9. 25 年的内核开发显示,持续的合作带来的效果,是任何群体都无法独立完成的

2005 年以来,有超过来自1300 家企业的1.4 万名个人为Linux 内核开发做出了贡献。正因为此,Linux 内核成为了一个共同的资源,被无数彼此竞争的企业所使用。

qrcode_for_gh_9de197bcc61b_258.jpg

原    文:9 lessons from 25 years of Linux kernel development
译    文:SDK.cn
作    者:鲁行云(编译)

免责声明:

  1. SDK.cn遵循行业规范,所有转载文章均征得作者同意授权并明确标注来源和链接。
  2. 我们十分尊重原创作者的付出,本站禁止二次转载如需转载请与原作者取得联系。
  3. 转载SDK.cn的原创文章需注明文章作者、链接和"来源:SDK.cn"并保留文章及标题完整性未经作者同意不得擅自修改。
  4. 作者投稿可能会经SDK.cn适当编辑修改或补充。