What makes a good community?

*Pokes head in, sees comments are generally positive*

There’s been a lot of discussion in my comment sections (and on LWN) about what makes a good community, along with suggestions of welcoming open source communities to check out. Your hearts are in the right place, but I’ve never found an open source community that doesn’t need improvement. I’m quite happy to give the Xorg community a chance, mostly because I believe they’re starting from the right place for cultural change.

The thing is, reaching the goal of a diverse community is a step-by-step process. There are no shortcuts. Each step has to be complete before the next level of cultural change is effective. It’s also worth noting that each step along the way benefits all community members, not just diverse contributors.

Level 0: basic human decency

In order to attract diverse candidates, you need to be known as a welcoming community, with a clear set of agreed-upon social norms. It’s not good enough to have a code of conduct. Your leaders need to be actively behind it, and it needs to be enforced.

A level 0 welcoming community exhibits the following characteristics:

Level 1: on-boarding

The next phase in improving diversity is figuring out how to on-board newcomers. If diverse candidates are only 1-10% of newcomers, but you have a 90% fail rate for people who try to make their first contribution, well, you can’t expect many diverse newcomers to stick around, can you? It’s also essential to explain your unwritten tribal knowledge, so that diverse candidates (who are more likely to be afraid of upsetting the status quo) know what they’re getting into.

Signs of a level 1 welcoming community:

  • Documentation on where to interact with the community (irc, mailing list, bug tracker, etc)
  • In-person conferences to encourage networking with new members
  • Video or in-person chats to put a face to a name and encourage empathy and camaraderie
  • Documented first steps for compiling, running, testing, and polishing contributions
  • Easy, no-setup web harness for testing new contributions
  • Step-by-step tutorials, which are kept up-to-date
  • Coding style (what’s required and what’s optional, and who to listen to when developers disagree)
  • Release schedule and feature cut-off dates
  • How to give back non-code contributions (bug reports, docs, tutorials, testing, event planning, graphical design)

Level 2: meaningful contributions

The next step is figuring out what to do with these eager new diverse candidates. If they’ve made it this far through the gauntlet of toxic tech culture, they’re likely to be persistent, smart, and seeking a challenge. If you don’t have meaningful bigger projects for them to contribute to, they’ll move onto the next shiny thing.

Signs of a level 2 welcoming community:

  • Newbie todo lists
  • Larger, self-contained projects
  • Welcoming, available mentors
  • Programs to pay newbies (internships, summer of code, etc)
  • Contributors are thanked with heartfelt sincerity and an explicit acknowledgment of what was good and what could be improved
  • Community creates a casual feedback channel for generating ideas with newcomers (irc, mailing list, slack, whatever works)
  • Code of conduct encourages developers to assume good intent

Level 3: succession planning

The next step for a community is to figure out how to retain those diverse candidates. How do you promote these new, diverse voices in order to ensure they impact your community at a leadership level? If your leadership is stale, comprised of the same “usual faces”, people will leave when they start wanting to have more of a say in decisions. If your community sees bright diverse people quietly leave, you may need to focus on retention.

Signs of a level 3 welcoming community:

  • Reviewers are rewarded and questions from newcomers on unclear contributions are encouraged
  • Leaders and/or maintainers are rotated on a set time schedule
  • Vacations and leaves of absence are encouraged, so backup maintainers have a chance to learn new skills
  • Community members write tutorials on the art of patch review, release management, and the social side of software development
  • Mentorship for new presenters at conferences
  • Code of conduct encourages avoiding burnout, and encourages respect when people leave

Level 4: empathy and awareness

Once your focus on retention and avoiding developer burnout is in place, it’s time to tackle the task most geeks avoid: general social issues. Your leaders will have different opinions, as all healthy communities should! However, you need to take steps to ensure the loudest voice doesn’t always win by tiring people out, and that less prominent and minority voices are heard.

Signs of a level 4 welcoming community:

  • Equally values developers, bug reporters, and non-code contributors
  • Focuses on non-technical issues, including in-person discussions of cultural or political issues with a clear follow-up from leaders
  • Constantly improves documentation
  • Leadership shows the ability to recognize their mistakes and change when called out
  • Community manager actively enforces the code of conduct when appropriate
  • Code of conduct emphasizes listening to different perspectives

Level 5: diversity

Once you’ve finally got all that cultural change in place, you can work on actively seeking out more diverse voices and have a hope of retaining them.

Signs of a level 5 welcoming community:

  • Leadership gatherings include at least 30% new voices, and familiar voices are rotated in and out
  • People actively reach outside their network and the “usual faces” when searching for new leaders
  • Community participates in diversity programs
  • Diversity is not just a PR campaign – developers truly seek out different perspectives and try to understand their own privilege
  • Gender presentation is treated as a non-issue at conferences
  • Conferences include child care, clearly labeled veggie and non-veggie foods, and a clear event policy
  • Alcoholic drinks policy encourages participants to have fun, rather than get smashed
  • Code of conduct explicitly protects diverse developers, acknowledging the spectrum of privilege
  • Committee handling enforcement of the code of conduct includes diverse leaders from the community

The thing that frustrates me the most is when communities skip steps. “Hey, we have a code of conduct and child care, but known harassers are allowed at our conferences!” “We want to participate in a diversity program, but we don’t have any mentors and we have no idea what the contributor would work on long term!” So, get your basic cultural changes done first, please.

*pops back off the internet*

Edit: Please stop suggesting BSDs or Canonical/Ubuntu as “better” communities.

52 thoughts on “What makes a good community?

  1. My personal experience has been that the majority of OSS projects funded by large companies are welcoming, and the majority of hobbyist ones aren’t. No idea why – I almost want to tack it down to work culture vs. wanting to get home and just vent, but that seems like a logical fallacy.

    The aggressiveness is what most people cite as being the issue, but I think it’s aggressiveness plus racism/sexism that causes the issue. There are some projects I’ve worked on where the community using it is toxic enough that unless you have one really-aggressive type on the developer team, everything will just fall to pieces from external pressure.

    Also, shameless plug: For anyone who wants to work on an operating system, bemoaning the state of Linux culture, or the daunting learning curve of trying to get into a monster of a project like the *BSDs, come look at Haiku (https://haiku-os.org/). I can personally vouch that levels 0-3 are 100% satisfied, and 70% of 4-5 are as well (most of the last 30% doesn’t apply to us as we rarely hold in-person gatherings due to time/money constraints).

    1. I’d say that large companies have pre-filtered their employees by hiring them. As they have a full-time job working on that community, they will be the people mostly running the communities. And thus, you have at least fairly decent people in charge.

      Plus, companies have a lot more raw economical power (i.e. money) to put into establishing a diverse and welcoming culture. I would wager the issue boils down to economy to some degree. But that may well be an oversimplification.

    2. In my experience culture tends to come from the top down. And employee leadership can’t afford to be non-diplomatic (if even from a PR perspective).

      Many of the positive attributes that contribute to a success business environment can then infect these OSS cultures.
      e.g. Call your boss or coworkers names, get fired/punished, ergo you treat them respectfully.

  2. +100 with that!

    We first need to see that first we are human being, and then some are developers, some just users, students… but everybody needs education to treat others, and be treated with education and respect…


  3. Join a better project. How about NetBSD ? 🙂

    Nice, technical people and solid clean BSD codebase, with very clean and good code.

    BSD is more mature. And we won’t ask you to grow a beard to join us 😀

    1. Yes, I suggest mailing deraadt (at) openbsd (dot) org and ask him whether you can join the project. He likes people.

      1. Note that NetBSD was the BSD that kicked de Raadt out for failing level 0, never mind that he was one of the four founders of the project and a gifted developer.

        NetBSD pretty strongly believes that you shouldn’t have to hand in your self respect or dignity to participate, let alone face threats.

        Note though that NetBSD is a mostly hobbyist project; if you want or need to earn your living with your Open Source engagement, it is probably the wrong project to choose. This also, sadly, limits how far we can get on the scale above.

  4. Hello !

    Thanks for sharing this 🙂 The OS community I always look to as an example of a welcoming and friendly one is Rust. Rust the compilar/cargo/infrastructure and also most of the bigger projects written in Rust have a very good vibe to them and are very explicit about the rules of engagement.

  5. Spot on Sarah and in my opinion Level 0 has been lost in many facets of society these days. One unfortunate aspect of the bitwise connected society seems to be the tendency to carry the concept of out-of-sight-out-of-mind to an entirely new level, where everyone is in fact out-of-sight and that seems to cause many to act out-of-their-mind. So much is said and written OOSOOM that would never be the case if the interaction had taken place in person. If I were young and had it to do all over again, I believe I would study sociology and the effects the Internet appears to have in degrading what used to be constructive interaction, there’s a crap load of material, and not all of it stemming from Linus. 😛

  6. Your post makes me smile.

    I run clan on Clash of Clans and at some point I decided I need to write a web site to describe the “rules” of our community. For the most part the rules boil down to “Don’t be a Jerk” however it quickly became apparent that it was necessary to describe just was a Jerk was in excruciating detail.

    Most people don’t mind reasonable rules, fairly enforced… enforcement is critical and is not so much to punish the rule breaker – but for the rest of the community witness that it will be done.

    Good luck to you Sarah.

  7. I never thought I’d be making a constructive comment on a site whose owner’s personal politics are pretty much the exact opposite of mine, but, adjusting for certain “differences” to say this least, this is pretty much similar to how I run the comments section on my blogs and the 8chan board for another site I write for. I guess in the end, community-building is the same regardless of personal political ideology. The arguments on the board can get hot and heavy pretty quickly (religion is the main causus belli it seems) but lots of emphasis on community-building and bonding has really helped us create stability in a field that’s known for incessant bickering and in-fighting. The introduction of a forums component and encouraging of IRL meetups has done a lot for building brotherhood and friendship and reducing toxic infighting.

    What I’ve noticed that your guide is missing, however, is something me and my companions have been putting a pretty heavy emphasis on, and something I think you could stand to benefit from: basic vetting and background checking. I’ve noticed in the tech world, you tend to have this problem a lot- it wasn’t until last fall that weev went from being a “provocative” figure who still had a lot of popular support in the community to Literal Cyber-Hitler even though though he never made any effort to hide his personal politics even before he got arrested. The fact that Shanley Kane rose to become one of the largest “women in tech” voices without her past affiliations with weev or her history of abusing her coworkers is equally alarming. I know it sounds Trump-esque, but there needs to be a more stringent sort of background check on new users specifically for the safety of the community. The complete nuclear meltdown of Mike Anissimov and the recent fracas with Joshua Goldberg was a wake-up call for a lot of us on the so-called “dark side” that more effort needs to be made with regards to security and safety for fellow travelers.

    Even if we’re on the opposite side of the fence, I think safer, more pleasant communities is something everyone wants. I do hope you’ll take my unqualified reservations in good faith, and I wish you best of luck in your future endeavors!

  8. Thank you for this and the previous post about ceasing to be a Linux kernel developer. It seems to me that building and maintaining a solid community is probably one of the hardest things a person can do. Your list here is very good. I think folks could also learn more about maintaining community by looking at the lessons taught by the Christian and Buddhist monastic groups.

  9. As a member of the predominant, privileged majority in the libre software world (white, well-educated, native English-speaking, cisgender heterosexual male), it’s all too easy to ignore everything but the technical aspects of a software project. Thankfully, the Drupal community, where I am most active, has made a concerted effort to be inclusive for many years. Of course, there’s always room for improvement, and this post sets out clear, thoughtful guideposts.

    As a leader in smaller software projects, I’ve often wanted to encourage greater diversity. However, it has been difficult to understand how to proceed. Thank you very much for your thorough examination of the subject. I intend to incorporate these into all the communities where I have any influence.

  10. I think something that isn’t explicit in your list (or maybe I just missed it?) is that the community needs to have safe ways discuss meta issues within the community.

  11. This article: Mostly yes, but:

    Equally values developers, bug reporters, and non-code contributors

    This is wrong.
    + Documenters are heroes (especially those who manage to still write helpful documentation when they themselves know the system well. This is seriously HARD.)
    + People who are able to cheerfully answer the n thousandth question how to do X are angels.

    You need to value them more. Even excellent developers are plentiful and easy to get in comparison.

    Another thing that strikes me is that the text expects that everybody will be US American and have exactly the same hang-ups.
    Seriously, there are other cultures out there. And it has an impact. F.e. a typical German will appear rude to the typical Briton without trying or intending to.

    If your diversity does not stop at the borders of the US but includes people from all over the world, expect to have to apply the assumption of good intent in pretty large doses occasionally (and to have to explain every once in a while the .. unfortunate .. implications of what they just wrote).

    1. “Another thing that strikes me is that the text expects that everybody will be US American and have exactly the same hang-ups.”

      This is a very important point. The fact that the suggested list doesn’t even mention this shows how much americans think their culture is supreme.

      Sarah, please don’t assume this because lots of contributor to FOSS projects are from all over the world.

      It is very important that you take these cultures’ sentitivities into account.

      1. Yes, I lack knowledge of what it’s like living in a culture outside the U.S. I would love for other open source projects to consider the perspectives of other cultures, like the impact of large project downloads on Indian and African developers who have spotty internet coverage through the cell network. I would love projects to think about localization for non-English languages, so we could benefit from having more Latin@ open source users and developers.

        I also lack perspective in other areas. I’m an able-bodied, cis white female. If this were to become some sort of official “how to” document, I would seek out other voices to contribute to it.

        However, if your beef is that I should pay attention to white male European tears over being called out for being blunt and rude, then you get no sympathy from me. There are parts of every culture that should be discarded because they hurt other people. Genocide and genital mutilation are examples of cultural traditions that harm a minority population. Verbal abuse is another. Cultural traditions should not be carried on blindly without examining the impact on the human beings around you.

        1. I once had the experience of moving within the United States and switching companies at the same time. My new employer prided itself on “soft skills” and similar.

          It took me weeks to learn to identify code review feedback that meant “you have a bug here; fix it”, since “you might want to look at ….” did not have such connotations for me. It took me years to shed the reputation for being hard edged and generally biting; my many offences included the statement “this is broken” in a code review. (A “personal attack”, or so I was informed.)

          I remained unpromotable as long as I remained there. And even after I learnt how to work with these people, I didn’t feel like part of their culture.

          Where many of my colleagues honestly saw a welcoming atmosphere, I saw vicious exclusion and rampant politics.

          I don’t know what S. P. Zeidler and “linux” meant above, but this is the sort of thing I think of when I read things like this – and the cultural distance was only from the American East to West coasts.

  12. If I may make a small suggestion? When you write “diverse newcomers” and similar, it sounds like you’re using diverse as an adjective for individuals who vary in some way from the general or focal population (as opposed to using it to describe a population). I’ve heard some folks describe this as a problematic use of the word — I don’t remember the details of their argument (I’ll try to track it down), but it stuck with me and I thought I’d at least point it out for your consideration.

    1. I agree it’s awkward, but I have heard that the phrase “minority community members” is even less well-liked. If you have a better phrase to use, please let me know.

      1. I’d count “minority …” as plain awkward too. Assuming you’re trying to attract more women to a technical community!

        I’m not sure how to fix it. I’d just note “under-represented groups” is one phrase people can consider. It’s used as a precise/formal way to cover both “minority groups” and the majority gender :). In principle it could be used in the specific context “diverse newcomers” was.

        Not saying it’s just a phrase that automatically fixes awkward context. Say you succeed perfectly in recruiting from one broad group that would otherwise be “under-represented”. Now it’s not precise to call them that anymore. It wouldn’t mean you suddenly cease wanting to consider how to accommodate them in recruitment. It would suggest you got that part about right for now, and you could carry on as you are for the moment :).

  13. Open source communities are mostly online communities with the exception of projects that are confined within office/company space.
    Online communities are volatile because people tend to act in ways that they don’t in real life.
    This is the main drawback of open source development and I have learned that after following open source projects since the late 90s.
    There are many talented developers out there. I think sub-projects in the Linux kernel should be sponsored by different companies and confined within them so that all developers are forced to work in offices and interact mostly only with office colleagues.
    Why is it that Microsoft and Google are healthier places to work even though the Windows kernel is less technically capable than the Linux kernel?

  14. I like it. While I’m not especially experienced with any open source community, except as a downstream consumer (and occasional bug reporter) this sounds very likely to work well.

    One exception: I don’t have much use for video chats myself, except to the extent that other people feel as if they are closer to me after having one. (It doesn’t work in reverse.) Even face to face meetings don’t do much for me – though I do enjoy gatherings of like minded folks, for the informal interactions. And potential contributors on the autism spectrum are likely to feel the same way, or worse – many get badly stressed by groups, with the worst case probably being those who are lucid in writing, but inarticulate or even completely incapable of speaking. So it’s something to make available, for those who benefit from it, but not something to require.

  15. Cool article. Please don’t give up the fight against Linus and his ilk. Some of us on the outside see what’s really going on. Don’t ever be bullied for having opinions.

  16. Text is a poor medium so let me be clear I state the follow in a neutral tone regardless how one may feel when reading it. I will allow I am appalled by the behaviors described.

    I am wondering if there is a maturity issue here and if when older will feel differently. I am mildly saddened by those who appear otherwise as being intellectuals to allow themselves to behave in such an unprofessional manner and I’m not talking about the Linux Kernel Community or other organizations with so-called bad graces. I’m talking about those who can not deal with the world. Big deal, grow up. Professionals don’t allow “feelings” or take valuable project time considering what offends them, they produce results or they don’t. That’s it. “Jokes” off color or otherwise are no more than any other tool. Taking offense at really anything in a professional environment is frankly embarrassing on anyone’s part. If one is unable to use the local tools properly then one needs to seek other activities. On the other side, one who constantly uses tools known as profanities should be of the mind if a particular tool is not effective then it is time to use another thus reflecting the ignorance on their part but the mere fact us being offended by a language tool of all things to pick to be offended by is juvenile.

    During the hiring process at our work environment it is clearly stated absolutely any language use is permitted and if one is easily offended one is not mature enough to work here. There is no such thing as a personal attack with words. Personal attacks are defined as physical attacks which are not tolerated. Being held back one’s own personal quirks is such a waste of talent. I sincerely hope people of talent will eventually realize their personal issues and quite trying to force their world view on others who do not have such issues.

    1. Let me rephrase what you’ve said:
      1. The current majority of people in tech use “rough” language.
      2. Anyone who objects to rough language is unprofessional.

      This is a quite common viewpoint, which is why I’m taking the time to respond to it. What makes me sad about this common viewpoint is the inability or unwillingness to put yourself into a minority’s shoes and see things from their perspective. I have put myself in the perspective of the people who think they have no other tools except rough language to get their co-workers to do something or to bond with them. It’s an extremely tough place to be right now. You’re being told from all sides that the rough language and culture you’ve grown up in is somehow wrong, and it’s nerve wracking to suddenly have to watch everything you say. You have to learn new ways of communication and persuasion, and it’s hard. Even if you only occasionally use rough language, you’ve seen people get called out on social media and lose their jobs for it. It’s a scary place to be.

      But you know what? We’re software developers. We’re good at learning new tools. I have complete confidence that you can learn empathy, and learn how to react with compassion when you’re called out on something that’s not culturally appropriate any more. If you’re a part of the open source community, you know that our communities support people who show the desire to learn. Find a friend to practice these skills with, someone that’s safe to make mistakes with. Perhaps you’d like to take a look at my posts on what it’s like being a woman on the receiving end of rough jokes and tips on how to handle being called out. Maybe you want to explore the unconscious bias training from Facebook. But please, don’t close your mind off to other perspectives.

      Good luck!

  17. I might not be privy to all the details, but I *think* an example of a good community is the Python community. I mean, based on the discussions I’ve read in their mailing list archive, they do things politely. Sometimes ‘heated’ in the sense that two sides will defend their positions passionately, but I have never seen any insult or ad hominem attacks being launched.

    They even codify their “Code of Conduct”: https://www.python.org/psf/codeofconduct/

Comments are closed.