Subject: [ANN] netdev development stats for 6.8

From: Jakub Kicinski <[email-masked]>
Date: Tue, 9 Jan 2024 13:40:53 -0800

Intro
-----

We have posted our pull requests with networking changes for the 6.8
kernel release earlier today. As is tradition here are the development
statistics based on mailing list traffic on netdev@vger.

These stats are somewhat like LWN stats:
https://lwn.net/Articles/956765/
but more focused on review participation.

Changes in methodology
----------------------

After a few releases of laziness, I took a day to work on the code.
First and perhaps most importantly I added workarounds to the code
grouping emails into threads. 3% of emails which would previously 
not get threaded now does, which should help reviewer scores.

I also implemented a fairly naive "change set tracking".
Scripts can group threads with the same subject (minus stuff in square
brackets) into a "change set". Detect when review tags are sent on
the list, anywhere in the life cycle of the change set. As well as
when the change set gets applied (by finding patchwork bot's reply).
This is all a bit wobbly, as we only analyze traffic from one release
cycle (patches may have been posted for the previous cycle already),
patchwork bot doesn't always reply, and cover letters change subject.
Hopefully those inaccuracies don't muddy up the picture too much :)

The change sets factor into the score math, the new formula is:

   2 * change-set-reviewer 
 + 8 * thread-reviewer
 + 2 * (msg-reviewer - 1)
 - 4 * msg-author

General stats
-------------

Cycle started on Fri, 27 Oct, ended Tue, 09 Jan. That's 74 days
(with a slight overlap with previous cycle, I computed previous
stats few days after the PR, it seems). That's 11 days more
than previous cycle.

We have seen 240 msg/day on the list, and 17 commits/day.
The commits dropped by 12%, which is not very surprising given 
the winter break.

The number of review tags in git history have recovered to 69% total
commits containing review tags and 54% with tags from different company
than the author.

Change set stats
----------------

Review rate from git history match the results from the new change set
logic. According to the change set stats - 66% of "change sets" which
ended up getting applied had replies carrying Review / Ack tags.

Change sets which got applied without any review tag posted to the list
had on average 1.35 revisions, those which did receive review tags had
1.80 revisions.

Another somewhat interesting stat is that single-patch postings
had on average 1.40 revisions, while multi-patch series 2.17.
Which makes sense, as bug in any patch requires a repost of the whole
series.

Longest change set (most revisions) the script was able to track down
in this cycle had 10 postings.

Rankings
--------

In next release cycle I'll switch some of the rankings to change sets,
if they are more interesting. Since I don't have "previous ranking"
for change sets this time I'm sticking to threads and messages.

Top reviewers (thr):                 Top reviewers (msg):                
   1 ( +1) [24] Jakub Kicinski          1 (   ) [43] Jakub Kicinski      
   2 ( -1) [23] Simon Horman            2 (   ) [39] Simon Horman        
   3 (   ) [15] Andrew Lunn             3 (   ) [39] Andrew Lunn         
   4 ( +1) [10] Eric Dumazet            4 ( +6) [23] Vladimir Oltean     
   5 ( +6) [ 8] Russell King            5 ( -1) [19] Eric Dumazet        
   6 ( -2) [ 7] Paolo Abeni             6 ( +7) [17] Russell King 
   7 ( +6) [ 5] Vladimir Oltean         7 ( +1) [15] Jiri Pirko  
   8 (   ) [ 5] Jiri Pirko              8 (+13) [11] Krzysztof Kozlowski 
   9 ( -3) [ 5] David Ahern             9 ( -3) [10] Paolo Abeni         
  10 (+13) [ 5] Krzysztof Kozlowski    10 ( -5) [ 9] David Ahern         
  11 ( +1) [ 4] Willem de Bruijn       11 (***) [ 8] Sergey Shtylyov     
  12 ( +9) [ 3] Stephen Hemminger      12 ( +3) [ 7] Willem de Bruijn    
  13 ( -4) [ 3] Florian Fainelli       13 ( -6) [ 7] Florian Fainelli    
  14 (   ) [ 3] Rob Herring            14 (+19) [ 6] Stephen Hemminger   
  15 ( +1) [ 3] Przemek Kitszel        15 (+12) [ 6] Jamal Hadi Salim

Quite a bit of movement in top reviewers. All familiar names.
Thank you all for your work!

Top authors (thr):                   Top authors (msg):                  
   1 ( +2) [5] Jakub Kicinski           1 ( +1) [22] David Howells       
   2 (+22) [5] Christian Marangi        2 (+43) [22] Christian Marangi   
   3 ( -1) [3] Eric Dumazet             3 (***) [17] Hangbin Liu         
   4 ( +1) [3] Tony Nguyen              4 (   ) [14] Saeed Mahameed      
   5 (+22) [2] Shinas Rasheed           5 ( +4) [14] Tony Nguyen         
   6 (***) [2] Heiner Kallweit          6 (+19) [12] Kuniyuki Iwashima   
   7 (***) [2] Suman Ghosh              7 (   ) [11] Jakub Kicinski      
   8 (+11) [2] Stephen Rothwell         8 ( +8) [11] Andrii Nakryiko     
   9 (+14) [2] Kuniyuki Iwashima        9 (***) [10] Claudiu Beznea      
  10 (+34) [2] Hangbin Liu             10 (+26) [10] Justin Lai          

Christian contributed a lot of (versions of? ;) PHY changes
and LED integrations. Hangbin Liu significantly improved 
the selftests. Shinas posts the octeon EP VF driver.
Kuniyuki contributed to the socket layer (bhash2, 
TCP syn cookies, UNIX sockets).

Top reviewers (thr):                 Top reviewers (msg):                
   1 (   ) [38] RedHat                  1 (   ) [76] RedHat              
   2 (   ) [28] Meta                    2 (   ) [56] Meta                
   3 (   ) [19] Intel                   3 ( +1) [39] Andrew Lunn         
   4 ( +2) [15] Andrew Lunn             4 ( -1) [38] Intel               
   5 ( -1) [14] Google                  5 (   ) [31] Google              
   6 ( +5) [ 9] Oracle                  6 ( +6) [23] NXP                 
   7 ( +2) [ 9] Linaro                  7 ( -1) [23] nVidia              

Top authors (thr):                   Top authors (msg):                  
   1 ( +1) [18] Intel                   1 (   ) [67] Intel               
   2 ( +1) [12] RedHat                  2 ( +1) [60] RedHat              
   3 ( -2) [10] Google                  3 ( -1) [48] nVidia              
   4 (   ) [ 9] Meta                    4 ( +1) [32] Meta                
   5 ( +4) [ 7] Marvell                 5 ( -1) [24] Google              
   6 ( -1) [ 7] nVidia                  6 ( +4) [22] Alibaba             
   7 (+22) [ 5] Christian Marangi       7 (+23) [22] Christian Marangi   

Top scores (positive):               Top scores (negative):              
   1 (   ) [277] RedHat                 1 (+20) [81] Christian Marangi   
   2 (   ) [250] Meta                   2 ( +3) [73] Alibaba             
   3 (   ) [219] Andrew Lunn            3 ( -1) [67] nVidia              
   4 ( +4) [111] Oracle                 4 ( +9) [54] Marvell             
   5 (+34) [100] Google                 5 (+32) [50] Qualcomm            
   6 ( +4) [ 82] Linaro                 6 (***) [44] Amazon              
   7 ( +7) [ 70] NXP                    7 ( +4) [43] RealTek             
   8 ( -4) [ 62] Enfabrica              8 ( -7) [41] Bootlin             
   9 ( -2) [ 45] ARM                    9 (***) [40] Claudiu Beznea      
  10 (+13) [ 35] Microsoft             10 ( +4) [33] Mojatatu            

Alibaba works on both virtio and SMC without contributing many reviews.
Marvell folks (Suman in particular) have started commenting on patches,
but not nearly enough to balance the volume of authorship. Qualcomm
posted PHY patches, the volume isn't huge, but there are almost no
reviews coming from them.

Histograms
----------

LWN stats for 6.7 [1] included "longevity histograms", we are also
collecting those since 6.4 [2]. Histograms don't change much so I don't
normally include them. This time, in the interest of comparison here
they are, again:

Tenure for author
 0- 1yr   |  79 | ###################################
 1- 2yr   |  41 | ##################
 2- 3yr   |  32 | ##############
 3- 4yr   |  15 | ######
 4- 5yr   |  25 | ###########
 5- 6yr   |  22 | #########
 6- 7yr   |  24 | ##########
 7- 8yr   |  13 | #####
 8- 9yr   |  19 | ########
 9-10yr   |  18 | ########
10-11yr   |  14 | ######
11-12yr   |  12 | #####
12-13yr   |  11 | ####
13-14yr   |  14 | ######
14-15yr   |  12 | #####
15-16yr   |  11 | ####
16-17yr   |  10 | ####
17-18yr   |  12 | #####
18-19yr   |  32 | ##############
19-20yr   |   8 | ###

Very similar shape to LWN/global histogram. The main difference is that
our "OG peak" at 19 years is larger in proportion to most recent year.

The histogram for reviewers does not share the initial peak:

Tenure for reviewer
 0- 1yr   |  16 | ########
 1- 2yr   |  20 | ##########
 2- 3yr   |  19 | #########
 3- 4yr   |  14 | #######
 4- 5yr   |  25 | #############
 5- 6yr   |  27 | ##############
 6- 7yr   |  25 | #############
 7- 8yr   |  18 | #########
 8- 9yr   |  25 | #############
 9-10yr   |  17 | ########
10-11yr   |  16 | ########
11-12yr   |  11 | #####
12-13yr   |  17 | ########
13-14yr   |  23 | ###########
14-15yr   |  19 | #########
15-16yr   |   9 | ####
16-17yr   |  17 | ########
17-18yr   |  19 | #########
18-19yr   |  54 | ############################
19-20yr   |  18 | #########

[1] https://lwn.net/Articles/956765/
[2] https://lore.kernel.org/all/[email-masked]/
-- 
Code: https://github.com/kuba-moo/ml-stat
Raw output: https://netdev.bots.linux.dev/static/nipa/stats-6.8/stdout