Taking the Fear Out of Taking the Fear Out of ContributingContributing
Stephen [email protected]
Code QualityCode Quality
“Publicly making fun of people is half the fun of open source programming.
In fact the main reason to eschew programming in closed environments is that you can't embarrass people in public.”
– Linus Torvalds
What manager's wantWhat manager's want
Why do people contribute?Why do people contribute?
● Learn● Altruism● Fun● Fame & Fortune● Solve problems
What Maintainers say they doWhat Maintainers say they do
Developer
Maintainer
ProjectMailingList
Reviewers
next
Maintainer
Linux
What developers seeWhat developers see
MELinuxKernelMailingList
Linus
“It's entirely possible that the current user could be replaced by RCU and/or seqlocks, and we could get rid of brlocks entirely.”– Linus Torvalds (Mar 9 2003)
2 days later...2 weeks later...2 years later...
What I learnedWhat I learned
● Encouragement and feedback– Pat Mochel– Linus– David Miller– Paul McKenney
● Learned Internals● Encouragement from employer
Advice to developersAdvice to developers
Have:F. ollow rulesU. nderstand feedbackN. egotiate
Main causes of failureMain causes of failure
Things that make maintainers: M. assive A. rrogance D. ivisive
MassiveMassive
128256
5121024
20484096
819216384
3276865536
131072262144
0%
25%
50%
75%
100%
Patch Acceptance
from netdev patchwork
Patch size
Acc
epta
nce
ArroganceArrogance
ar·ro·gant (r-gnt)adj.1. Having or displaying a sense of overbearing self-worth or self-importance.
2. Marked by or arising from a feeling or assumption of one's superiority toward others: an arrogant contempt for the weak.
Divisive ChangesDivisive Changes
● Proprietary● Incompatible● Reinvention● Ugly
GlossophobiaGlossophobia
EvaluationEvaluation
● Be prepared● Active Listening● Sandwich technique● Focus on 2 or 3 items
Troll free zoneTroll free zone
● Be genuine● Evaluate presentation not person● Personalize Language● Directed feedback
Lessons LearnedLessons Learned
● Risk = Reward● Practice makes perfect● Words matter● Evaluation causes growth
Alternative Evaluation StylesAlternative Evaluation Styles
Toastmasters™
● Tell and Sell● Q&A● Group:
– Voice– Gestures– ...
Linux™ Kernel● Fire and Forget● Email Threads● Delegate:
– Style– Locking– API– ...
What is mentoring?
Bozeman and Feeney (2007) define mentoring as “a process for the informal transmission of knowledge, social capital, and the psychosocial support perceived by the recipient as relevant to work, career, or professional development; mentoring entails informal communication, usually face-to-face and during a sustained period of time, between a person who is perceived to have greater relevant knowledge, wisdom, or experience (the mentor) and a person who is perceived to have less (the protègè).”
Virtual Tunnel InterfaceVirtual Tunnel Interface
Finding a MentorFinding a Mentor
● Local● Company● Kernel mentors mailing list
http://kernelnewbies.org/KernelMentors
Role of MentorRole of Mentor
● Process mentoring● Shoulder to cry on● Local advocate● Cheerleader
For maintainersFor maintainers
● Emphasize good review● Assign mentors for new people?● Track contribution status – patchwork● Delegate review roles● Encourage friendly dialogue● Evaluate review process
IdeasIdeas
● Teach reviewing– Documentation/ReviewingPatches?– get_reviewers.pl?
● Document kernel semantics– More lessons like RCU?– Interactive tutorials
Thank you