Linux|29 年过百万次 commit,Linux 内核何以发展至今?
1991 年,21 岁的芬兰大学生 Linus Torvalds 写下第一行 Linux 内核代码时,多半没有想到它会成长为今天这样的庞然大物 。当年 8 月 25 日,Torvalds 在 Minix Usenet 新闻组里发了一封帖子,称自己正在做一个自由的操作系统,“就是个兴趣爱好,不会搞得像 GNU 那么大那么专业” 。
事情的发展显然远超他的预期,如今小到传感器,大到超级计算机,从智能手机、手表、汽车等日常用品到航天器等设备,Linux 内核的身影已无处不在 。
随着迄今为止最大版本 Linux Kernel 5.8 于今年 8 月初的发布,Linux 内核已拥有超过 2 万名贡献者,历史 commit 数超过 100 万次,迎来一个新的里程碑 。
上周恰逢 Linux 29 周年纪念日,Linux 基金会发布了一份详尽的 Linux 内核报告,涵盖了自 1991 年 9 月 17 日首次发布以来,到 2020 年 8 月 2 日最新版本的 Linux 内核历史 。
版本控制:从 BitKeeper 到 Git
Linux 基金会从 2008 年开始每年发布 Linux 内核报告,但此前一直难以将其发展过程完整串联起来 。今年,借助 Daniel German 博士的 cregit 工具,他们成功追溯到了第一个版本,Linux 内核的发展时间线变得清晰 。根据版本控制方式,可大致分为以下三个阶段:
- pre-version control(前版本控制):1991 年 9 月 - 2002 年 2 月 4 日
- BitKeeper:2002 年 2 月 4 日 - 2005 年 4 月 15 日
- Git:2005 年 4 月 16 日至今
2002 年 2 月 4 日,BitKeeper 的使用标志着 Linux 内核 commit 历史的开启 。然而 BitKeeper 为专有软件,这一决定在社区中遭受了长期质疑 。直到 2005 年,BitKeeper 拥有者 Larry McVoy 决定收回无偿使用 BitKeeper 的许可 。Torvalds 本人当时又对现成的 CVS 和 Subversion 等集中式版本控制工具感到不满,因此自己动手,用十天时间写出了 Git 的第一个版本 。
Git 目前已成为开发者们非常熟知且广泛使用的分布式版本控制系统 。Linus Torvalds 则表现得更多的是迫于无奈,他曾声称自己“根本不想做源代码管理,觉得这是计算机世界中最无趣的事情” 。
【Linux|29 年过百万次 commit,Linux 内核何以发展至今?】自从版本控制系统由 BitKeeper 改为 Git 后,Linux 内核每年的贡献者和 commit 数量都在稳步增长 。历年的内核报告数据显示,2005 年 5 月发布的 2.6.12 版本平均每小时收到 2 次 commit 。15 年后,2019 年的平均数是每小时 9.4 次 。而在最新的 5.8 内核中,平均每小时 commit 数达到了 10.7 次 。
繁杂且自成体系的内核代码
首个内核版本 linux-0.01.tar.Z 由 88 个文件和 10,239 行代码组成,运行在 i386 这样单一的硬件架构上 。到了 5.8 版本,这一数据扩张为 69,325 个文件和 28,442,673 行代码,并能够在 30 多种主要的架构上运行 。
数量上的庞大仅是 Linux 内核代码的表象,它自身更是形成了一套复杂的体系,不熟悉的人往往不知从何处下手,极有可能“牵一发而动全身” 。这或许也是内核维护者难寻的原因之一 。
Linux 内核发布第一天起的某些代码仍在当前版本中使用,例如 Torvalds 和大学好友 Lars Wirzenius 共同编写的 vsprintf 例程,它也是为数不多存在至今的首次 commit 中的源代码 。
文章图片
今年的内核报告提到,有 2,964 个能被追溯至 1991 年的 token 如今在 5.8 版本中也能找到 。5.8 版本超过一半的代码写于近 7 年内,但之前所有年份都对此版本有贡献 。过去的代码不断在后续的版本中留下痕迹 。
持续膨胀的内核文件量和代码行数未见得完全是一件好事,为了使系统不变得臃肿,内核维护者需要做一些修枝剪叶的工作 。Linux 内核中未使用的代码和文件都会被视情况删除,有一些版本还会进行大的清理,例如 2018 年的 4.17 版本,删除了 8 个架构,净减少代码大约 180,000 行 。
不仅仅是源码,Linux 内核维护者还会关注空白行和代码注释,以确保源码的可读性 。
开发者原创证书和标签管理
2004 年对开发者原创证书(Developer Certificate of Origin,简称 DCO)的标准化是 Linux 内核史上的一个关键变化点 。DCO 的引入为开发者和用户提供了法律保护,同时又不至于增加程序负担 。它极大地提高了跟踪补丁进入内核的路径的能力,加上版本控制系统向 Git 的过渡,DCO 有效地减轻了开发者做贡献的开销,因此变得很受欢迎,后来也被许多其他开源项目采用 。
推荐阅读
- 政略战略战术|仅仅10天,我国购美国百万吨大豆!为什么美国大豆这么受欢迎?
- 国民记者|刘翔放不下的21岁:2004年过去了,我依然很想她
- 今日趣闻|大衣哥儿子儿媳回门,开豪车穿名牌被批炫富,女方父亲更是百万豪车相迎
- 趣观历史|他舍弃百万薪资,不顾亲人阻拦步入佛门,现独居深山父母拒绝相认
- 四川农村日报|我省今春首次百万亩撂荒地复垦复耕,秋收表现如何?
- 教育|大数据解读上海教博会:总浏览量超百万,主要观众为学生群体
- 务农|旭日阳刚出道10年,为何刘刚能年入百万,王旭却只能回家务农
- 人是为|60岁执意生下双胞胎,9年过后却后悔,曾经的幸福已被现实打败
- 揭秘大娱圈|“旭日阳刚”组合被汪峰禁唱十年后:一个年入百万,一个回家务农
- 摇到|男子上牌摇到“5个8”,原以为百万到手,5秒后却悲剧了
