LWN.net Logo

Statistics for the 2.6.36 development cycle

By Jonathan Corbet
October 13, 2010
As this is being written, the last 2.6.36 prepatch has (with luck) been released and the final release can be expected within a few days. So it is time to have a look at how this development cycle has gone. There are a couple of things which distinguish 2.6.36 from its predecessors in interesting ways.

The 2.6.36 kernel will incorporate about 9400 changesets contributed by 1159 developers. It thus continues a recent trend toward less active development cycles; here is what we have seen over the course of the last year or so:

ReleaseChanges
2.6.3110,883
2.6.3210,998
2.6.3310,871
2.6.349,443
2.6.359,801
2.6.36~9,400

The work which pushed up the changeset numbers in previous development cycles (shoveling out-of-tree code into the staging directory being at the top of the list) continues to wind down, as does work in other areas (like new filesystems). As a result, the kernel is going through a period of relatively low flux - but only relative to the last couple of years - and stabilization. That said, it's worth noting that, unless something unexpected happens, the 2.6.36 development cycle will be one of the shortest in recent memory; as a result, the number of changesets merged per day is the highest since 2.6.30.

Perhaps more interesting is this set of numbers: in 2.6.36, the development community added 604,000 lines of code and deleted 651,000 - for a total loss of almost 47,000 lines of code. This is the first time since the beginning of the git era that the size of the kernel source has gone down. Given that, perhaps it is appropriate to start with a look at who has been so busily removing code from the kernel:

Most lines removed - 2.6.36
Sam Ravnborg20581331.6%
Benjamin Herrenschmidt13366620.5%
Amerigo Wang191452.9%
Tony Luck84181.3%
Greg Kroah-Hartman70941.1%
Kiran Divekar44870.7%
Palash Bandyopadhyay44570.7%
Vincent Sanders34670.5%
Dave Jones26000.4%
Christoph Hellwig21630.3%

Sam Ravnborg and Ben Herrenschmidt both got to the top of the list through the removal of a bunch of defconfig files, part of a general cleanup inspired by some grumpiness from Linus back in June; Sam also finished up some SPARC unification work. Amerigo Wang removed a number of old and unused drivers. Between the three of them, they got rid of almost 360,000 lines of code - a laudable bit of work.

Looking at code changes in general for the 2.6.36 development cycle yields this picture:

Most active 2.6.36 developers
By changesets
Vasiliy Kulikov1601.7%
Eric Paris1241.3%
Dan Carpenter1221.3%
Chris Wilson1171.3%
Eric Dumazet1081.2%
Uwe Kleine-König1031.1%
Axel Lin981.0%
Johannes Berg971.0%
Al Viro961.0%
Julia Lawall891.0%
Tejun Heo880.9%
Joe Perches830.9%
Christoph Hellwig730.8%
Alex Deucher710.8%
Ben Skeggs690.7%
John W. Linville680.7%
Stefan Richter640.7%
Stephen M. Cameron620.7%
Felix Fietkau600.6%
Randy Dunlap590.6%
By changed lines
Sam Ravnborg20827019.4%
Benjamin Herrenschmidt13481112.5%
Chris Metcalf532044.9%
Omar Ramirez Luna510874.8%
Amerigo Wang191911.8%
Jarod Wilson160201.5%
Felix Fietkau118981.1%
Alan Olsen116501.1%
Mike Thomas110871.0%
Lars-Peter Clausen107951.0%
Tony Luck93510.9%
Tetsuo Handa79550.7%
Casey Leedom78880.7%
John Johansen75910.7%
Greg Kroah-Hartman71950.7%
Charles Clément68640.6%
Dmitry Kravkov67540.6%
Kiran Divekar67530.6%
Ben Collins65400.6%
Christoph Hellwig60450.6%

On the changesets side, Vasiliy Kulikov leads with a long list of mostly small fixes, mostly in device driver code. The bulk of Eric Paris's work is the addition of the fanotify subsystem - work which, as of this writing, will not be enabled for the 2.6.36 release due to user-space ABI concerns. Dan Carpenter is another master of small fixes, usually for problems identified by static analysis tools. Chris Wilson had a large number of changes to the Intel i915 driver - and seemingly an even larger number fixing the resulting problems. Eric Dumazet's changes were a large number of fixes and improvements to the networking subsystem.

Three of the top five in the "lines changed" column have already been mentioned above. The other two are Chris Metcalf, who added the new "Tile" architecture, and Omar Ramirez Luna, who added the TI dspbridge driver to the staging tree.

Only one top-five developer (Dan Carpenter) was also in the top five for 2.6.35; there are a lot of new faces on the list this time around.

There were 184 employers (that we could identify) who contributed code to the 2.6.36 kernel. The top corporate supporters were:

Most active 2.6.36 employers
By changesets
(None)152416.3%
Red Hat112912.1%
(Unknown)8659.2%
Intel6917.4%
Novell4044.3%
IBM3744.0%
Nokia2122.3%
Texas Instruments1892.0%
(Academia)1781.9%
Samsung1781.9%
Fujitsu1601.7%
NTT1511.6%
Pengutronix1451.6%
AMD1311.4%
Google1251.3%
(Consultant)1091.2%
Societe Francaise de Radiotelephone1081.2%
QLogic1071.1%
Atheros Communications991.1%
MiTAC981.0%
By lines changed
(None)29911527.8%
IBM15138614.1%
Red Hat764557.1%
(Unknown)716626.7%
Tilera648256.0%
Texas Instruments635215.9%
Intel551675.1%
Novell257982.4%
Samsung146191.4%
NTT121871.1%
Marvell107691.0%
Chelsio105601.0%
(Academia)103451.0%
QLogic98730.9%
Google95030.9%
Broadcom83910.8%
ST Ericsson83900.8%
Canonical83540.8%
Nokia80600.7%
Atheros Communications77620.7%

For the most part, this list looks the way it has for most development cycles, but there are a couple of new names here. One is Tilera, the company behind the Tile architecture, which got its support merged for 2.6.36. The other name appearing here for the first time is Canonical, which got the AppArmor security module code merged at last. Meanwhile, one should not forget the other 164 companies which do not appear on the above list; the commercial ecosystem around the Linux kernel remains strong and diverse.

Finally, your editor decided to rerun an old experiment to look at the longevity of code in the kernel. Every line in the kernel source was mapped back to the kernel release where it was last changed, then the totals for each release were plotted. The resulting picture looks like this:

[Bar chart]

At 1.6% of the total, 2.6.36 represents a relatively small piece of the total code base - the smallest for a long time. Almost 29% of the kernel code still dates back to the beginning of the git era, down from 31% last February. While much of our kernel code is quite new - 31% of the code comes from 2.6.30 or newer - much of it has also hung around for a long time.

All told, 2.6.36 was a relaxed development cycle with relatively few big new features and a fair amount of cleanup. That is certainly part of how it was able to be stabilized in a shorter-than-usual period, and with fewer than the usual number of regressions (56 reported as of October 10, as opposed to 100 for 2.6.35-rc6). Whether 2.6.36 represents a new norm for a slightly slower kernel development process remains to be seen. As of this writing, the linux-next tree contains 5850 changesets, most of which are presumably intended for 2.6.37. Quite a few changes still typically do not appear in linux-next prior to the opening of the merge window, so we should see more changes than that merged for 2.6.37. Still, current linux-next does not look like a huge wave of pent-up changes waiting to fly into the mainline; 2.6.37 may or may not exceed 2.6.36 in the number of changes, but it does not look like it will be breaking any records.


(Log in to post comments)

Statistics for the 2.6.36 development cycle

Posted Oct 14, 2010 6:56 UTC (Thu) by dlang (✭ supporter ✭, #313) [Link]

I like the idea of faster and smaller kernel cycles. As you note the changesets/day ratio is actually higher than it has been, even though the changesets/release is lower.

having people waiting less time for the next merge cycle decreases the preasure to get a change into this merge window (even if it's not quite ready), and this tends to improve the quality of the changes, ....

remember that when Linus started the current development model, he was aiming at 2-month cycles

you should get the ancient kernel git repository and graft it on to the main repository and see what the longevity graph looks like with the additional data.

Statistics for the 2.6.36 development cycle

Posted Oct 14, 2010 7:28 UTC (Thu) by Gollum (subscriber, #25237) [Link]

Yes, I was also thinking that grafting the historical git repo would be a good idea.

And perhaps presenting the graph as a stacked graph, with older kernels lower down. This would make it easy to say "40% of the code is older than 2.6.24", for example.

Statistics for the 2.6.36 development cycle

Posted Oct 17, 2010 14:12 UTC (Sun) by Lennie (subscriber, #49641) [Link]

I would actually like to know what the oldest line/code in the kernel is. :-)

Statistics for the 2.6.36 development cycle

Posted Oct 17, 2010 15:52 UTC (Sun) by Gollum (subscriber, #25237) [Link]

I'm not 100% sure if there are full records back to 0.00 days, but I'm sure somewhere out there there are tarballs of a lot of old releases which could be imported.

It would make a heck of an experiment, building a *complete* git repo.

Statistics for the 2.6.36 development cycle

Posted Oct 17, 2010 16:30 UTC (Sun) by dlang (✭ supporter ✭, #313) [Link]

people have already done the work, that is the 'historical' repo that I was mentioning

defconfig reduction, not sparc unification

Posted Oct 14, 2010 7:53 UTC (Thu) by sam.ravnborg (subscriber, #183) [Link]

The massive line reduction I contributed was a mechanical defconfig reduction.
To do so I extended kconfig with "make savedefconfig" - but this is a small patch in this respect.

The article points to the unification of sparc which was completed more than one year ago

defconfig reduction, not sparc unification

Posted Oct 14, 2010 16:28 UTC (Thu) by corbet (editor, #1) [Link]

In too much of a hurry reading the patch stream while trying to prepare to travel; apologies for the confusion. I've reworked the paragraph; for those who came after and wish to mock my sloppiness, the original version read like this:

Sam Ravnborg tops the list with a long list of patches unifying the 32-bit and 64-bit SPARC architecture code. As has happened with other architectures, the end result has been the removal of a lot of duplicated code. Ben Herrenschmidt, instead, removed most of the PowerPC-related "defconfig" files, part of a general cleanup inspired by some grumpiness from Linus back in June. Amerigo Wang removed a number of old and unused drivers. Between the three of them, they got rid of almost 360,000 lines of code - a laudable bit of work.

Statistics for the 2.6.36 development cycle

Posted Oct 14, 2010 15:48 UTC (Thu) by dankohn (subscriber, #6006) [Link]

Based on the decreasing number of patches, who can do a quick linear regression and project at what version the Linux kernel will done?

Statistics for the 2.6.36 development cycle

Posted Oct 14, 2010 15:55 UTC (Thu) by iznogood (subscriber, #51845) [Link]

Having a look at linux-next (http://www.kernel.org/pub/linux/kernel/v2.6/next/?C=M;O=D) i can see that the size of it is now around 10 MB bzipped. In 2.6.35 it was 5.6 MB and in 2.6.34 it was 5.1 MB.

How does this relate with the smaller number of patches in the linux-next git since previous releases?

Copyright © 2010, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds