1 of 19

What are we talking about?

Making your project more approachable to new contributors: Discuss strategies regarding how to help new contributors get started with your open source project.

2 of 19

Who are we? :)

Chandan Singh

GSoC Student, 2014

Drupal

Student at IIIT H

Angie "webchick" Byron

GSoC Student, 2005

Drupal Org Admin, 2006-2008

Drupal core committer, cat herder

3 of 19

What blocks contributors?

  1. Assume they're not skilled enough
  2. Assume you need to be a developer to contribute to open source
  3. Overwhelmed by size/scale of project
  4. Hard to know where to start
  5. Other problems?

4 of 19

What blocks contributors?

  • Don't know they *can* contribute — where to open bugs, how to do it, what tools?
  • "Conduct unbecoming of a Hacker" — Reviews highlighting trivial things detrimental new contributors
    1. Mitigate with automated checks
  • Tyranny of Structurelessness: People don't know who's who in the project
  • Flamewars
  • Criticism delivered overly harshly - "full frontal nicety"

5 of 19

What blocks contributors?

  1. Gaps between users and contributors
  2. Developers are on platform X, users are on platform Y. (Make windows builds accessible!)
  3. Avoid "Elite Cabals" — have an onramp for people to join, and/or highlight positions outside of those with tightly controlled access

6 of 19

What strategies help?

  • Post clear signs on how to start
  • Get people together

7 of 19

Post clear signs on where to start

8 of 19

"Novice" tag

  • Seek out tasks such as documentation bugs, coding standards violations, etc.
  • Instead of just fixing, tag it as "Novice" and put a list of them somewhere easy to find
  • It might take 5 days (or weeks) for a new contributor to solve, but they'll learn a ton in the process

9 of 19

Easy page to get started

  • Make a "one-stop shop" for contributors to understand how to engage with your project
  • Call out *all* types of contribution
  • Include detailed steps on how to find/complete tasks, as well as reference material and "what next"

10 of 19

Other suggestions?

  • Make a list of "easy" bugs with specific pointers to how to do the work ("code pointers", and identify skills needed "C++", "localization").
  • If you're interested in getting involved, submit this form. Hooked up with a "guide" (generally former GSoC students) who corresponds with them on how to get involved.

11 of 19

Other suggestions?

  • Generally, make the "ramp up" time as quick as possible:
    • Tools to help compiled projects compile faster, auto-set environment variables, etc.
    • Ready-made VM with all tools already there
    • "One-click" binary with every required library/dependency already there for quick/easy testing.
  • Gerritt / CI - automated "technical verified +1" so contributors don't have to know how to set up the test suite.

12 of 19

Other suggestions?

Clear rules on granting/revoking of special privileges (e.g. two patches committed, grant commit access; two builds broken )

Encourage people to review other people's code

  • Pair programming with GSoC students to help get them up initial learning curve
    • "Ping-pong" between writing tests and code with the other participant

13 of 19

Get people together

14 of 19

Drupal Ladder

  • Think about the steps needed to become proficient at something.
  • Break them down into lessons, with simple tasks to complete.
  • Each lesson provides skills to get to the next lesson.
  • "Crowd source" going through the ladder at local user groups.

15 of 19

Core Mentoring Hours

  • Twice a week on IRC, mentors available to hand-hold new contributors
  • Pre-curate issue list with those great for new contributors (both tech and non-tech)
  • Help assign issues, answer questions, get dev environments set up

16 of 19

DrupalCon Sprints

  • Core mentoring hours, but in person. :)
  • Start with optional 2 hour intro training on Git, LAMP stack, how issue queue works
  • At the end, core maintainer reviews/commits newbie patches LIVE

17 of 19

Drupal Dojo

  • Like a Drupal "study group"
  • Each session, someone talks about something they know about, or something they're struggling with
  • "Hangout" type of experience; No expectation of "formal" presentation.

18 of 19

Other suggestions?

  • Video chat — helps "introduce" new contributors to the main developers in the community
    • Elevate the experts so people *know* who to talk to.
    • "Make your developers famous" :)
  • Put pointers to new contributors in the email signature
  • Have "paid insiders" do the "boring" work like documentation, writing test cases, fixing coding standards

19 of 19

Other suggestions?

  • If you can write code, considering mentoring others and encouraging them instead
  • Post the git commit that was actually fixed so people can see that their change got in, post a "diff" so they understand how their code could be improved.
  • "Sandwich" your feedback with nice things. :) beginning/end

http://mumak.net/stuff/your-code-sucks.html

When criticizing, make it constructive.