One of the reasons I love open source is the sheer amount of opportunities to learn that it presents. Budding programmers can work on Real Things and make a real impact, becoming better programmers in the process.
Rust already participates in this. We mentor newcomers with bugs and often they go on to become valuable contributors.
I'd like to expand and improve our efforts. I want to create a more accessible mentorship program that helps people find a place to contribute in the entire Rust ecosystem -- not just rustc.
Here's how you can help:
###Crate owners
Do you maintain a crate? Try opening mentored bugs on it!
Servo, Rust, hyper, rustfmt, and clippy already do this. The general modus operandi is to use a label (e.g. "Easy", or "Mentored") that indicates that an issue is a good first bug, and point people to these bugs. Having a CONTRIBUTING.md with other "getting started" tips is useful. If someone picks up a bug, help them work on it! Once they finish, see if you can come up with something more interesting for them to work on.
Easy bugs aren't hard to come up with, either. Often it can just be a tangential fix that you could do in your current PR but decide to file as an easy issue instead. Or simple refactoring tasks.
Easy bugs need not even be code work. Documentation, diagnostics, and other similar things can make for worthy and impactful things to work on!
There's probably going to be a nice "contributing" section on the new website, I'd like to list all such crates there. Leave a comment if you're interested!
###Community members
I'd also like to gather all the folks interested in helping newcomers out in general.
The idea is to help newcomers choose a project and get started there. There's a lot of shyness amongst newcomers, and often they may not ask questions (there's always that fear of getting yelled at for asking questions). If there are some people who explicitly are there to help, this might assuage their fears.
I'm not exactly sure how this would play out. Have a list of email addresses on the site (probably not)? Allot mentors to people who ask? Forum post to ask questions on? Ideas welcome.
###Rustc developers
Finally, rustc itself. I think we do an imperfect job of newcomer onboarding for rustc. If we want the rest of the ecosystem to mentor newcomers, we should set a better example!
Couple of issues I've noticed. Some of them I can fix myself, others need everyone to pitch in:
- Easy issues aren't always easy: For example, we have a lot of tracking issues marked as "easy". They're not, really. Deciding if something should be stabilized or deprecated requires a lot of work and existing knowledge of the ecosystem. Once a decision has been made, the steps following it are certainly "easy", but such bugs shouldn't be marked as easy from the start. Similarly, there are other issues which are not exactly good first bugs.
- People should be able to get started on bugs without needing to ask for help: Asking for help is great, but if a bug is going to be marked as easy there should be some pointers to help them get started. Something like "The relevant code is in foo.rs, you'll need to add functionality to
bar()
to frob the baz" or "Check out [this code] which does something similar". We do this all the time in Servo, and often in clippy -- AFAICT it's quite helpful to the folks who pick up the bugs. - Comments and documentation: While some modules like borrowck have epic comment explanations, other sections of code are sparsely commented/documented. If you are working on something, try adding doc comments to the nearby code too. Similarly, if you spend time trying to understand how something works, leave a comment so that the next person doesn't have to!
None of these issues are deal breakers -- I've seen a lot of newcomers have a great experience with their first PR on rustc, and I love it when this happens. But we can do better.
Want to help? Thoughts? Leave a comment!