【.com速译】Linux内核社区在2016年迎来了25岁生日,很多朋友向我们询问项目长期发展和成功的秘诀。对于这样的问题,我通常会开个玩笑来回答——因为老实说,我不知道这一切是如何运作的。但重要的是,我们之所以能够如此前行,是因为社区本身具有很强的反思和改变的能力。大约16年前,大多数内核开发人员从未见过面——他们只是通过电子邮件进行交流。为了解决这个问题,内核峰会紧随其后。如今,Linux内核的开发者每年都会聚在一起讨论技术问题,反思过去一年中哪些地方做得对,哪些地方做得不好。我们将开发像Git这样的新工具,它将继续改变我们彼此协作的方式。随着时间的推移,这种演变带来了弹性,让Linux项目不断达到新的高度,同时避免了分叉带来的权力分配问题。也许确实有一些成功的重要关键,我将在下面尝试说明其中的九个。1.保持发布周期短非常重要。在Linux项目的早期,每个新的内核主要版本往往需要数年时间才能发布。这意味着用户需要花费大量时间等待新功能的加入,这对用户和发行商来说是相当令人沮丧的。但更重要的是,这么长的周期意味着我们需要一下子集成很多代码,甚至还得把很多没有准备好的代码赶到新版本中去。较短的发布周期可以解决此类问题。新代码可以快速合并到稳定版本中。以近乎即时的方式集成新代码,即使是最重要的更改也几乎坚不可摧。开发人员知道,即使他们错过了一个发布,两个月后也会有一个新的发布,所以他们不必急于合并不成熟的代码。2.需要利用分布式分层开发模型实现流程的可扩展性。很久以前,LinusTorvalds直接负责所有的变更,但这种做法很快被证明是不科学的——毕竟没有人能够独立支持操作系统内核这样多元化的项目。因此,我们认为内核中不同区域的事务应该由具有相应专业知识的不同维护者来处理。这些包括网络、无线网络、各种驱动程序子系统——例如CPI或USB——甚至是独立的文件系统,例如ext2或vfat。将代码审查和集成委托给数百名维护人员最终使Linux项目能够在不影响审查或成品质量的情况下快速实施数以万计的跨版本更改。如果没有合适的工具,像内核这样的项目会随着规模的增长而崩溃。3.工具很重要。在BitKeeper源代码管理系统出现之前,内核开发工作总是在规模方面受到挑战——它几乎在一夜之间改变了社区的做法。Git无疑是又一次飞跃。如果没有合适的工具,像内核这样的项目会随着规模的增长而崩溃。4、内核的共识判断模式很重要。作为一般规则,如果最有影响力的开发人员之一反对,提议的更改将不会合并到项目中。然而,这对于代码的贡献者来说是一个严重的打击,毕竟他们已经花费了几个月的时间。但这一举措也确保了我们的内核能够适应广泛的用户需求和实际问题。任何用户社区都不能以牺牲整体为代价来实施更改。因此,我们使用这种共识焦点来确保项目只有单一的代码库,可以涵盖从小型系统到超级计算机的各种应用场景。5、内核的“不退化”原则同样重要。十年前,内核开发者社区承诺,如果特定内核在特定设置下工作,则所有后续内核都必须这样做。如果社区发现更改导致倒退,则必须迅速解决。这一原则向用户保证,任何升级活动都不会破坏他们的系统,因此他们很乐意在开发新功能时采用我们的内核解决方案。6.企业参与很关键,但内核开发不会被任何一家企业主导。自2014年12月发布3.18版以来,来自近500家公司的5,062名个人开发人员为Linux内核做出了贡献。大多数开发人员会因为他们的工作而获得报酬,并且他们所做的改变有利于他们的业务。但是,虽然任何企业都可以参与内核的改进,但是内核的发展方向绝不会被任何一个企业所左右。7.项目内不应有内部界限。内核开发人员必须专注于内核的特定部分,但任何开发人员都可以对内核的任何部分进行更改——只要更改是合理的。这意味着问题永远存在于它们的源头而不是难以捉摸,开发人员对内核有了更全面的了解,即使是最顽固的维护者也无法永久阻止任何人针对特定子系统的改进。8.Linux内核项目证明大规模的开发工作可以从小做起。最初的0.01版本内核仅包含10,000行代码;如今,它每两天的代码增量已经超过10,000行。目前开发者添加的一些基本的甚至是小的功能,将来可能会发展成为重要的子系统。9.25年的核心发展历程表明,持续的合作可以带来任何单一机构都无法取得的辉煌成果。自2005年以来,来自1,300多家公司的大约14,000名个人开发人员为Linux内核做出了贡献。正因为如此,Linux内核成为了各家企业在市场竞争中频繁使用的重要资源。原标题:Linux内核开发25年的9课原作者:GregKroah-Hartman
