2017年10月25日,布拉格(欧洲开源峰会),Linux基金会,一个通过开源来推动大规模创新的非营利性组织,今天宣布了其2017年Linux内核开发报告。这份报告分析了15600名开发者在十多年的时间里所做的工作,以及最近的趋势。
这是第8次发布的报告,以帮助说明Linux内核开发过程和定义了计算历史上最大的协作项目的工作。今年的论文涵盖了Linux内核4.13版本完成的工作,重点是发布4.8到4.13版本。上一份报告于2016年8月发布,重点关注3.19至4.7版本。
报告要点摘要
今年报告的主要结果包括:
自从Git采用了详细的跟踪功能以来,已有超过1400家公司的15600名开发人员参与了Linux内核的开发。自上一份报告以来,超过500家公司的4300多名开发人员对内核做出了贡献;其中有1670个开发者贡献了第一次,约占贡献者的三分之一。
自上一份报告以来,赞助Linux内核开发的十大组织包括英特尔、Red Hat、Linaro、IBM、三星、SUSE、谷歌、AMD、Renesas和Mellanox。在完整的报告中可以看到完整的前30名贡献组织。
Linux开发的速度继续增加,参与开发的人员和公司的数量也在不断增加。内核每小时的平均变化量为8.5,比上一份报告中的7.8个变化显著增加,这意味着每天有204个变化,每周超过1400个变化。从去年的66天开始,平均每个版本的开发天数从去年的66天增加到67.66天,每一个版本的间隔时间分别为63或70天,提供了显著的可预测性。4.9和4.12开发周期的特点是在内核项目历史上看到的最高补丁率。
未领取薪酬的开发者可能正在趋于稳定,这些开发者贡献了8.2%的贡献,比去年的7.7%有所增加。这一数字仍远低于2014年的11.8%。这可能是由于内核开发人员短缺,导致那些有能力提交符合质量要求补丁的人,在找到工作时没有困难。
新加入内核开发的前三名是英特尔、谷歌、华为,其中华为投入33名工程师。
该报告由Linux内核开发者、LWN.net的编辑Jonathan Corbet和Greg kroah - hartman、Linux内核维护者和Linux基金会研究员共同撰写。今年的报告还采访了17个Linux内核开发人员和维护人员。
Linux基金会的执行董事Jim Zemlin说:“Linux内核中令人难以置信的贡献率和参与度证明了内核社区的持续实力和可扩展性。”“这份报告提供了重要的信息,帮助展示了协作开发模型在历史上最重要的软件项目之一是多么的有效。”
https://v.qq.com/x/page/e05680ndmha.html
视频:Greg kroah-hartman:Linux内核开发者
完整报告
目录
总结
介绍
从4.7开始有的一些亮点
开发模式
内核源代码
谁在做内核开发工作
谁在贡献
引进新开发人员
谁在审查工作
Bug报告
从26年的Linux 25开始
结论
总结
Linux已经成为开源软件世界中,历史上最成功的一个的合作开发项目。随着它的发展,Linux也开始占据主导地位,它进入的几乎所有市场,包括云、移动、嵌入式和超级计算。
到2017年,Linux操作系统运行90%的公众云计算工作负载占嵌入式市场份额的62%,占99%超级计算机占市场份额的百分比。它运行了82%的数据世界智能手机和十大公共云中的9个。然而,如果没有稳定的Linux内核的开发,整个开源生态系统的持续增长和惊人的增长是不可能。
Linux内核是Linux系统的核心,是有史以来最大的一个合作软件项目。定期的每隔9到10周发布一次,对Linux用户的更新了新功能,增加了设备支持,提高了性能。内核的变化率是高频和递增的,超过12000个最近内核发布的补丁。每个版本都包含1600多名开发人员,代表了200多家公司。
自2005年以来,来自超过1400家不同公司的15600名个人开发人员对内核做出了贡献。Linux内核已经成为了在其他领域的公司大规模开发的公共资源。
这是本报告一系列定期更新的第8个,自2008年以来,本报告每年发布一次。它通过4.13发行版(于2017年9月3日发布)来涵盖开发,重点放在自上次更新以来发布的版本(4.8到4.13)。这是一个典型的繁忙时期,在大约14个月的时间内,有6个内核版本创建,其中很多都是对内核开发人员和用户社区的变化和内容的变化。
Linux内核不是一个年轻的项目;它刚刚庆祝了它的26周年纪念日。软件世界是一个不断变化的世界,今天的“热系统”在明天可能称为过去,但是Linux,一个多世纪以来,比以往任何时候都更加强大。显然,内核开发人员正在做正确的事情。本报告提供了一个更新
进入这些开发人员一直在做的事情以及他们为什么要取得成功。
介绍
Linux内核是在Linux系统上运行的最底层的软件。它负责管理硬件,运行用户程序,维护整个系统的整体安全性和完整性。
现在广泛使用的内核,在1991年由Linus Torvalds发布了它的第一版,启动了整个Linux的开发。内核是相对一个完整的Linux系统(许多其它大型组件来自GNU项目,GNOME和KDE桌面项目,X.org项目,和许多其他来源)是一小部分,但它是确定了核心系统将如何工作和Linux真正独特的品质。
由于多种原因,Linux内核是一个值得研究的有趣项目。它是几乎所有Linux系统上最大的独立组件之一。它同时也是发展最快的开发过程之一,它涉及的开发人员比任何其他开源项目都要多。自2005年以来,由于使用了Git源代码管理系统,内核开发历史也得到了很好的记录。
从4.7开始有的一些亮点
内核开发社区仍然非常繁忙,如下面的统计数据所示。自4.7发布以来的一些亮点包括:
变更合并
只有不到83,000个变更已经从4319个独立开发人员中合并了,这是我们所知道的519个公司的代表。每个版本的变更数量(换句话说,内核的变更率)和开发人员的数量都从以前的报告中增加:涉及的公司数量保持稳定。
新功能像往常一样发布,在这个周期了大量的新功能,包括:
透明的巨大页面功能现在使用了flex支持的页面和程序数据页面,这导致了更高效的内存使用。
内核的文件系统被Sphinx支持的新工具链所取代;持续组织和加强我们的文件系统。
内核的核心定时器机制被一个更有远见的实现所取代
网络栈中的“快速数据路径”机制使高速包处理具有用户负载的BPF程序
BBR拥塞控制算法将改善多种设置中的网络性能。
支持Intel cacheallocaton技术可以更好地控制企业和实时工作负载的性能
交换子系统大大提高了可扩展性 - 现在重要的是,持久性内存设备可用于交换。
支持永久记忆,这可能从根本上改变我们可以用我们的电脑做什么。
期待已久的statx()系统调用现在可用
BFG和Khyber块I / O调度程序为各种I / O工作负载提供更好的性能
新的TEE框架有助于在ARM处理器上使用受信任的执行环境。
内核中的TLS实现允许卸载加密的网络流。
另外还有新驱动,增加了上百个驱动及上千个bug修复,及其他新功能。
开发模式
Linux内核开发在一个松散的,基于时间的发布模式下进行,新的主要内核版本每九或十周发布一次。
内核的变更次数
每小时变更次数
升级和打补丁的次数
#内核开发者采访
红帽的Fedora内核工程师
你的贡献是?
我是Fedora内核的两个维护者之一。 这意味着我推出了内核版本和bug错误。在这个角色之外,我维护了lon内存管理框架,并在arm / arm64和KSPP(内核强化)上偶尔进行工作。
内核社区需要做什么工作?
着重于扩大社区。 关于如何解决新开发人员的问题,我们一直在持续讨论,最近还有一个关注如何将贡献者发展成为维护者。 我想看到内核社区是为了使新的和存在的开发人员更容易的进程。 我也想看看关于建立一个包容性社区的讨论。
你为什么贡献内核
我一直在发现底层系统,并欣赏各种各样的作品。 在内核中总是有一些新的东西要学习,而且我的工作具有挑战性。
Facebook 软件工程师
你的贡献是?
我是Linux块层维护者,所以我主要开发该领域的功能,以及帮助审查和指导其他人做同样的事情。
内核社区需要做什么工作?
吸引更多年轻天才,这些年轻天大多数倾向于产品而不是基础设施。 引入新人非常重要。
你为什么贡献
我喜欢这份工作。 这是非常具有挑战性的,有趣的,另外还有个人的喜好,知道你的代码运行在数十亿台设备上。“最后,这是我的工作。
内核源码大小
Linux内核随着时间的推移不断增加,因为更多的硬件被支持,并且新功能被淘汰。
#内核开发者采访
你的贡献是?
我与Olof Johansson共同维护了arm-soc内核树。这就是ARM处理器和SoC(32位和64位)的所有规格变化。这是内核中较大的子系统之一,它与大多数驱动程序子系统进行交互。
我还在内核中保留了一些较小的东西。特别地,我将新的CPU架构getng合并到内核和相关的include / asm-generic /目录中。我的一个长期项目是在内核中的tme_t流量,这将导致32位代码在2038年放弃。
你最近在做什么工作?
除了维护者的工作外,在过去一年中,我花费了大量的时间来解决数百种较小的错误,故障或警告。我开始做很多构建测试,提供其他贡献者的代码质量,这现在已经变成了一个独立的方法,来使所有的随机配置都能够完美地构建。
三星巴西研究所
你的贡献是?
作为三星开源组的一部分,我负责三星研究巴西的开源项目。我维护媒体和EDAC(Error Detecton and Correcton)内核子系统。
你今年在做什么工作?
今年,我做了很多修补程序来改进Linux文档。其中很多与从基于XML的DocBook文档到标记语言(重组文本)的转换相关。由此,没有文档再次使用旧文档系统。我也最终关闭了DVB API上的文档差距,已经超过10年了!我也在媒体子系统上做了几个bug,包括通过堆栈执行DMA的许多驱动程序的4.9破解。
你为什么贡献
因为很有趣!认真地,我坚信计算机工程的创新过程目前是由Linux驱动的。在内核方面为我提供了与伟大开发人员合作的机会,并帮助我们改进了尖端的操作系统。
谁在做内核工作?
正在进行Linux内核开发的不同开发人员的数量以及赞助这项工作的可识别公司的数量在现有的内核版本上一直在增加,如下表所示
2.6.11-4.13版本前30名内核开发贡献者
4.8-4.13版本前30名内核开发贡献者
#内核开发者这采访
你的贡献是?
最近,我组织了内核自我保护项目(KSPP),它帮助其他开发人员聚焦在一起,加强了内核的强化。 我也是seccomp,pstore,LKDTM和gcc-plugin子系统的维护者,也是sysctl的共同维护者。
内核社区需要做什么工作?
我认为我们在规范系统调停的定位方面已经有很多工作,并且涉及到识别和消除容易出错的代码。 由于内核开发模式往往侧重于每个子系统的开发,因此对于贡献者来说,进行这些种类的变更是相当大的挑战。
你为什么贡献
我一直喜欢与底层软件一起工作,靠近硬件边界。 我喜欢它提出的挑战。 此外,由于Linux在世界各地都被使用,所以很难为更好的项目做出贡献,对许多人的生活产生了这样的影响。
你的贡献是?
我担任各种维护者角色。 x86架构,通用中断子系统和时钟子系统。
内核社区需要做什么工作?
除了难以预测的技术挑战之外,我们需要更多的代码清理和整合以及更多的审查能力。
你为什么贡献
首先,这很有趣,我坚信FOSS是正确的出路,但我坦率地承认我也是为了谋生而做的。
谁在贡献
Linux内核是一个由各种各样的公司使用的资源,4.8-4.13的内核贡献公司排名
#内核开发者采访
你的贡献是?
我是供稿人,维护者,我在Linux Foundaton技术咨询委员会任职。我维护Linux内核自身框架和USB-over-IP驱动程序。我也为Linux媒体,电源管理,IOMMU和DMA领域做出贡献。
你最近在做什么工作?
我今年的主要焦点是Exynos platorm上游的稳定性,Kselfest框架和个人测试。我为提高媒体子系统核心质量,以及对Exynos platorm的媒体和drm驱动程序做出了贡献。通过添加对“测试任务协议”和对象重定位的支持,我增强和改进了Kselfest框架。我启动测试稳定的内核发布候选人,并维护了Kselfest和USB-over-IP驱动程序。
内核社区需要做什么工作?
Linux内核社区应该重点关注添加对新硬件的支持,加强安全性并提高质量。着眼于有效的方式来检测安全漏洞,竞赛条件和难以解决的问题将有助于实现上述目标
你的贡献是?
我使用的工具Coccinelle,用于在Linux内核中发现错误并执行大规模演进。 我还协调了Outreachy实习计划的Linux内核项目。
你最近在做什么工作?
今年,我一直在与Bhumika Goyal一起工作,使得各种内核结构只读,部分由Core Infrastructure Initatve(CII)支持。 新加坡管理大学与Greg KH,Sasha Levin及其同事合作,我也一直致力于自动识别应该考虑用于稳定内核的补丁的补丁。 我们的做法是进行中的工作,但是几百个原本没有被标记为稳定的
已被识别并应用于稳定版本。
你为什么贡献
很多原因:潜在的影响,了解庞大代码基础的低级代码的挑战,有机会与社区进行互动,具有很高的技术水平。
引进新的开发人员
许多开发者在工作时间贡献,来自所在公司的支持。内核版本新的开发者
不同公司的新开发者
#开发者采访
你的贡献是?
我是网络子系统和Sparc端口的顶级维护者。
你最近在做什么工作?
我从网络代码中删除了UFO。
你为什么贡献
我被锁在房间里,不允许离开, 他们在门下面推了一些食物。
你的贡献是?
主要维护内存管理子系统。 我也是不具备当前维护者的子系统的最后维护者。
内核社区需要做什么工作?
我认为我们做得好,所以在很大程度上稳定下来。 我担心担心内核变得越来越复杂,因此对新开发人员而言越来越少。 我希望我们在减少技术进入者日常开发时会更加小心。
你为什么贡献
这是我应该做的,我喜欢为人们和组织带来微小改变的感觉。
你的贡献是?
我是一个开源的倡导者,并尝试向人们传达这些意义。 我保持实时稳定版本,以及Ftrace(Linux内核跟踪器)子系统。 我在Linux Foundaton的技术咨询委员会。
内核社区需要做什么工作?
我认为更多的重点应该放在eBPF上,并且帮助它更容易使用,同时关注安全性。 在内核中运行虚拟机可能是非常危险的,人们需要使用cauton并在开发过程中要小心。
你为什么贡献
因为它是您完全控制您的计算机的一个地方
谁做审核工作
补丁通常不会直接传入主线内核; 而是通过超过100个子系统树之一。
每个子系统树专用于内核的特定部分(示例可能是SCSI驱动程序,x86体系结构代码或网络),并在特定维护者的控制之下。 当一个子系统维护者接受一个补丁到一个子系统树中时,他或她将收到一个“Signed-off-by”行。 该行是一个声明,该补丁可以合法地并入到内核中; 可以使用sign off行的顺序来建立每个变化进入内核的路径
内核开发的贡献,可以通过查看sign off线,并且特别是开发人员添加的sign o ff线。
从4.7开始,添加最多非作者签名的开发人员就在右边,左边是sign off最多的公司。
#内核开发者采访
你的贡献是?
图形,前维护者。
你最近在做什么工作?
许多图形文件更新,指导新的提交者和维护者,改善过程和社区。 一些技术性的放松。
你为什么贡献
收益不错,图形开发实际上很有趣。
你的贡献是?
我是Linux内核中引脚控制和GPIO子系统的子系统维护器。 我还可以使用各种ARM设备和MTP(媒体传输协议)initator库中的用户空间libmtp。
内核社区需要做什么工作?
将所有传统块设备移动到多队列块基础设施并删除旧的块层路径。 包括巩固像ARM32和m68k这样的旧架构。
你为什么贡献
相当明显地,对核心的贡献,是被平等同行认可为人才所认识的人类意识的最终推动力所在。 这是驱动所有知识工作的社会心理机制。
*错误报告
一个已经有近83000个补丁应用的内核肯定会与新功能一起引入的一些错误。
#内核开发者采访
你的贡献是?
我是支持永久内存(PMEM)硬件设备的“libnvdimm”子系统的维护者之一。我也为DAX和其他能够实现PMEM的内核技术的发展做出贡献。
内核社区需要做什么工作?
加快Linux内核开发的单元测试文化的发展。将始终存在需要硬件和自定义环境的代码路径,但是libnvdimm单元测试有望成为如何在没有硬件的情况下测试驱动程序的示例。
你为什么贡献
我对Linux内核做出贡献,因为它很有趣。尽管单一公司使用所有最聪明的人才是困难的,但我可以联系到内核开发邮件列表,与世界级人才进行辩论和合作。辩论不可避免地取得进展,因为我们始终坚持做最好的项目长期健康的共同原则。几乎每一个我做贡献给我带来成长和学习新的东西。
你的贡献是?
我是电源管理基础架构的维护者和Linux内核中的ACPI内核。
你最近在做什么工作?
电源管理主要是:cpufreq改进(schedutl调速器和intel_pstate驱动程序改进)以及挂起到空闲的支持。
你为什么贡献
因为我喜欢这样做,所以我付出了代价,我认为这个项目对于整个文明的未来很重要。
Linux26年的经验和教训
正如一开始提到的,内核项目绝非年轻; 它在2016年庆祝其25周年。
很少的发展项目有这样的历史,其中许多发展项目很久以来一直处于一个“几乎完成”的状态,变化是微不足道的。 内核是不同的,但是在26年的时间里,这个项目比历史上任何时候都更为重要和更为行动。 对这个发展社区进行了许多学术研究,但是在我们完全了解其成功的关键之前,可能会有很多年。 也就是说,有一些很清楚的教训:
缩短发布周期很重要
在Linux项目的早期,新的主要内核版本只会每隔几年出现一次。 这意味着向用户提供新功能的相当大的延迟,这对用户和分销商都是如此。 但更重要的是,这么长的周期意味着必须立即集成大量的代码,那就是那里即使没有准备好,将代码压入下一个版本也是很大的压力。
短周期解决所有这些问题。 新的代码很快在稳定的版本中提供。 在几乎不变的基础上集成新代码使得可以以最小的disrupton引入甚至根本的变化。 开发人员知道,如果他们错过了一个发布周期,两个月内会再有一个,所以有一些尝试过早地合并代码的动机。
需要一个分布式可扩展性流程
层次发展模式, 不能所以变更直接转到Linus Torvalds,即使非常有才华的开发人员,也无法跟上一个像内核这样快速发展的项目。 扩展100个或更多维护者,负责代码审查和整合,为项目提供资源,以应对成千上万的变更,而不会牺牲审查质量。
工具非常关键
内核开发难以扩展,直到BitKeeper源代码管理系统的出现,几乎一夜之间改变了社区的实践;转向Git又带了一次飞跃。 没有正确的工具,像内核这样的项目根本无法在没有版本控制的情况下自动执行功能。
内核的共识导向模式很重要。
作为一般规则,如果受尊敬的开发人员反对,拟议的更改将不会合并。 这可能会令那些将几个月的邮件列表中阻止的代码进行编码的开发人员非常沮丧,但也可以确保内核保留适合广泛的用户和问题。 没有特别的用户社区能够以其他群体为代价进行更改。 因此,我们有一个从微型计算机系统扩展到超级计算机的内核,适用于大量的应用
一个相关因素是内核强大的“无回归”规则。
如果给定的内核在特定的设置中工作,所有后续的内核也必须在那里工作。 这个规则的实现并不总是完美的,但它使用户保证升级不会破坏他们的系统; 因此,他们愿意跟随内核,开发新的功能。
企业参与过程至关重要。
没有它,我们不会有这里描述的快速发展的项目。 但同样重要的是,没有一家公司主宰内核开发。 虽然任何公司都可以根据其特定需求改进内核,但是没有任何公司可以推动开发人员伤害别人或限制内核可以执行的任务。
项目内部不应有边界。
内核开发人员必须专注于内核的特定部分,但如果更改可以被修改,任何开发人员都可以对内核的任何部分进行更改。 因此,问题在于它们来自哪里,而不是解决问题,开发人员对整个内核有更广泛的看法,即使是最顽固的维护者也不能无限期地阻止任何给定子系统中的所需进度。
最重要的是,26年的内核历史表明,持续的合作伙伴关系可以带来共同的资源,没有一个组织能够独自发展。
#内核开发者采访
你的贡献是?
我是(协调)维护者的调度程序,锁定基础设施,原子操作基础架构,性能事件(内核)位,我也想到内存模型和内存障碍系统调用位,虽然这不是在维护者。
内核社区需要做什么工作?
一般来说,人们应该从事他们热衷的事情。 如果我根本就没有任何话说,我会要求他们再多考虑一下,再考虑一下。
你为什么贡献
因为它真棒 ;-)也就是说,你会遇到一些非常聪明的人,并在一起解决一些非常有趣的谜题。 最重要的是,每个人都可以加入或学习; 它没有被锁在一些公司的拱顶上。
你的贡献是?
我是linux完整性子系统维护者。 我致力于将安全可信的引导扩展到正在运行的操作系统。 存在与其他子系统(例如,TPM,受信任和加密密钥,可信密钥环)的多个依赖关系。
你最近在做什么工作?
我们正在努力缩小测量/评估差距。 例如,内核读取的内容应该被测量/评估。 今年,我们扩展了OpenPower上的kexec,将kexec上的IMA测量列表载入目标操作系统。 这提供了从启动到运行的目标操作系统的完整测量链。
你为什么贡献
我通常不会听到谁在使用linux完整性子系统或者它们如何使用它,只有当有问题。 它总是令我惊讶的是,它是如何和在哪里被使用。
结论
Linux内核是迄今为止最大和最成功的开源项目之一。巨大的变化率和个人贡献者的数量显示,它拥有一个充满活力和行动的社区,不断引起内核的演变,以应对不同环境的使用情况。这个变化率也随之增加参与该过程的开发商和公司的数量;到目前为止,开发过程已经证明能够毫无困难地扩大到更高的速度。
有足够的公司为大部分开发项目提供资金,即使许多可以从贡献给Linux的企业到目前为止还没有选择。随着Linux在服务器,台式机,移动和嵌入式市场上的扩展,预计这一数目颇多的公司是合理的- 和个人开发商 - 将会增加。内核开发社区欢迎新开发人员;鼓励有兴趣参与Linux内核的个人或团体参与如何在Linux社区中进行参与,或者与本文的作者或Linux Foundaton联系以获取更多信息。
关于Linux基金会
Linux基金会是世界顶级开发人员和企业的首选组织,以构建加速开放技术开发和商业应用的生态系统。与全球开源社区一起,它正在通过创造历史上最大的共享技术投资来解决最困难的技术问题。Linux基金会创建于2000年,它提供了工具、培训和事件来扩展任何开源项目,这些项目共同提供了一个公司无法实现的经济影响。更多信息可以在www.linuxfoundation.org找到。
译者观点:
1 从贡献度来看,中国的贡献者还比较少,内核的贡献逐步超公司化的方向发展,相信随着越来越多的中国公司加入Linux基金会,中国贡献者会越来越多;
2 报告中17位内核开发者的访问非常有意思,可以看出好多人都出于兴趣,热爱内核开发,从回答来看,这些开发者各种性格的人都有,有人还非常幽默,说明了程序员也都非常可爱。
3 报告一经放出,云技术社区组织了几位翻译组成员,分工翻译,在此感谢大家的努力,因为时间紧张,难免有不准确的地方,请大家指正。