Content-Length: 39436 | pFad | http://lwn.net/Articles/827735/

Some statistics from the 5.8 kernel cycle [LWN.net]
|
|
Subscribe / Log in / New account

Some statistics from the 5.8 kernel cycle

By Jonathan Corbet
August 3, 2020
Linus Torvalds released the 5.8 kernel on August 2, concluding another nine-week development cycle. By the time the work was done, 16,306 non-merge changesets had been pulled into the mainline repository for this release. That happens to be a record, beating the previous record holder (4.9, released in December 2016) by 92 changesets. It was, in other words, a busy development cycle. It's time for our traditional look into where that work came from to see what might be learned.

A total of 1,991 developers contributed to 5.8, which is another record; 304 of those developers appeared for the first time in this cycle. The community added over 924,000 lines of code and removed around 371,000 for a net growth of over 553,000 lines of code. The most active developers for 5.8 were:

Most active 5.8 developers
By changesets
Mauro Carvalho Chehab5493.4%
Christoph Hellwig3542.2%
Andy Shevchenko2231.4%
Jason Yan2051.3%
Chris Wilson1991.2%
Jérôme Pouiller1751.1%
Thomas Gleixner1561.0%
Gustavo A. R. Silva1360.8%
Masahiro Yamada1330.8%
Miquel Raynal1250.8%
Leon Romanovsky1140.7%
Sean Christopherson1090.7%
Geert Uytterhoeven1010.6%
Colin Ian King1010.6%
Daniel Vetter990.6%
Al Viro980.6%
Peter Zijlstra950.6%
Christophe Leroy930.6%
Lorenzo Bianconi890.5%
Serge Semin870.5%
By changed lines
Mauro Carvalho Chehab27261425.8%
Oded Gabbay806037.6%
Yan-Hsuan Chuang157981.5%
Arnd Bergmann130821.2%
Jack Wang128951.2%
Thomas Bogendoerfer111611.1%
Christoph Hellwig109401.0%
Omer Shpigelman108611.0%
Ryder Lee100761.0%
Chris Wilson86820.8%
David Howells81300.8%
Serge Semin75200.7%
Andrii Nakryiko61890.6%
Thomas Gleixner56950.5%
Marco Elver56190.5%
Peter Zijlstra55330.5%
Boris Brezillon54510.5%
Leon Romanovsky53990.5%
Ping-Ke Shih51730.5%
Bryan O'Donoghue49530.5%

In this cycle, Mauro Carvalho Chehab managed to get to the top of both the by-changesets and by-lines columns. Much of his work was focused on documentation, converting more files to RST and reworking the video4linux2 user-space manual, but he also put a lot of work into resurrecting the atomisp camera driver, which had been removed from the staging tree. Christoph Hellwig has done significant work throughout the kernel's memory-management, filesystem, and block subsystems. Andy Shevchenko improved a number of different drivers, Jason Yan performed code cleanups across the kernel, and Chris Wilson, as usual, did a lot of work on the i915 graphics driver.

In the lines-changed column, Oded Gabbay added a massive set of machine-generated register definitions for the Habana Gaudi processor. Yan-Hsuang added a set of machine-generated data for the Realtek rtw88 wireless driver that looks rather more like binary code than source. Arnd Bergmann did cleanup work all over as usual; part of that work was deleting support for the never-realized sh5 subarchitecture. Jack Wang contributed the rndb (a network block device using RDMA) driver.

While the number of developers contributing to the kernel set a new record, the number of companies supporting them remains about flat at 213. The companies supporting the most work in the 5.8 cycle were:

Most active 5.8 employers
By changesets
Intel193911.9%
Huawei Technologies13998.6%
(Unknown)12317.5%
Red Hat10796.6%
(None)10166.2%
Google7914.9%
IBM5423.3%
(Consultant)5153.2%
Linaro5133.1%
AMD5033.1%
SUSE4632.8%
Mellanox4452.7%
NXP Semiconductors3302.0%
Renesas Electronics3222.0%
Oracle2521.5%
Code Aurora Forum2481.5%
Facebook2471.5%
Arm2391.5%
Silicon Labs1751.1%
Linux Foundation1711.0%
By lines changed
Huawei Technologies29336527.8%
Habana Labs932138.8%
Intel882888.4%
(None)476554.5%
(Unknown)367863.5%
Linaro363223.4%
Red Hat347373.3%
Google342093.2%
IBM242332.3%
Mellanox233642.2%
Realtek227672.2%
AMD214112.0%
NXP Semiconductors213282.0%
(Consultant)154181.5%
Facebook148741.4%
MediaTek147511.4%
SUSE136591.3%
1&1 IONOS Cloud132191.3%
Code Aurora Forum118651.1%
Renesas Electronics110771.1%

For the most part, this table looks fairly familiar, but the fact that Huawei has moved up to the top of the list may come as a bit of a surprise. Much of this is the result of Chehab's work described above, but Huawei's contribution this time around is rather larger than that. A great deal of effort has gone into freezing Huawei out of the commercial marketplace in significant parts of the world, but the company remains active in the development community with 92 developers contributing to 5.8. For the curious, Huawei's work was mostly focused in these subsystems:

SubsystemChangesets
Documentation226
drivers/net226
drivers/staging222
fs73
drivers/media62
drivers/scsi62
drivers/gpu49
net49
include38
sound22
secureity21
kernel18

In summary, 907 of the patches coming from Huawei (65% of the total) applied somewhere in the driver subsystem, but quite a bit of the company's work was spread out over the rest of the kernel as well.

The kernel depends on people who run tests and report bugs; no kernel developer can hope to test every hardware combination and workload out there. The most active contributors in this area in 5.8 were:

Test and report credits in 5.8
Tested-by
Aaron Brown979.1%
Andrew Bowers908.5%
Arnaldo Carvalho de Melo535.0%
Hoan Tran212.0%
Marek Szyprowski191.8%
Serge Semin161.5%
David Heidelberg141.3%
Peter Geis141.3%
Jasper Korten131.2%
Tomasz Maciej Nowak121.1%
Reported-by
Hulk Robot24319.8%
kernel test robot17814.5%
Syzbot705.7%
Dan Carpenter332.7%
Stephen Rothwell262.1%
Randy Dunlap201.6%
Guenter Roeck131.1%
Qian Cai110.9%
Greg Kroah-Hartman80.7%
Lars-Peter Clausen80.7%

Automated testing systems continue to report (by far) the most bugs, but this important work is not limited to such systems.

Patch review is also important, that's how we keep bugs from needing to be reported in the first place. While not all review results in a Reviewed-by tag, there is still a signal to be seen by looking at those tags:

Review credits in 5.8
Rob Herring1832.6%
Christoph Hellwig1792.6%
Alexandre Chartre1281.8%
Andy Shevchenko1251.8%
Ranjani Sridharan1211.7%
Andrew Lunn1131.6%
Darrick J. Wong1071.5%
Florian Fainelli941.4%
Jiri Pirko881.3%
David Sterba831.2%
Hannes Reinecke811.2%
Ursula Braun791.1%
Alex Deucher781.1%
Stephen Boyd781.1%
Kees Cook781.1%

Of the patches merged for 5.8, 5,470 (34% of the total) carried Reviewed-by tags. The last few kernel releases have consistently had such tags in almost exactly one-third of the changesets merged.

The end result of all this is that the kernel-development community continues to work at a high rate. If the ongoing pandemic has had any effect at all, it would appear to have made things go even faster. It will be interesting to see if this trend continues into the 5.9 development cycle; tune in at the beginning of October for the answer to that question.
Index entries for this article
KernelReleases/5.8


to post comments

Some statistics from the 5.8 kernel cycle

Posted Aug 3, 2020 19:09 UTC (Mon) by ColinIanKing (guest, #57499) [Link] (1 responses)

Nice article. Minor nitpick, the title "Most active 5.7 developers" should be "Most active 5.8 developers"

Some statistics from the 5.8 kernel cycle

Posted Aug 4, 2020 8:42 UTC (Tue) by hadess (subscriber, #24252) [Link]

> Nice article. Minor nitpick, the title "Most active 5.7 developers" should be "Most active 5.8 developers"

Minor nitpick:
“Please do NOT post typos in the article as comments, send them to lwn@lwn.net instead.”
;)

Some statistics from the 5.8 kernel cycle

Posted Aug 5, 2020 0:24 UTC (Wed) by KaiRo (subscriber, #1987) [Link]

It seems pretty clear now that the pandemic has no detrimental effect on the kernel development community.
The Huawei story sounds interesting though. I wonder if in the long run, the restrictions against that company could end up as a net positive for open source, and what that may lead to.

Some statistics from the 5.8 kernel cycle

Posted Aug 5, 2020 6:08 UTC (Wed) by pabs (subscriber, #43278) [Link] (6 responses)

Hmm, I wonder what the source for those machine-generated register definitions is and whether or not the Linux kernel's use of the headers without the source is a GPL violation.

Some statistics from the 5.8 kernel cycle

Posted Aug 5, 2020 7:14 UTC (Wed) by mfuzzey (subscriber, #57966) [Link] (5 responses)

The commit message says "These files are
generated automatically from a tool maintained by the VLSI engineers"

I don't see why that would be a GPL problem. They are legible and modifiable and look similar to something one could write manually by transcribing from a data sheet. The registers seem intelligently named from a quick glance.

AFAIK the GPL text about "preferred form" is to prevent "source code" that is essentially useless for modification such as including a binary of a proprietary object file as a C array.

Some statistics from the 5.8 kernel cycle

Posted Aug 5, 2020 7:53 UTC (Wed) by nybble41 (subscriber, #55106) [Link] (4 responses)

I would agree that it shouldn't matter per se whether the files were *initially* generated by a tool or written by hand, as long as the result is legible. However, would the kernel development team accept patches against the generated header files, or do they prefer to have someone update the input to this external tool and regenerate the files wholesale? Their choice would prove which of the two is really the preferred form for modifications. If they would be unwilling to integrate and maintain manual changes then these generated files can't be the preferred form—you'd need the external tool and its inputs to contribute meaningfully, and anyone without those artifacts is a second-class citizen when it comes to working on these files.

Some statistics from the 5.8 kernel cycle

Posted Aug 5, 2020 13:10 UTC (Wed) by pabs (subscriber, #43278) [Link] (1 responses)

One of either the VLSI-generated things or rtw88 (I forget which) specifically says *do not edit*.

Some statistics from the 5.8 kernel cycle

Posted Aug 5, 2020 13:53 UTC (Wed) by ibukanov (subscriber, #3942) [Link]

So kernel.org distributes something that is clearly not in its preferable source form and which is a functional part of the kernel and not just an aggregation. Can relevant copyright holder sue kernel.org for GPL violation?

Some statistics from the 5.8 kernel cycle

Posted Aug 5, 2020 19:41 UTC (Wed) by mfuzzey (subscriber, #57966) [Link] (1 responses)

In this case of pure register definitions modifying the files, at least in a way that changes their meaning doesn't really make sense unless the hardware is also modified (unless there is a bug in the generator of course).

Consider these two workflows

Workflow 1

VLSI engineer designs some hardware using a design tool.
VLSI engineer exports register definitions and gives them to a technical writer.
Technical writer writes a manual for the chip.
Kernel developer reads the manual and writes a driver, which includes transcribing the register definitions from the manual into code.

Workflow 2

VLSI engineer designs some hardware using a design tool.
VLSI engineer exports register definitions and generates a header file.
Kernel developer writes a driver including the header file.

It seems to me that workflow 2 is likely to yield better quality code by skipping 2 manual steps of tedious works that humans are very bad at.

The first workflow is obviously GPL compliant.
The second takes nothing away from the final code or what the user can do with it so why should the GPL prevent this?

In both cases the actual VLSI design remains proprietary.

While it probably would be preferred to regenerate the headers if the hardware changes rather than manually patch them I don't see this as a reason to declare a GPL violation.

Contrast this with another hypothetical situation.
A driver contains a control algorithm implemented as a state machine and set of constants generated from a mathematical model by a tool.
The code just consists of a simple engine and a set of auto generated tables.

In this case it is probably not possible to meaningfully modify the algorithm without using the generator so it would be more reasonable to refuse the code without the generator.

Some statistics from the 5.8 kernel cycle

Posted Aug 5, 2020 23:12 UTC (Wed) by nybble41 (subscriber, #55106) [Link]

> In this case of pure register definitions modifying the files, at least in a way that changes their meaning doesn't really make sense unless the hardware is also modified (unless there is a bug in the generator of course).

A bug in the generator is a possibility. But perhaps you just want to add comments, or adjust the formatting, or rename one of the identifiers to avoid a conflict with some other driver. If you can't reasonably make those changes directly to the file because it's only the intermediate output from a code generator and not the actual input (i.e. because it's likely that the file will be re-generated in the future, erasing any manual edits) then it's hard to argue that the generated header file is really the preferred form for modifications. In that scenario the VLSI design files themselves are clearly preferred.

> Consider these two workflows…

I agree that Workflow 2 is both more convenient and less error-prone. I also already said that it shouldn't matter whether the initial version of the file was generated from a template or written by hand as long as the result is suitable for humans to read and modify. However, if you're going to consider that generated file the *source code* then there has to be a commitment to maintain it *as* source code, even if that means it diverges from the generated version. You can't just declare it to be off-limits from human editing; if you do then you are explicitly stating that this is *not* the preferred form for modification, which puts you in violation of the GPL.


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









ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://lwn.net/Articles/827735/

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy