Sure, virtually all software includes open source code, but that doesn’t mean you’re an expert in any particular open source project. More pertinently, it also doesn’t mean you necessarily know how to behave when you decide to show up and knock on the GitHub repository for a given project. Or, for that matter, what “someone new should know in order to start acting as a good open source community citizen,” as Tom “Spot” Callaway recently posted on Twitter.
The responses to Spot’s question are varied and useful for anyone who hopes to participate in open source software communities.
“I’m new here”
The first rule of open source community citizenship is learn what citizenship in a particular project means. For example, Josh Berkus suggested, “Every project is its own society; you need to figure out the rules of that society before you can become very involved. Approach a new open source project like you would a move to a foreign country.”
Related to this, “Be willing to observe and learn before leaping,” said Brian Proffitt. This can be critical, because it can be a natural impulse to try to solve others’ perceived problems, rather than understanding and addressing their actual needs. When engaging with an open source community, therefore, it’s best to first be a quiet observer. Or, as Vicky “VM” Brasseur noted, “Lurk first to learn in what ways [to contribute].”
As newcomers strive to learn the best ways to contribute, there’s a key resource they can tap into. As Stormy Peters said, “There are real people out there that you can ask questions of. Ask questions in GitHub, on mailing lists, in Slack.” Rich Bowen’s counsel was similar: “There are humans behind those emails, PRs, and tickets, and they have squishy, inscrutable, unknowable reasons for the things they do (just like the humans you know personally).”
Because those “real people” are, well, real people, it pays to be respectful to them. This doesn’t mean we should be “shy” to the point of not engaging, as Peder Ulander warned. Rather, it’s a matter of “be[ing] kind” and “listen[ing] and learn[ing] from others.” (Stephen Walli echoed this sentiment: “Be courteous.”)
One of the things we tend to learn, for example, is that some of the most important work doesn’t involve grand gestures. No, as Duane O’Brien stressed, “A big part being a good citizen doesn’t involve building new parks. It involves raking leaves.”
A great example of this is Madelyn Olson, a new maintainer with the popular Redis database. As she said in an interview, when she started contributing to Redis, “I was just trying to be helpful and that ended up paying off.” Helpful in what way?
Almost all of my contributions are minor. Normally I’m the one making small fixes all over the place, and then when someone really wants to commit something big, I help them get the code in better shape and then they submit it and I’m the ambassador to say, ‘Hey, Salvatore [Redis founder], we built this great thing.’ But I normally try to let the other person get more of the credit.
Which perhaps is as good a place as any to remind the old-timers within an open source project: Don’t be a jerk. Or, as The Ubuntourist put it, “Don’t scare off the newbies. They are the source of future innovations. No matter how many times you’ve explained something, remember the newbies won’t have heard it yet & will ask the same questions. TRY to be patient, even if they haven’t RTFM like you think they should have.”
Because, well, being a good community citizen isn’t just for newcomers. A community isn’t much of a community if it’s only filled with old-timers or newcomers. It’s the mix of both that keeps a community growing and resilient.