Optimizing Open Source Projects for Contribution

Optimizing Open Source Projects for Contribution

Exponential growth in the style of paying-it-forward

I've committed and pushed to Github.

Now what?

User stories

  • As a maintainer...
  • As a contributor...

As a maintainer...?

  • Who's the audience?
  • What could someone else do?
  • What would you like them to do?
  • How much help will you provide?

As a contributor...?

  • What is expected of me?
  • What can I work on?
  • How do I get help?
  • How do I share my work?

Our goals

Help the target audience:

  • find the project
  • get involved quickly
  • have a positive experience

Five point plan

  • Prioritize useful information
  • Reduce friction
  • Make expectations clear
  • Respond appropriately
  • Follow through

Document all the things!

The basics

  • How do I use it?
  • How do I change it?
  • Where can I get support?
  • README

README

More advanced

  • Roadmap
    • What currently exists
    • What doesn't exist
    • What will never exist
  • CONTRIBUTING.md

Expert mode

Release notes

Templates

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris dapibus, nibh quis ultricies luctus, libero tortor eleifend nisl, et euismod neque quam id. Morbi dictum semper odio nulla, ut ornare metus aliquam et. Quisque scelerisque arcu sed congue tincidunt. Aenean ultrices laoreet neque eget vestibulum. Maecenas semper lacinia sem mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris dapibus, nibh quis ultricies luctus

Reduce information

How to politely say f*** off

Choose something to work on from our issue tracker.

bugzilla.mozilla.org

bugzilla.mozilla.org

Usable issue tracking

Step 1

Tag related pieces of work.

  • area of code
  • symptom
  • platform
  • required skill

Usable issue tracking

Step 2

Tag issues that are appropriate for newcomers and non-core contributors.

Usable issue tracking

Step 3

Ensure issues contain enough information to start contributing immediately.

  • clear steps to reproduce
  • filenames, class names, function names
  • links to documentation
  • testing expectations

Usable issue tracking

Step 3

Usable issue tracking

Step 4

Make it easy to tell if an issue is claimed.

Usable issue tracking

Step 5

Triage old issues. Is it still:

  • Valid? Reproducible?
  • In progress?
  • Good for a newcomer?

Remember: first impressions count

Five point plan

  • Prioritize useful information
  • Reduce friction
  • Make expectations clear
  • Respond appropriately
  • Follow through

What is friction?

  • following instructions that don't work
  • making a choice without understanding the options
  • unbounded waiting for someone else
  • requiring new skills
  • differences from past experience
  • performing useless work

Avoiding friction

  • automate as much as possible
  • standardize technology
Consider:
sudo apt-get install curl freeglut3-dev libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev gperf g++ cmake python-virtualenv

versus
./mach bootstrap

Avoiding friction

servo/highfive

Five point plan

  • Prioritize useful information
  • Reduce friction
  • Make expectations clear
  • Respond appropriately
  • Follow through

Make expectations clear

  • What are contributors supposed to know?
  • How long should it take to get feedback?
  • How difficult is a task?
  • Is there a deadline?
  • What behaviour is apppropriate?

Make expectations clear

Five point plan

  • Prioritize useful information
  • Reduce friction
  • Make expectations clear
  • Respond appropriately
  • Follow through

Responding appropriately

  • Minimize time to feedback
  • Shepherd changes that don't meet the bar
  • Explain why changes are not desirable
  • Say thank you

Language hacks

  • Just/easy/simple
  • Please ask questions
  • Does that make sense?
  • You/your -> we/our

Five point plan

  • Prioritize useful information
  • Reduce friction
  • Make expectations clear
  • Respond appropriately
  • Follow through

Following through

  • Recognition of contribution
  • Suggest next task
  • Every contributor is a potential maintainer

Our goals

Help the target audience:

  • find the project
  • get involved quickly
  • have a positive experience

Attracting new contributors

  • Positive feedback cycle
  • Tools for publicizing work
  • Communities of potential contributors
  • Making the right pitch

issuehub.io

Twitter

Twitter

up-for-grabs.net

Bugs Ahoy!

jdm/bugsahoy :: http://joshmatthews.net/bugsahoy/

whatcanidoformozilla.org

Attracting new contributors

  • Feedback cycle
  • Tools for publicizing work
  • Communities of potential contributors
  • Making the right pitch

Further reading

Thanks

Red panda (Firefox)
  • Josh Matthews
  • Engagement Whip at Mozilla
  • @lastontheboat

  • Slides:
    http://joshmatthews.net/oscon16/
Photo by Yortw