Newbie-friendly issues: nice bugs and feature requests
Barriers to entry: recurrent problems for new developers
Attracting contributors: what’s worked?
Costs and benefits: is it worth it?
Rails + React
started late 2014, designed and built by WINTR
since 2016, mostly maintained by me
62 (as of January 2018)
~ 2/3rds code newbies
~ 8 high school students
lots of boot camp and MOOC students
2. Newbie-friendly issues
Wikipedia redlinks mean missing articles
Identify specific, easily-understood issues that only require understanding one part of the system.
Knowing where and how to start is the biggest challenge.
Document the knowledge you have about how to solve an issue.
Which files need to be changed? Can you break it into several steps? Any relevant blog posts or tutorials?
Tag issues with the skills and/or technologies involved.
Refactoring and code quality tasks are great!
Refactor this large controller into several smaller ones
Get rid of all uses of this deprecated library, so it can be removed as a dependency
Enable this rubocop / eslint rule and fix all the violations
3. Barriers to entry
Setting up a dev environment is hard.
rake aborted!<br />
StandardError: An error has occurred, all later migrations canceled:</p>
<p>SSL_connect returned=1 errno=0 state=error: certificate verify failed<br />
D:/dev/dashboard/WikiEduDashboard/lib/wiki_api.rb:94:in `mediawiki'<br />
D:/dev/dashboard/WikiEduDashboard/lib/wiki_api.rb:20:in `query'<br />
D:/dev/dashboard/WikiEduDashboard/app/models/wiki.rb:102:in `ensure_wiki_exists'<br />
D:/dev/dashboard/WikiEduDashboard/db/migrate/20160210013622_create_wikis.rb:9:in `change'<br />
Node.js! Bower! Gulp! Yarn!
Creating local data can be complex.
Git has a steep learning curve.
4. Attracting contributors
How do you find contributors?
Get the word out in a lot of different places.
Take a long-term approach by helping new contributors get started whenever they show up.
5. Costs and benefits
high time investment
not a short-term solution to getting more done
increased time between knowing about a problem and fixing it
I learn a lot when I have to explain things!I’ve stopped thinking about the implementation in the friendlier parts of the codebase.What makes the project easier for newcomers also makes it easier for experienced developers to get up to speed quickly.I’ve started to think about code changes — bug fixes, new features, code quality improvements — in terms of how easy they are to describe.I learn a lot from people who know things I don’t.Some people stick around and keep contributing.