I've been giving a lot of thought to online communities as of late. I've been a bit discouraged at some behavior I've seen in the Scala ecosystem recently. Enough so that I felt the need to subtweet about it.
I’m always really disappointed when really prominent folks in the Scala community are mean to people.— Matt Farmer (@farmdawgnation) June 29, 2017
I truly believe that open source software is an essential, important piece of maintaining innovation velocity in the technology industry. I've advocated heavily for this idea everywhere I've worked, and even written about it for prior employers on occasion. I volunteer my time to help maintain open source software that I've benefited from in the past. And yet, as much as I love and support open source development, I have to admit that the biggest risk to the continued health of the open source ecosystem is the behavior of the people involved in open source development.
Nothing that I witnessed on these most recent occasions was particularly egregious, but after reflecting on my frustrations for a few weeks I wanted to share some thoughts for constructive community interactions within technical communities. The individuals who triggered these thoughts will probably never read them, and probably wouldn't care if they did. But perhaps someone else will find them useful. If nothing else, writing them down should be cathartic.
Without further ado:
- Assume you're not the smartest person in the room. Odds are, you probably aren't.
- Assume the other person means well and has put thought into their point of view. Being belittling, especially when people are volunteering their free time to participate, ultimately discourages people from participating in your community or using your software. Over time this kills open source projects.
- Disagreement isn't the end of the world. Agreeing to disagree is totally fine. Your open source contributions aren't life or death. Don't be overly dramatic when something happens that you disagree with, because it'll probably be fine. This, too, kills projects over time.
- Be patient with new community members. New community members that don't understand what is going on are a good sign. It means your project is gaining visibility and getting new blood.
- Decide what's accepted behavior and what's not, and enforce that norm. GitHub has rightly started allowing maintainers to add codes of conduct to their projects. Create one. And enforce it. Lift has been doing this for a while (though we haven't yet taken advantage of the new GitHub feature). I plan to do the same for my other major projects.
TL;DR: Just be nice, and encourage other participants in your community to do the same. At the end of the day you can have the most well thought out, perfect software out there. Yet it won't matter if nobody uses it because they don't want to deal with you.
End of song.