|
|
Subscribe / Log in / New account

Some 4.12 development statistics

By Jonathan Corbet
July 4, 2017
Linus Torvalds released the 4.12 kernel on July 2, marking the end of one of the busiest development cycles in the kernel project's history. Tradition requires that LWN publish a look at this kernel release and who contributed to it. 4.12 was, in many ways, a fairly normal cycle, but it shows the development community's continued growth.

The 4.12 kernel includes 14,821 non-merge changesets contributed by 1,825 developers. That is not the highest changeset count we've ever seen — 4.9 is likely to hold that record for some time — but it comes in at a solid #2. The 4.12 kernel did set a new record for the number of developers participating and for the number of first-time contributors (334), though. This was also a significant release for the growth of the kernel code base: 4.12 has just over one million lines of code more than its predecessor.

The most active developers in the 4.12 cycle were:

Most active 4.12 developers
By changesets
Chris Wilson3652.5%
Al Viro1431.0%
Christoph Hellwig1360.9%
Tobin C. Harding1340.9%
Johan Hovold1240.9%
Colin Ian King1160.8%
Geert Uytterhoeven1160.8%
Jan Kara1150.8%
Arnd Bergmann1130.8%
Hans de Goede1020.7%
Daniel Vetter1000.7%
Dan Carpenter980.7%
Arnaldo Carvalho de Melo920.6%
Alex Deucher910.6%
Markus Elfring890.6%
Mauro Carvalho Chehab860.6%
Ville Syrjälä830.6%
Yan-Hsuan Chuang830.6%
Javier Martinez Canillas800.5%
Marc Zyngier780.5%
By changed lines
Alex Deucher36917925.2%
Alan Cox20955614.3%
Hans de Goede1121147.7%
Hans-Christian Egtvedt271001.9%
Gilad Ben-Yossef175931.2%
Chris Wilson156701.1%
Eric Huang108510.7%
Steven J. Hill108370.7%
Paolo Valente105050.7%
Yan-Hsuan Chuang102890.7%
Geert Uytterhoeven95800.7%
Mauro Carvalho Chehab88870.6%
Christoph Hellwig82850.6%
Javier González82110.6%
Ioana Radulescu81230.6%
Benjamin Herrenschmidt80160.5%
Boris Brezillon79430.5%
Jie Deng77410.5%
Ken Wang69040.5%
Neil Armstrong68870.5%

For the second cycle in a row, Chris Wilson contributed the most changesets; almost all of them were changes to the Intel i915 graphics driver. Al Viro worked as usual in the virtual filesystem layer, but the bulk of his patches this time around were a reworking of the low-level user-space access code — a job that required changing a fair amount of architecture-specific machinery. Christoph Hellwig made a number of improvements in the block and filesystem layers, Tobin Harding focused on staging fixes, and Johan Hovold worked extensively in the USB subsystem and beyond.

In a cycle where the kernel grows by a million lines, one can expect to see some developers adding a lot of code. Alex Deucher added more AMD graphic driver register definitions; drivers/gpu/drm/amd/include now contains over 800,000 lines of such definitions. Alan Cox added the Intel "atomisp" camera drivers to the staging tree. Hans de Goede added the rtl8723bs WiFi driver (plus a bunch of other work), Hans-Christian Egtvedt bucked the trend by removing the unloved AVR32 architecture, and Gilad Ben-Yossef added the ARM TrustZone CryptoCell C7XX crypto accelerator drivers.

Work on the 4.12 kernel was supported by at least 233 employers, a number which is pretty much in line with previous releases. The most active of those employers were:

Most active 4.12 employers
By changesets
Intel234013.9%
(Unknown)14478.6%
Red Hat12577.5%
(None)11737.0%
IBM8765.2%
Linaro5703.4%
AMD5263.1%
Google5153.1%
SUSE4822.9%
(Consultant)4582.7%
Samsung3482.1%
ARM3382.0%
Renesas Electronics3031.8%
Mellanox2841.7%
Oracle2381.4%
Broadcom2301.4%
Free Electrons2211.3%
NXP Semiconductors2121.3%
Huawei Technologies1991.2%
Texas Instruments1911.1%
By lines changed
AMD40600925.8%
Intel33063721.0%
Red Hat17106910.9%
IBM501983.2%
Linaro435252.8%
(Unknown)396292.5%
(None)317312.0%
ARM307952.0%
Cisco300161.9%
Cavium297371.9%
Samsung254421.6%
Google228141.5%
NXP Semi.207671.3%
(Consultant)179411.1%
Renesas Electronics176631.1%
Mellanox166381.1%
Free Electrons166361.1%
Realtek124140.8%
Synopsys122010.8%
SUSE119290.8%

As has been the case in recent years, there are not a lot of surprises to be found in this table. Kernel development may move quickly, but the commercial ecosystem surrounding it changes rather more slowly.

Another way of looking at things is to ask what the companies above are actually working on. Looking at the data from after the 4.7 release now (one year's worth, essentially), and just looking at Intel's contributions, we see something like this:

Intel (9192 total)
PercentDirectoryNotes
38.3%drivers/gpu 32.0% drivers/gpu/drm/i915
10.2%include
9.6%driver/net
5.4%drivers/staging Mostly the Lustre filesystem
4.5%arch/x86
4.0%drivers/infiniband
3.5%sound
3.4%drivers/usb
3.1%tools

Intel's work, thus, is mostly focused on support for Intel hardware — not a huge surprise, really. The company is routinely the kernel's largest single contributor, but it leaves core-kernel development to others.

The results for Red Hat look rather different (once again, looking at patches after 4.7):

Red Hat (4947 total)
PercentDirectoryNotes
15.8%include
14.8%fs
11.8%tools Mostly perf
10.6%net
10.3%arch/x86
9.3%drivers/gpu
8.1%kernel
5.5%drivers/net
4.0%drivers/md
2.6%arch/arm

Red Hat clearly has a more generalist role in kernel development, making changes all over the tree and throughout the core.

The next two rows in the table are for the hobbyists and the unknowns. The corresponding maps of where they are working are:

Unknown affiliation (5080 total)
PercentDirectoryNotes
22.6%drivers/staging
7.8%net
7.2%include
6.6%drivers/net
5.3%arch/arm
5.3%drivers/gpu
5.3%DocumentationMostly device-tree bindings
4.7%sound

No affiliation (4277 total)
PercentDirectoryNotes
14.5%drivers/net
12.1%drivers/staging
10.7%netMostly netfilter and batman-adv
7.6%include
6.7%drivers/media
5.8%Documentation
5.4%arch/arm
4.9%drivers/gpu
3.4%fs

To complete the set, here's the results from some of the other top companies:

IBM (2605 total)
PercentDirectoryNotes
35.4%arch/powerpc
17.0%arch/s390
7.7%drivers/s390
5.9%tools
5.7%include
5.5%drivers/net
5.2%kernel

AMD (1788 total)
PercentDirectoryNotes
82.7%drivers/gpu/drm/amd
4.6%drivers/gpu/drm/radeon
4.6%include
2.6%arch/x86

Linaro (4084 total)
PercentDirectoryNotes
31.7%drivers/stagingMostly greybus
7.7%arch/arm
6.7%include
5.4%arch/arm64
4.3%drivers/net
4.0%Documentationdevice-tree bindings
3.6%drivers/gpu
2.6%drivers/mmc

Google (1956 total)
PercentDirectoryNotes
17.4%netcore and ipv4 mainly
14.7%include
11.1%drivers/staginggreybus
10.2%drivers/pci
9.1%drivers/net
8.6%fs
5.6%arch/x86
4.5%drivers/input
4.3%Documentation
3.7%mm

SUSE (1896 total)
PercentDirectoryNotes
28.4%fs15% btrfs
16.5%include
11.1%mm
8.4%sound
8.3%arch/x86
6.8%drivers/scsi
6.3%drivers/md
4.2%kernel
4.0%Documentation

Clearly, each company is contributing to the kernel for its own reasons, and each focuses its effort accordingly. Hardware-oriented companies have a tendency to not look much beyond supporting their own products, while companies that deal more directly with the end users have a more general focus. Somehow, they all manage to work together and keep the kernel process going and the community growing in a consistent and predictable way.

Index entries for this article
KernelReleases/4.12


to post comments

Some 4.12 development statistics

Posted Jul 4, 2017 19:52 UTC (Tue) by dankohn (guest, #6006) [Link] (2 responses)

Is the directory per company info a new feature? Could you please say how to generate it from gitdm?

Some 4.12 development statistics

Posted Jul 5, 2017 5:48 UTC (Wed) by pabs (subscriber, #43278) [Link]

This is definitely the first time I've seen it on LWN.

Some 4.12 development statistics

Posted Jul 5, 2017 18:10 UTC (Wed) by dankohn (guest, #6006) [Link]

For posterity, Jon Corbet responded to me by email to explain:

In short, to get the numbers for (say) Intel, I do a normal-looking gitdm
run but add:

-C "Intel" -f intel.files

That will (1) only look at commits from an Intel employee, and (2) put a
list of touched files in "intel.files". A "sort -rn" on that file will
put them into decreasing order, at which point the numbers are relatively
easy to pick out.

Some 4.12 development statistics

Posted Jul 5, 2017 6:24 UTC (Wed) by dgm (subscriber, #49227) [Link] (2 responses)

I find it astonishing that Alex Deucher and Alan Cox have handled to touch more than half a million lines of code between them two. I'm not sure if I would be able to *read* that many lines, much less change them.

Some 4.12 development statistics

Posted Jul 5, 2017 7:11 UTC (Wed) by gby (guest, #23264) [Link]

They most probably didn't *really* read many of those lines and almost for sure did not author many of them. For example, most of the 17,593 lines listed under my name were written by others. I'm just the one upstreaming the driver and maintaining it. Tons of that code tends to be a long include file full of register and descriptor definitions, quite often auto-generated from hardware definition files.

Some 4.12 development statistics

Posted Jul 6, 2017 19:19 UTC (Thu) by broonie (subscriber, #7078) [Link]

It's common to get very big line counts by doing things like removing old drivers or adding new devices with large register sets where you can often get big machine generated sets of register definitions and/or defaults.

Some 4.12 development statistics

Posted Jul 5, 2017 9:32 UTC (Wed) by arnd (subscriber, #8866) [Link]

I made a chart showing the git trees that contributed most to the kernel over time, by number of patches and number of lines:

https://docs.google.com/spreadsheets/d/15lFZZ_RygzGgwJSPc...

In 4.12 both staging and drm were really big compared to the rest. We have had previous releases in which one of them dominated the total patch count or diff size but not both at the same time, and we have other trees that are relatively big (net-next, tip, arm-soc, ...) but more constant.

Some 4.12 development statistics

Posted Jul 7, 2017 15:12 UTC (Fri) by kdave (subscriber, #44472) [Link] (1 responses)

'Novell' as an employer does not exist anymore, s/Novell/SUSE/.

Some 4.12 development statistics

Posted Jul 7, 2017 16:25 UTC (Fri) by corbet (editor, #1) [Link]

Yes, that's a manual fix for $REASONS; it got done then undone when I fixed an unrelated problem. Fixed again.

Some 4.12 development statistics

Posted Jul 30, 2017 15:31 UTC (Sun) by andy_shev (subscriber, #75870) [Link] (4 responses)

I didn't check myself so the following question. Imagine that a maintainer does

% sed -i -e 's/old_api_call/new_api_call/g' <list of affected files>

If number of list of affected files greate than let's say 100 she or he immediatelly poped up in the statistics, right? But it's not what we would like to see there for my point of view.

Metrics

Posted Jul 30, 2017 19:09 UTC (Sun) by corbet (editor, #1) [Link] (3 responses)

Nothing I've done here counts the number of affected files, so not necessarily. But I'll freely admit that the metrics used here — changesets and changed lines — are awful. I'd sure like to find something better if anybody has any good ideas.

Metrics

Posted Jul 31, 2017 2:55 UTC (Mon) by pabs (subscriber, #43278) [Link] (1 responses)

Maybe something based on tokens using cregit?

Metrics

Posted Jul 31, 2017 13:42 UTC (Mon) by corbet (editor, #1) [Link]

As far as I've been able to tell, the results that come out of cregit closely match the (simpler) "by lines" metric.

Metrics

Posted Aug 1, 2017 16:21 UTC (Tue) by andy_shev (subscriber, #75870) [Link]

Probably I didn't put it clear, I meant independent "modules / drivers" under "files", and statistics here is "by changesets".

$ gt4tree.sh v4.12..origin/master
Christoph Hellwig (246):
Mauro Carvalho Chehab (169):
Thomas Gleixner (143):
Takashi Iwai (130):
Chris Wilson (126):
Arvind Yadav (122):
...

See the last name in the list, here. While I appreciate the work done by Arvind, it's still a mechanical routine which can be easily scripted (coccinelle, sed, etc).


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