|
|
Log in / Subscribe / Register

Development statistics for the 5.7 kernel

By Jonathan Corbet
June 2, 2020
The 5.7 kernel was released on May 31. By all appearances this was a normal development cycle, unaffected by the troubles in the wider world. Still, there are things to be learned by looking at where the code came from this time around. Read on for LWN's traditional look at who contributed to 5.7, who supported that work, and the paths by which it got into the mainline.

Work on 5.7 arrived in the form of 13,901 non-merge changesets contributed by 1,878 developers; that makes it rather busier than the 5.6 cycle was. It's notable that 281 of those developers made their first contribution to the kernel for 5.7, the highest number since 5.0; that is a distinct contrast from 5.6, which saw the lowest number of new contributors since 2013. Perhaps being made to stay at home has inspired more people to put together and send in that first kernel patch.

The most active developers contributing to 5.7 were:

Most active 5.7 developers
By changesets
Gustavo A. R. Silva2351.7%
Chris Wilson2311.7%
Geert Uytterhoeven1611.2%
Christoph Hellwig1381.0%
Sean Christopherson1371.0%
Takashi Iwai1320.9%
Mauro Carvalho Chehab1290.9%
Anson Huang1090.8%
Al Viro1080.8%
Andy Shevchenko1010.7%
Ville Syrjälä980.7%
Kuninori Morimoto960.7%
Jani Nikula950.7%
Thomas Gleixner910.7%
Colin Ian King910.7%
Masahiro Yamada900.6%
Lorenzo Bianconi900.6%
Jakub Kicinski860.6%
Ard Biesheuvel850.6%
Josef Bacik830.6%
By changed lines
Greg Kroah-Hartman410356.4%
Alex Elder144052.3%
Chris Packham108861.7%
Mauro Carvalho Chehab103551.6%
Chris Wilson79311.2%
Jani Nikula77191.2%
Marc Zyngier76591.2%
Srujana Challa75371.2%
Namjae Jeon72691.1%
Manivannan Sadhasivam68361.1%
Jyri Sarha56220.9%
Linus Walleij50560.8%
Christoph Hellwig49570.8%
Laurent Pinchart47810.7%
Taniya Das47140.7%
Paul Blakey43670.7%
Dmitry Bogdanov43280.7%
Vladimir Oltean42100.7%
Jerome Brunet39730.6%
Maxime Jourdan39210.6%

Gustavo A. R. Silva's place at the top of the "by changesets" column is almost entirely a result of his ongoing mission to replace zero-length arrays in structures with flexible arrays throughout the kernel; see this commit for a typical example of this work. Chris Wilson worked exclusively on the Intel i915 graphics driver, Geert Uytterhoeven contributed changes throughout various driver subsystems, Christoph Hellwig worked extensively in the XFS, SCSI, and block subsystems (and beyond), and Sean Christopherson continues to do a lot of work with the KVM hypervisor.

When Greg Kroah-Hartman gets to the top of the "lines changed" column, it usually means he's been busy deleting code, and that is certainly the case this time; he removed the exFAT filesystem (which reappeared later in the filesystem tree) and the wireless USB and UWB drivers from the staging tree. Alex Elder contributed the Qualcomm "IP accelerator" network driver, Chris Packham restored the Octeon USB and Ethernet drivers to the staging tree, and Mauro Carvalho Chehab converted untold numbers of documents to the RST format.

Work in 5.7 was supported by 215 employers that we were able to identify. The most active of those employers were:

Most active 5.7 employers
By changesets
Intel168212.1%
(Unknown)12028.6%
Red Hat9867.1%
(None)7885.7%
SUSE5483.9%
Google5143.7%
Huawei Technologies5083.7%
Mellanox4923.5%
AMD4913.5%
Linaro4123.0%
(Consultant)3862.8%
NXP Semiconductors3742.7%
IBM3712.7%
Renesas Electronics3152.3%
Linux Foundation3102.2%
Arm2782.0%
Facebook1921.4%
Code Aurora Forum1811.3%
Oracle1761.3%
Texas Instruments1751.3%
By lines changed
Intel6958410.9%
Linux Foundation451537.1%
Linaro446497.0%
(Unknown)406316.4%
Red Hat330225.2%
(None)206623.2%
Google199403.1%
(Consultant)194253.0%
Mellanox193173.0%
SUSE191273.0%
Huawei Technologies183012.9%
Code Aurora Forum178612.8%
Marvell178332.8%
Texas Instruments173142.7%
IBM149732.3%
NXP Semiconductors142232.2%
AMD127872.0%
BayLibre114451.8%
Samsung112381.8%
Allied Telesis110291.7%

As usual, there is little change in this table from one development cycle to the next.

How those changes get into the kernel

The days when developers would send their patches directly to Linus Torvalds are long past; almost all work passes through the hands of one or more subsystem maintainers first. All maintainers who manage a patch until (and including) its merging into a subsystem repository will add a Signed-off-by tag to that patch. That helps to identify the chain that got a particular patch into the mainline; it is also useful for generating metrics about who is managing patches in general. A Signed-off-by tag by a developer who is not the author of a patch is almost always indicative of subsystem maintainer activity, so looking at such tags tells us who those maintainers are.

In 5.7 the busiest maintainers (as measured by non-author Signed-off-by tags) and the employers that supported them were:

Non-author signoffs in 5.7
Developers
David S. Miller153111.6%
Greg Kroah-Hartman8116.1%
Mark Brown5384.1%
Alex Deucher4293.2%
Andrew Morton4013.0%
Martin K. Petersen2782.1%
Jens Axboe2501.9%
Mauro Carvalho Chehab2361.8%
Paolo Bonzini2351.8%
Shawn Guo2131.6%
David Sterba1961.5%
Herbert Xu1701.3%
Michael Ellerman1691.3%
Alexei Starovoitov1681.3%
Saeed Mahameed1581.2%
Vinod Koul1581.2%
Hans Verkuil1571.2%
Ingo Molnar1461.1%
Jason Gunthorpe1451.1%
Thomas Gleixner1431.1%
Employers
Red Hat256019.3%
Linaro137710.4%
Intel9867.4%
Linux Foundation8786.6%
Google7875.9%
Huawei Technologies4883.7%
Mellanox4863.7%
SUSE4863.7%
Facebook4653.5%
AMD4633.5%
(None)4403.3%
Oracle4113.1%
IBM3472.6%
Texas Instruments2311.7%
Arm2311.7%
Code Aurora Forum2131.6%
(Unknown)2001.5%
Qualcomm1591.2%
(Consultant)1581.2%
Cisco1581.2%

There may be over 200 companies supporting work on the Linux kernel, but it is still true that half of the patches going into the kernel pass through the hands of gatekeepers working for just five companies.

Once a patch lands in a subsystem Git repository, the trail of Signed-off-by tags ends. With a bit of digging, though, one can still find the traces that are left when a branch from one repository is merged into another; that allows the generation of a picture showing the paths taken by patches once they are applied. The result is a complicated graph, a small piece of which looks like this:

[Tree
plot]

Click on the image above to see the entire graph in its full, eye-straining glory.

One picture that emerges quickly from the graph is that it is still fairly flat. Some large subsystems go through a few layers of maintainers, but there are a lot of trees that feed directly into the mainline. Developers may not send their patches straight to Torvalds anymore, but subsystem maintainers still do.

There is another thing to be seen in this plot. Maintainers are supposed to apply cryptographic signatures to their tags before pushing changes upstream; that is how the recipient knows that the pull request actually came from the person it appears to. Recently, Torvalds asked a maintainer to start using signed tags, and added that "I've been encouraging people to do that even on kernel.org, and we've got fairly high coverage these days". One is naturally led to wonder how high that coverage actually is.

In the plot, trees that are not using signed tags to push changes upstream are colored red; one sees that there are still quite a few of them. Of the 121 trees that Torvalds pulled from during the 5.7 development cycle, 101 were using signed tags, while 20 were not, so that coverage is just over 83%. That only looks at trees directly pulled by Torvalds, though. If one looks at the whole picture, there are 214 subsystem trees involved, of which 167 are using signed tags — 78% of the total. So coverage may be "fairly high", but it is certainly not universal yet.

But, then, the kernel development process has always been a work in progress; like the kernel itself, it will never reach a point where it can be deemed to be "perfect". Meanwhile, it continues to integrate changes at a high rate and release the kernels that we all depend on; perfection is not needed to be good enough most of the time.

Index entries for this article
KernelReleases/5.7


to post comments

Development statistics for the 5.7 kernel

Posted Jun 2, 2020 22:16 UTC (Tue) by olof (subscriber, #11729) [Link]

Lazy maintainer opinion:

Signed tags are of course valuable since you have some assurance of where the code comes from and if it's been tampered with.

But another major benefit is that you get a nicely packaged commit message for the merge commit populated in your editor, instead of having to copy and paste something from the email. So from just that workflow improvement there's benefit in having the tags on the merging side.

Development statistics for the 5.7 kernel

Posted Jun 2, 2020 23:41 UTC (Tue) by gus3 (guest, #61103) [Link] (2 responses)

That patch submission flow picture looks a lot like a graphviz plot, I'm guessing rendered by dot. I would love to see the source for it!

(mostly because I'd like to see how it looks, rendered by twopi instead...)

Dot source

Posted Jun 2, 2020 23:52 UTC (Tue) by corbet (editor, #1) [Link] (1 responses)

You can find it over here, for a while at least. I've tried using twopi in the past, since that seems like it would be a more logical presentation for this graph, but I've never had any luck getting anything readable out of it...

LOL

Posted Jun 4, 2020 4:07 UTC (Thu) by gus3 (guest, #61103) [Link]

I tried it in EPS and SVG, and both versions were train-wrecks. And I even tried it in "circo". Neither EPS nor SVG got a rendering before I hit them with ^C.

You might consider submitting this as a test-case, or as an example of "it works this way [with dot], but not with the rest of them."

Text search in treeplot output?

Posted Jun 3, 2020 13:26 UTC (Wed) by jreiser (subscriber, #11027) [Link] (5 responses)

When I use Firefox 76.0 to look at the whole graph "in all its glory" then I get a photo that cannot be searched for text strings in the names of nodes. So the glory loses some usefulness. A .pdf viewer can search the graphical .pdf output from gperftools (via graphviz, I believe) for text strings (such as C++ class names), which provides a useful tool for understanding the information.

Text search in treeplot output?

Posted Jun 3, 2020 14:13 UTC (Wed) by karkhaz (subscriber, #99844) [Link] (3 responses)

Jon posted the source further up. You can render it as an SVG rather than an image with `dot -Tsvg graph.dot > graph.svg`. You can search that SVG for text when you open it in your browser.

SVG

Posted Jun 3, 2020 14:19 UTC (Wed) by corbet (editor, #1) [Link] (2 responses)

The image you get when you look at the whole thing is an SVG, no need to redo the rendering for that.

SVG

Posted Jun 3, 2020 15:33 UTC (Wed) by karkhaz (subscriber, #99844) [Link] (1 responses)

Oh, I see. Nevertheless, the text isn't searchable on that web page (https://lwn.net/Articles/821973/), because the SVG is inside an <img> tag rather than being inlined into the HTML. So yes, it's actually possible to search the text by right-clicking on the image and selecting "View image", to display only the image without the surrounding web page.

(I hadn't realized that putting an SVG into an <img> tag makes Firefox rasterize the image...learned something new today. Usually when I put SVGs onto a web page, I just inline the SVG XML straight onto the page.)

SVG

Posted Jun 3, 2020 17:21 UTC (Wed) by excors (subscriber, #95769) [Link]

> (I hadn't realized that putting an SVG into an <img> tag makes Firefox rasterize the image...learned something new today. Usually when I put SVGs onto a web page, I just inline the SVG XML straight onto the page.)

I don't think "rasterize" is the right term - it still behaves like a vector image to the same extent as inline SVG, it's just non-interactive and non-scripted. E.g. if you write HTML like:

<img width=1000 src='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="100"><text y="20"><animate attributeName="x" values="0;50;0" dur="10s" repeatCount="indefinite"/>Hello world</text></svg>'>

then it's nicely scaled and animated. But you can't interact with it (e.g. by selecting the text), and any <script>s in the SVG won't run, so that it behaves more like a traditional PNG/JPEG <img>. You can use <object type="image/svg+xml"> instead of <img> if you want external SVG with interactivity and scripting.

Text search in treeplot output?

Posted Jun 8, 2020 13:11 UTC (Mon) by andy_shev (subscriber, #75870) [Link]

OT: You know, you may also under the chart page :-)

Development statistics for the 5.7 kernel

Posted Jun 4, 2020 9:48 UTC (Thu) by ColinIanKing (guest, #57499) [Link] (1 responses)

These stats are useful, however some fixes don't show up because the maintainers squash fixes before they land in linus' tree. I've had a couple examples of that this week to some of my trivial static analysis fixes. I believe the real contribution stats maybe somewhat different to those shown here.

Development statistics for the 5.7 kernel

Posted Jun 4, 2020 18:33 UTC (Thu) by kdave (subscriber, #44472) [Link]

If the fixups arrive in time to be squashed then it's the preferred option. We'd rather have the patches self-contained for backporting purposes than to keep the exact track of the fixups. They often refer to a commit id that's in a branch that could get rebased, so either the fixup patch needs to be updated or folded right away. So IMHO the stats track how many fixups were needed post development phase. The question how many fixups happen during the development is also interesting but it would require combing reports like yours with mailinglist parsing of mail replies where lot of code changes are suggested.


Copyright © 2020, 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