The First Pull Request

Kent C. Dodds

Utah

1 wife, 3 kids

PayPal, Inc.

@kentcdodds

@kentcdodds

Please Stand...

What this talk is

  • How to find a project you want to contribute to
  • What a contribution is
  • How to encourage contributors (especially first timers)
  • How to make the OSS community safer, better, fun-er :-)

What this talk is not

  • How to create a popular open source project
  • How to make maintainers merge your Pull Request
  • Why you should contribute to open source

Let's
Get
STARTED!

Open Source:

Denoting software for which the original source code is made freely available and may be redistributed and modified.

Open Source:

Powers our world, is a ton of fun to contribute to, and needs you to succeed

Kent

Linux

~/Desktop/linux (master)
🚀 $ cloc .
   52880 text files.
   52386 unique files.                                          
    9165 files ignored.

https://github.com/AlDanial/cloc v 1.66  T=272.34 s (160.6 files/s, 72107.3 lines/s)
---------------------------------------------------------------------------------------
Language                             files          blank        comment           code
---------------------------------------------------------------------------------------
C                                    22451        2166047        2003254       11062201
C/C++ Header                         17192         416883         715217        2696851
Assembly                              1413          47220         110118         241449
XML                                    177           3441            243          49968
make                                  2138           8041           7756          33837
Perl                                    47           4559           3602          23938
Bourne Shell                           173           1785           3239           9764
Python                                  41           1300           1443           7540
yacc                                     8            649            355           4357
HTML                                     3            398              2           2933
lex                                      8            292            289           1823
C++                                      1            231             58           1581
Bourne Again Shell                      47            294            245           1375
awk                                     10            132            129           1130
NAnt script                              2            121              0            449
Pascal                                   3             49              0            231
Lisp                                     1             63              0            218
Objective C++                            1             55              0            189
m4                                       1             15              1             95
XSLT                                     6             13             27             71
vim script                               1              3             12             27
Windows Module Definition                1              0              0              8
---------------------------------------------------------------------------------------
SUM:                                 43725        2651591        2845990       14140035
---------------------------------------------------------------------------------------

Files: 43,725

Blank + Comment + Code = 19,637,616

Code Contributors to Linux

Total Contributors: >3,500

We need you

This is called "burnout"

You might be thinking...

but I can't because...

How could I possibly contribute?

You can contribute a great deal!

Privilege

We all have different circumstances...

Contributor:

 A person or thing that contributes something, in particular.

Community:

A group of people ... having a particular characteristic in common

What do we have in common?

Write code

Read code

Read docs

Write docs

Teach

Learn

More...

So... Which project?

¯\_(ツ)_/¯

You contribute best to something you use regularly

How to learn the codebase?

You can do it!

Every little bit helps!

Project Maintainers

You
Need
Help

Causes of burnout include

  • Change of job
  • Change of project
  • Loss of interest
  • Loss of time

Side-effects may include

  • Losing context
  • Feeling overwhelmed
  • Frustration
  • Impatience
  • Unkindness

People
Need
You

You have power to...

help newcomers become contributors...

increase diversity of thought, opinion, and background in OSS

save yourself from burnout

Give people:

  • Respect
  • Encouragement
  • Recognition
  • Responsibility
  • Trust

And they'll give to you

Warning!

Your Contributor Pipeline 

People => Users

Solve a problem

Documentation

Demos & Examples

Speak about it!

Record Screencasts

Users => Contributors

OSS === People

Global Industry

Support & Filing Bugs

Contributors => Committers

Simplify Project Setup

$ git clone https://github.com/kentcdodds/webpack-validator
$ npm install
$ npm run validate
$ echo 'code away! 👍'

Beginner Friendly

First Timers Only

You're making an investment

that will definitely pay back

Volunteer Retention: Wikipedia

Gallus, Jana (2015). Fostering Voluntary Contributions to a Public Good: A Large-Scale Natural Field Experiment at Wikipedia. CREMA Working Paper No. 2015-05. Available at SSRN: http://ssrn.com/abstract=2579118 @janagallus

Code contributors

Naturally rewarded

But not non-code contributors

All Contributors

Recognize all contributors, not just the ones who push code

Give Write Access

Committers => Maintainers

Share the keys

Resources

Thank you!