Linux 是世界上最大的软件开发项目
创始人
2024-03-01 17:00:02
0

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

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,我再也不要见到你了’,然后我就跑到新的分支了,因为我们的工作,这一切都可以继续发展下去,所有人都很满意。”

相关内容

DeepSeek开源第三弹...
新浪讯 2月26日上午消息,DeepSeek开源周(OpenSou...
2025-02-26 10:19:19
DeepSeek"...
今天是DeepSeek“开源周”第二日,DeepSeek宣布开源D...
2025-02-25 18:21:46
DeepSeek开源第二弹...
衡宇 发自 凹非寺 量子位 | 公众号 QbitAI 好消息如约而...
2025-02-25 17:20:59
刚刚,DeepSeek开源...
机器之心报道 机器之心编辑部 上周五,DeepSeek 发推说本周...
2025-02-25 12:50:48
DeepSeek“开源周”...
今天是DeepSeek“开源周”第二日,DeepSeek宣布开源D...
2025-02-25 12:49:58
DeepSeek开源周第二...
智通财经APP获悉,DeepSeek官宣,今日开源DeepEP,第...
2025-02-25 11:50:47

热门资讯

使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
Bazzite:专为 Stea... 为 Linux 桌面或者 Steam Deck 做好游戏准备,听起来都很刺激!对于一个专为 Linu...
Motrix:一个漂亮的跨平台... 一个开源的下载管理器,提供了一个简洁的用户界面,同时提供了跨平台操作的所有基本功能。在这里了解关于它...
Bash 脚本中如何使用 he... here 文档 here document (LCTT 译注:here 文档又称作 heredoc ...
使用 dialog 和 jq ... 为何选择文字用户界面(TUI)?许多人每日都在使用终端,因此, 文字用户界面 Text User I...