Linux 是世界上最大的软件开发项目
两个月前发布 4.5 版已经包含了 2100 万行代码！我的笔记本上运行的内核代码大概有 160 万行，而你的电话可能运行了 250 万行代码。
每天，平均有超过 10800 行的代码增加， 5300 行代码被删除，并且还有 1875 行代码被修改，也就是说每秒钟都有超过 8 行代码的变化！
内核 Kroah-Hartman
58.251.146.239
人類的偉大工程之一！
zzkicc [Firefox 46.0|Windows 8.1]
2016-05-14T12:39:58.000
218.19.177.120
更新速度太快了
Wf_talk [Firefox 46.0|GNU/Linux]
2016-05-14T18:32:46.000
123.139.24.214
比windows还大吗？<br />
我不同意
来自陕西西安的 Chrome 50.0|Windows 10 用户
2016-05-16T12:35:18.000
125.119.239.77
应该没但是微软不开源
来自浙江杭州的 Chrome 45.0|Windows 10 用户
2016-05-16T22:24:14.000
180.109.161.58
当然比win大,这里指的是内核.<br />
不过发行版的话更比win大.毕竟有那么多发行版.
来自江苏南京的 Opera 37.0|GNU/Linux 用户
2016-05-17T13:51:07.000
116.246.10.162
＂与时俱进＂，雖然我沒看原文，就不能換個詞嗎
来自上海的 Firefox 45.0|Windows 7 用户
2016-05-18T01:50:46.000
123.120.59.127
原文是“So look at operating systems that don't change, nobody uses them anymore.”，用这个词有何不妥？
linux [Chrome 50.0|Mac 10.11]
2016-05-18T08:30:06.000
101.68.133.3
顶
来自浙江杭州的 Chromium 49.0|Ubuntu 用户
2016-05-18T17:00:18.000
两个月前发布 4.5 版已经包含了 2100 万行代码！我的笔记本上运行的内核代码大概有 160 万行，而你的电话可能运行了 250 万行代码。
每天，平均有超过 10800 行的代码增加， 5300 行代码被删除，并且还有 1875 行代码被修改，也就是说每秒钟都有超过 8 行代码的变化！
Greg Kroah-Hartman 是 Linux 内核社区的二号人物（第一位显然是 Linus Torvalds），他在设备驱动方面做了许多工作，他也是当前 Linux 内核稳定分支的负责人。


在本周柏林举办的 CoreOS Fest 上，Kroah-Hartman 做了一场讲演介绍了 Linux 内核项目是如何的巨大。之后我找了个机会邀请他聊了聊内核和安全方面的话题。


我们的话题先从代码方面开始，Kroah-Hartman 说刚刚于两个月前发布 4.5 版已经包含了 2100 万行代码！


可能很多人觉得在那么小的设备上运行这么多的代码有点夸张，事实上，并不是所有的 2100 万行代码都运行在他们的设备上，只有需要的部分才会运行在里面。正如 Kroah-Hartman 说的，“你不会全部用到它们。在内核里面包含了各种硬件的驱动。我的笔记本上运行的内核代码大概有 160 万行，而你的电话可能运行了 250 万行代码。”


这里面，内核的核心部分是一定算在其中的，而它只占整个 Linux 内核代码的 5%，而剩下的还有 35% 是网络部分，40% 是设备驱动。


比代码规模更让人印象深刻的是它的参与人数规模，去年就有大约 4000 名开发人员参与了开发，至少 440 个公司向内核提交了贡献，这使得 Linux 成为了世界上最大的软件项目！Kroah-Hartman 说：“这是计算机有史以来最大的软件开发项目，无论是使用它的人数、开发它的人数，还是与之相关的公司数量，规模都很大。”


![greg kernel](/data/attachment/album/201605/14/113055m2hylyoixljvzsyu.jpg)


*Greg Kroah-Hartman 在 CoreOS Fest, Berlin 的讲演*


每天，平均有超过 10800 行的代码增加， 5300 行代码被删除，并且还有 1875 行代码被修改，也就是说每秒钟都有超过 8 行代码的变化！


这是非常大的数量，这意味着 Linux 内核不像其它的技术，它在不断的变化，变得越来越好。


Kroah-Hartman 说，“当我第一次参与这个项目时，我们每个小时可以完成 2.5 个变更。每个人都这么说，‘哦，天哪，我们不可能更快了，那不现实’。微软和苹果也说，‘你赢了’，他们一字一顿的说，‘我们比不上，你们干的比任何人都要快，我们是望尘莫及啊’。而我们的开发速度越来越快，我们每次都会更快一些。”



但是，如果你的公司的发展依靠着 Linux，那这个变化速度看起来就很可怕。Kroah-Hartman 解释了为什么会有这么多变更：“我们提交了很多变更，但是不是因为我们为变更而变更的，那可需要很多的工作。我们其实很懒，我们做这么多的变更的原因是因为我们必须做，是因为这个世界不断变化而需要我们做这么多的变更。那种‘你做了个东西，然后啥也不用管，将它丢在一边就好了’的模式已经不可行了，因为这个东西已经连通了世界，而世界每时每刻在变化。事物都在互相作用，所以你必须跟着进化。如果你的操作系统不能改变，那它就没用了，这毋庸置疑。如果你的设备不能跟着与之互动的世界变化，那它同样也没用，这也毋庸置疑。所以，你可以看看那些不能与时俱进的操作系统，根本没有人用它们。”


为了做到这些变更，Linux 内核社区需要做到两点。首先，我们要有个按时间进行的发布计划。其次，我们需要小步快跑。我们完成一个发布就要开始下一个发布的开发。下一个发布的第一个 RC 版本里面就要包含进去所有开发人员丢进去的各种东西，包括各种新的东西、新的功能，而且它们需要经过严格考验。当所有的东西都测试良好，我们才会放出第一个 RC 版本，之后的 RC 版本就是各种问题的修复。这样，我们就能在一个分支的 7-8 个 RC 版本之后赶走所有发现的问题。


当我们准备好发布一个新的内核发布版本时，它已经经过了详尽的测试。但是仍然有问题时，人们使用的稳定版怎么修复问题呢，他们可不想在产品环境中使用 RC 版本，那么他们怎么修复问题？在 15 年前，内核社区就找到了解决方案，而这就是 Kroah-Hartman 的任务，他会对稳定版本进行分支，比如说 4.2 版，它的问题修复版本会以 4.2.1 、4.2.2、4.2.3 等等发布。


“这个版本规则就是它必须是一个问题修复版，而且它必须是一个正确的版本号或者是新的设备 ID，它必须出现在 Linux 内核代码树上。在我将它放到稳定分支之前，它就必须出现在 Linux 内核代码树上。这可以确保人们运行我们的稳定内核时，如果跳到一个新的分支版本时，不会发生中断，没有什么不一样的变化。这就是规则，而且一直以来运作良好。”Kroah-Hartman 说。


而当下一个新的分支（4.3）出来时，Kroah-Hartman 就会从当前的分支（4.2）离开而去维护 4.3。这样内核社区就完美的保证了当新的版本发布时任何事情都很连贯。


“每个版本我每周都会做一次发布，每周会对稳定分支打 100 到 150 个补丁。这很多，许多东西都变化了，也修复了许多东西。而这就是我们做的——稳定的分支。当 4.3 发布时，最好的事情是我解脱了，我说，‘啊！4.2，我再也不要见到你了’，然后我就跑到新的分支了，因为我们的工作，这一切都可以继续发展下去，所有人都很满意。”

