2. Why?
• “Scratch your own itch”
• Learn something new
• Solve a different class of problems
• Build your resume
• Make the world a better place
3. What?
• What you contribute to depends on your motivation and skills
• Itch scratching: fix a bug that’s always annoyed you
• If you’re not scratching an itch, how do you find an
appropriate project?
4. Project selection criteria
• Needs a skill you have (e.g. programming in Python, QA,
localization, documentation writing, test writing, answering
questions on mailing lists)
• Friendly to new contributors
• Issue tracker, ideally with good first bugs or mentored bugs
listed
• Clear process for accepting patches from new contributors
5. Getting to know a project
• Each open source project - even sub-projects within a larger
project - has a different character and way of doing things
• Observation is helpful - mailing lists, newsgroups, IRC, bug
tracker, user groups or meetups, conferences
• Understand social norms
• Read the code
• Understand the review process
• Make connections with mentors and others
6. Impostor syndrome
• Everybody else knows what they are doing.
• I’m not as good as they think.
• I’m a fake, and sooner or later I will be found out.
• I should be doing more.
• I don’t belong here.
• Correlation between impostor syndrome and intelligence
• Many developers feel this way. Remind yourself.
7. Now what?
• Picked a project, what’s next?
• Get a checkout, build, install
• Find a bug
• Code reading
• Make and test a patch or pull request
• (Sign a contributor agreement)
• Put it up for review
• Some combination of waiting and socializing
• Patch lands! You are now a contributor
8. Getting set up
• This can be one of the hardest parts, and lots of people get
put off by this:
• Installation
• Test data
• Building
• Reproducing the bug
• Solutions: this is on the project. Don’t be afraid to ask for
help. Persevere.
9. Code reading
• Hard step on the path to mastery
• “Knowing where to tap”
• Look at the layout of the code (docs can help here, but
sometimes not)
• Look for main event loop or controller
• Isolate your bug
10. Coding standards
• Find out if there is a formal one
• Follow it
• Sometimes you’ll notice informal ones as well
11. Gotchas
• Avoid end-of-rainbow problems, unwanted features,
intractable bugs
• Avoid trolls - every project, like every workplace, has at
least one
• Don’t be a troll
12. Dos
• Blog about your work
• Become involved in the community
• Help another noob get onboard - teaching is the best way to
learn
• Make friends, learn stuff, make the world a better place
• WIN
13. We <3 contributors
• Projects would not exist without their contributors - they are
a huge democratizing force
• Thank you!