掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

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

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

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

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

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

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

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

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

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

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

3.  工具很重要

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

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

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

5.  “严禁回归原则

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

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

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

7.  项目内部不能有隔阂

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

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

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

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

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

qrcode_for_gh_9de197bcc61b_258.jpg

原文来自:SDK.cn

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

  • 购物小票识别

    支持识别各类商场、超市及药店的购物小票,包括店名、单号、总金额、消费时间、明细商品名称、单价、数量、金额等信息,可用于商品售卖信息统计、购物中心用户积分兑换及企业内部报销等场景

    支持识别各类商场、超市及药店的购物小票,包括店名、单号、总金额、消费时间、明细商品名称、单价、数量、金额等信息,可用于商品售卖信息统计、购物中心用户积分兑换及企业内部报销等场景

  • 涉农贷款地址识别

    涉农贷款地址识别,支持对私和对公两种方式。输入地址的行政区划越完整,识别准确度越高。

    涉农贷款地址识别,支持对私和对公两种方式。输入地址的行政区划越完整,识别准确度越高。

  • 人脸四要素

    根据给定的手机号、姓名、身份证、人像图片核验是否一致

    根据给定的手机号、姓名、身份证、人像图片核验是否一致

  • 个人/企业涉诉查询

    通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。

    通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。

  • IP反查域名

    IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。

    IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。

0512-88869195
数 据 驱 动 未 来
Data Drives The Future