Upload
duongmien
View
220
Download
1
Embed Size (px)
Citation preview
Trying to Explain the ”Incomprehensible” DecisionMaking Process of a Subsystem Maintainer
Wolfram Sang
Consultant / Renesas Upstream Kernel Team
13.10.2016, Embedded Linux Conference Europe 2016
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 1 / 31
Overview
1 The root cause
2 What does that mean?
3 What you can do (or shouldn’t do)
4 Changes to I2C subsystem workflow
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 2 / 31
Overview
1 The root cause
2 What does that mean?
3 What you can do (or shouldn’t do)
4 Changes to I2C subsystem workflow
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 3 / 31
Maintainer role: different from a developer
What is a maintainer? Trond Myklebust said it nicely1:
”Currently, the Linux maintainer appears to be responsible for filling all ofthe traditional roles of:
software architectsoftware developerpatch reviewerpatch committerand software maintainer
.”
I think at least ”educator” needs to be added, too.
1link hereWolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 4 / 31
Statistics: # of patches
0
2000
4000
6000
8000
10000
12000
14000
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5
2011 2012 2013 2014 2015 2016
NumCommits
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 5 / 31
Statistics: # of patches (linearized)
0
2000
4000
6000
8000
10000
12000
14000
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5
2011 2012 2013 2014 2015 2016
NumCommits
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 6 / 31
Additional info
Merges not countedBut they are work, too
Stats only based on accepted patchesThere are also superseded and rejected patches, teaching new authors…
Situation at v3.0 was already far from ideal
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 7 / 31
Statistics: # of tags
0
2000
4000
6000
8000
10000
12000
14000
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5
2011 2012 2013 2014 2015 2016
NumCommitsNumAcksNumRevsNumTests
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 8 / 31
Statistics: # of tags (linearized)
0
2000
4000
6000
8000
10000
12000
14000
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5
2011 2012 2013 2014 2015 2016
NumCommitsNumAcksNumRevsNumTests
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 9 / 31
Statistics: commits with tags (percentage)
0
20
40
60
80
100
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5
2011 2012 2013 2014 2015 2016
HasTagHasTag
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 10 / 31
Statistics: # of people
0
200
400
600
800
1000
1200
1400
1600
1800
2000
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5
2011 2012 2013 2014 2015 2016
NumAuthorsNumCommitters
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 11 / 31
Statistics: # of people (linearized)
0
200
400
600
800
1000
1200
1400
1600
1800
2000
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5
2011 2012 2013 2014 2015 2016
NumAuthorsNumCommitters
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 12 / 31
Statistics: more # of people (mostly linearized)
0
200
400
600
800
1000
1200
1400
1600
1800
2000
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5
2011 2012 2013 2014 2015 2016
NumAuthorsNumCommitters
RevNotCommitterRevNotCommitter
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 13 / 31
Unprocessed patches (up to now)
0
50
100
150
200
250
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5
2011 2012 2013 2014 2015 2016
linux-i2c (72 commits in 4.8)
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 14 / 31
Unprocessed patches (skipping last cycles)
0
10
20
30
40
50
60
70
80
90
100
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5
2011 2012 2013 2014 2015 2016
linux-i2c (72 commits in 4.8)
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 15 / 31
Unprocessed patches (normalized): a trend?
0
0.2
0.4
0.6
0.8
1
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5
2011 2012 2013 2014 2015 2016
linux-btrfslinux-ext4
linux-i2clinux-media
linux-mtdlinux-nvdimm
rtc-linux
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 16 / 31
I dare to disagree
LWN on May 11th, 2016Quote:”The overall picture ... is one of a development process that continues tofunction like a relatively well-tuned machine. The number of contributorscontinues to increase, the patch flow is steady, and there do not appear tobe many process-scalability issues in sight.”
I think there is a scalability problemI am neither a machine nor part of a machineactually I am full of human factors ;)
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 17 / 31
Overview
1 The root cause
2 What does that mean?
3 What you can do (or shouldn’t do)
4 Changes to I2C subsystem workflow
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 18 / 31
In what order patches are processed?
Factors affecting when a patch is processedYou help me, I help youtypical human factor, I’d assume
Kernel-wide or cross-subsystem effortif I2C is only one part of it
number of affected usersregression?
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 19 / 31
In what order patches are processed?
Factors affecting when a patch is processedcomplexitypolished or notchronological ordera lot less important than I’d like to
new driver?rc1 rule might apply
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 20 / 31
This needs to be done, too
Things mainly maintainers care aboutremoval of obsolete features from 2.4 timeslargely means messing with PowerMac drivers
refactoring the I2C core to ease maintenancesplit up the core into parts which can be maintained seperatelygive users better testing toolsupdate documentation & wiki page
Most of that is currently delayed for years!
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 21 / 31
Overview
1 The root cause
2 What does that mean?
3 What you can do (or shouldn’t do)
4 Changes to I2C subsystem workflow
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 22 / 31
What you can do: Users2
Give feedbackgive comments about patchesshow interest, tell about issues, …
give tagsTested-by! Very important one, no need to be a coder for that
2as in ”users of patches”Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 23 / 31
What you can do: Developers
Always give your best shotmissing experience is no problemsloppiness is a problembe honest, give reasons for suboptimal solutionsfor companies, look for in-house knowledge
have your tools readyidentify repititive tasks, automize themKeyboard shortcuts!
run (& understand) those code checkers! Always!checkpatch, sparse, smatch, cocciscript
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 24 / 31
What you can do: Developers
review your own patchesdon’t just send a pingIf you didn’t touch the patch for a while and have some distance, youare a potential reviewer as well→ big credit boost
take part in further reviewingreviewdiscussclean up, consolidateif you are interested, become a (sub-)maintainer
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 25 / 31
What you shouldn’t do
ping considered harmful”ping after 2 weeks” is outdated”ping after 2 month” would be closer to reality
largely not neededall people I know have patch tracking systems in place
I won’t reply anywayI could review patches in that time…
Human factor: they still add to frustrationalthough I do know the latency is not my fault
Private pings are especially badreviewing should be a community effort
If you still need to ping, try to think if you can help somehow
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 26 / 31
Overview
1 The root cause
2 What does that mean?
3 What you can do (or shouldn’t do)
4 Changes to I2C subsystem workflow
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 27 / 31
Maintainer role: ”old”
What is a maintainer? Trond Myklebust said it nicely3:
”Currently, the Linux maintainer appears to be responsible for filling all ofthe traditional roles of:
software architectsoftware developerpatch reviewerpatch committerand software maintainer
.”
”educator”3link hereWolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 28 / 31
Maintainer role: new
What is a maintainer4 in the future?
software architectone of the software architectssoftware developerone of the software developerspatch reviewerone of the patch reviewerspatch committersoftware maintainer(new focus!) advertiser for distributed community efforts
4well, at least the I2C maintainerWolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 29 / 31
Changes to I2C
Disadvantagesexpect bigger latencies
AdvantagesI keep sane…because I am neither a machine nor part of a machine
can spend more time fixing this issue on higer levels
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 30 / 31
Thank you for your attention!
Let’s work togetherQuestions?
Right here, right now…Later at the [email protected]
Breaking newsat the GPL BoF lunch todaymeeting at the lobby
Wolfram Sang (Consultant) Trying to explain maintainers 13.10.2016, ELCE2016 31 / 31