taking the fear out of contributing

Post on 10-Jun-2015

239 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Open source software depends on collaborative effort but many contributions are lost because of the often adversarial process. How can reviewers be turned into mentors?

TRANSCRIPT

Taking the Fear Out of Taking the Fear Out of ContributingContributing

Stephen Hemmingershemminger@vyatta.com

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

top related