|
|
Log in / Subscribe / Register

Some 5.15 development statistics

By Jonathan Corbet
November 1, 2021
The 5.15 kernel was released on October 31, with the code name appropriately changed to "Trick or Treat". By that time, 12,377 non-merge changesets had been merged into the mainline, adding a net total of 332,000 lines of code. Read on for a look at where the contributions to the 5.15 kernel came from.

Long-time readers of these summaries will note that the changeset total for 5.15 is relatively low; indeed, it's worth comparing it to the kernel's release history since 5.0 came out in early 2019:

ReleaseChangesetsDevelopers
5.0 12,808 1,712
5.1 13,034 1,707
5.2 14,024 1,716
5.3 14,605 1,846
5.4 14,619 1,802
5.5 14,350 1,885
5.6 12,665 1,712
5.7 13,901 1,878
5.8 16,306 1,991
5.9 14,858 1,914
5.10 16,308 1,971
5.11 14,340 1,912
5.12 13,015 1,873
5.13 16,030 2,062
5.14 14,735 1,912
5.15 12,377 1,797

As can be seen, 5.15 is, with regard to changesets merged, the quietest development cycle we have seen in the 5.x era. Indeed, one needs to go back to the 4.7 release in August 2016, which had 12,283 changesets from 1,582 developers, to find a quieter one. The relative slowness of this cycle is especially interesting considering that 5.15 will almost certainly be the next long-term support release. Kernel developers have often worried about vendors trying to shove unready code in for LTS releases, but there is little evidence of that happening here.

Instead, perhaps, the development community is just taking a well-deserved mid-pandemic break.

Individual contributors

Meanwhile, the number of developers participating in this release, while down from recent cycles, is higher than for some others in the 5.x era. Of the 1797 developers contributing to 5.15, 251 did so for the first time; that is a relatively low number but not out of line with previous releases. The most active developers in this cycle were:

Most active 5.15 developers
By changesets
Christoph Hellwig 2522.0%
Namjae Jeon 1711.4%
Takashi Iwai 1611.3%
Vladimir Oltean 1381.1%
Colin Ian King 1311.1%
Arnd Bergmann 1191.0%
Andy Shevchenko 1090.9%
Thomas Zimmermann 1080.9%
Geert Uytterhoeven 1000.8%
Michael Straube 920.7%
Linus Walleij 910.7%
Krzysztof Kozlowski 910.7%
Pavel Begunkov 830.7%
Sean Christopherson 820.7%
Thomas Gleixner 820.7%
Dan Carpenter 800.6%
Phillip Potter 790.6%
Bart Van Assche 760.6%
Randy Dunlap 730.6%
Christophe JAILLET 730.6%
By changed lines
Phillip Potter 13758417.0%
Namjae Jeon 424835.2%
Konstantin Komarov 322284.0%
Christoph Hellwig 221772.7%
Jin Yao 167722.1%
Hu Haowen 131021.6%
Trevor Wu 124071.5%
Linus Walleij 118631.5%
Zack Rusin 111631.4%
Lukas Bulwahn 92111.1%
Konrad Dybcio 87281.1%
Takashi Iwai 79941.0%
Vladimir Oltean 70240.9%
Arnd Bergmann 69650.9%
Fabio Aiuto 68640.8%
Kumar Kartikeya Dwivedi 54930.7%
Quinn Tran 53190.7%
James Smart 52870.7%
Matthew Brost 52190.6%
Iskren Chernev 51760.6%

Christoph Hellwig was the top contributor of changesets this time around; he continues his extensive refactoring of code in the block and SCSI subsystems, with occasional side trips to, for example, remove set_fs() from the m68k architecture. Namjae Jeon contributed the new ksmbd filesystem implementation, Takashi Iwai continued his work as the sound subsystem maintainer, Vladimir Oltean contributed a lot of network-driver improvements, and Colin Ian King did minor cleanups throughout the kernel tree.

The developer with the most changed lines this time around was Phillip Potter, who added the rt8818eu wireless network driver. Konstantin Komarov contributed the ntfs3 filesystem driver, and Jin Yao added perf events support for a number of newer Intel subarchitectures.

The kernel project depends on its testers and reviewers as much as it depends on its developers. For the 5.15 cycle, the developers with the most test and review credits were:

Test and review credits in 5.15
Tested-by
Daniel Wheeler 628.2%
Babu Moger 243.2%
Dvora Fuxbrumer 212.8%
Nathan Chancellor 131.7%
Stefano Stabellini 131.7%
Christophe Leroy 121.6%
Will Deacon 121.6%
Gerald Schaefer 121.6%
Lukasz Majczak 121.6%
Marc Zyngier 111.4%
Michael Schmitz 101.3%
Marek Vasut 101.3%
Yi Zhang 101.3%
Guenter Roeck 91.2%
Michael Walle 91.2%
Reviewed-by
Christoph Hellwig 2113.9%
Rob Herring 1542.9%
Darrick J. Wong 1011.9%
Laurent Pinchart 921.7%
David Sterba 691.3%
Hannes Reinecke 681.3%
Hans de Goede 601.1%
Daniel Vetter 591.1%
Linus Walleij 561.0%
Alex Deucher 531.0%
Andy Shevchenko 521.0%
Stephen Boyd 500.9%
Lad Prabhakar 500.9%
José Roberto de Souza 490.9%
Christian König 480.9%

Many of the people who accrue test credits in the kernel tend not to be otherwise visible within our community. What we are seeing is tags applied during the internal review process at some companies; many companies have such processes, but they don't all document that work in the patch tags. A similar thing often happens with the review tags, but that is not the case this time around. The top reviewers take on a number of roles in the kernel project; remember that the most active reviewer this time around (Christoph Hellwig) was also the most active contributor of changesets.

Employers

Work on 5.15 was supported by 213 employers that we were able to identify. The most active employers were:

Most active 5.15 employers
By changesets
Intel12169.8%
(Unknown)9587.7%
Google7185.8%
(None)6875.6%
Red Hat6335.1%
Linaro5774.7%
SUSE5534.5%
AMD5044.1%
Huawei Technologies4653.8%
NVIDIA3683.0%
IBM3492.8%
(Consultant)3062.5%
Facebook3052.5%
Canonical2752.2%
NXP Semiconductors2642.1%
Oracle2552.1%
Renesas Electronics2361.9%
Samsung2141.7%
Arm1931.6%
Linutronix1471.2%
By lines changed
(None)16621620.5%
Intel794929.8%
(Unknown)506426.2%
Samsung464315.7%
Linaro350034.3%
Paragon Software322284.0%
Red Hat243953.0%
(Consultant)236102.9%
AMD228642.8%
NVIDIA217052.7%
Google202152.5%
MediaTek197062.4%
SUSE195472.4%
Facebook139601.7%
VMWare135181.7%
SoMainline115811.4%
Huawei Technologies110701.4%
Renesas Electronics105571.3%
NXP Semiconductors104431.3%
Broadcom102021.3%

As usual, there aren't many surprises here. Paragon Software, which has not been seen on these lists before, shows up as the result of the ntfs3 contribution. Another thing worthy of note is that Huawei contributed 465 changesets to 5.15 — a substantial contribution but also big decrease from the company's 1,731 changesets in 5.14. Had Huawei sustained the 5.14 level of activity, this development cycle would have been comparable to its predecessors in terms of changesets merged. That said, almost all of the companies listed above had lower levels of contribution to 5.15 compared to 5.14.

Code longevity

Finally, it can be interesting to look at how much code from each release has survived into the current kernel. This can be done with the brute-force technique of running git blame on each file in the kernel tree, then mapping the commit that created each line to the release in which it appeared. If one does this for the current Git history, the result looks like:

[plot]

The code added in most releases makes up less than 2% of the code that is found in the 5.15 kernel; 5.15 itself accounts for 2.1% of the total. At the beginning of the Git era, just before the 2.6.12 release in 2005, the kernel had about 10.8 million lines of code. Over 16 years later, about 2.3 million of those lines (just under a quarter) still exist in 5.15, making up about 7.2% of the total. If one actually looks, much of that code takes the form of individual lines reading "/*" and the like, but that is not all of it. There are, for example, still 72 files in the kernel tree that have never been changed since they were added as part of the initial commit in 2005.

As for the other releases that stand out in the plot, there is usually a fairly straightforward explanation. 4.12, for example, included one of many large dumps of amdgpu register definition header files; those tend to live forever and are, probably, read by nobody. The same is true of 5.3 and 5.9, among other releases. In other cases it is not so clear; 5.6 saw the addition of the ath11k network driver and the WireGuard VPN, but those are not enough to explain why so much code persists from that release.

How much of the new code from the 5.15 development cycle will remain in coming years is yet to be seen. As the plot above shows, though, kernel code has a certain longevity; much of it will be around until it is all rewritten in Rust someday. Expect the development community to continue adding and changing code at a high speed between now and then, though.

Index entries for this article
KernelReleases/5.15


to post comments

Some 5.15 development statistics

Posted Nov 2, 2021 11:11 UTC (Tue) by smurf (subscriber, #17840) [Link] (4 responses)

Is the code (esp. the "Code Longevity" part) available somewhere?

Code

Posted Nov 2, 2021 13:45 UTC (Tue) by corbet (editor, #1) [Link] (2 responses)

It's all in git://git.lwn.net/gitdm.git

I'll warn you that the code is messy, but it does get the job done...

Code

Posted Nov 2, 2021 19:33 UTC (Tue) by smurf (subscriber, #17840) [Link] (1 responses)

Messiness is not a problem.

I couldn't find the part that creates the code longevity chart (or the table that it is based on), though. Which, incidentally, is the part I asked about :-P

Code

Posted Nov 2, 2021 19:39 UTC (Tue) by corbet (editor, #1) [Link]

The data comes from the linetags utility, which is in the gitdm repo.

The plotting of the chart was done by a brute-force one-time script using pyplot, which is a wonderful module for these things. At this point, I'm much more likely to bash out a script to make a plot with pyplot than to try to coax a spreadsheet into doing something reasonable.

The whole script can be found over here ...again, not really meant for public consumption and I don't have the time to change that...

Some 5.15 development statistics

Posted Nov 4, 2021 7:47 UTC (Thu) by fpeters (subscriber, #60665) [Link]

fyi for this kind of analysis there's also https://github.com/erikbern/git-of-theseus that can plot code survival (by year, not tag). Reading its README file now it also points to https://github.com/src-d/hercules that does the same and apparently much more.

Some 5.15 development statistics

Posted Nov 2, 2021 14:58 UTC (Tue) by Paf (subscriber, #91811) [Link]

Two questions.

1. Is 4.4 another GPU register file drop?
2. What did you use to create the graphs from the extracted data? (Apologies if that’s in the code dump)

5.15 afaics was slow as the merge window opened at the end of summer vacation season

Posted Nov 3, 2021 8:13 UTC (Wed) by knurd (subscriber, #113424) [Link]

> Instead, perhaps, the development community is just taking a well-deserved mid-pandemic break.

I had a suspicion that it was simply summer and the summer vacation season that were a big factor in this. As I needed a distraction I wrote a small script to compile some numbers, which seem to confirm my theory: people simply author and commit less patches in August, e.g. right before the merge window for 5.15 opened. For the numbers and two charts that show this see https://twitter.com/kernellogger/status/1455799355919699969 or https://docs.google.com/spreadsheets/d/1Q60lmo8JklcDUN5SS...

The script can be found here: https://gitlab.com/knurd42/kernel-scripts/-/blob/master/s... It likely has a bug or two, but a quick rough check seems to confirm the findings:

[thl@truhe mainline]$ git log --pretty='%as' --date=local v2.6.14.. | grep -c -e '-08-1[0-6]'
17944
[thl@truhe mainline]$ git log --pretty='%as' --date=local v2.6.14.. | grep -c -e '-12-1[0-6]'
21567

Some 5.15 development statistics

Posted Nov 7, 2021 16:17 UTC (Sun) by linusw (subscriber, #40300) [Link]

I think it is interesting to note significant contributions from the organization "SoMainline".

This is just another name for "organized hobbyists", some of them also working on things such as PostmarketOS:

https://www.somainline.org/

Some 5.15 development statistics

Posted Nov 11, 2021 19:56 UTC (Thu) by Baylink (guest, #755) [Link] (1 responses)

Hmmm. I don't mean to imply -- oh hell, yes I do -- that there might be anything skeevy about the contributions from Huawei *just because* the US federal government banned their gear from deployment in communications networks, and is buying out that gear from network operators (along with that of ZTE)...

But has anyone done any kernel analysis with a *specific* eye to the blame-map outcome of Huawei-employed developers?

As other articles in this week's LWN note, some of that type of attack code can be exceedingly subtle, and hard to spot even if you *are* looking for subterfuge, let along if you are not.

And no, the fact that I'm rereading _The Bear And The Dragon_ this week has nothing whatever to do with this comment...

Some 5.15 development statistics

Posted Nov 11, 2021 23:49 UTC (Thu) by Wol (subscriber, #4433) [Link]

I believe Huawei was blamed for a load of "exploit code" discovered in some of their routers. It was then discovered that this code was old, and had been directly copied from Cisco or similar ...

So even there you need to make sure you blame the right people :-)

Cheers,
Wol


Copyright © 2021, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds