What makes a good open source community?
Whenever you use open source software, you benefit from the community that surrounds it — whether it’s a bug fix, better documentation, a helpful tutorial or something else. We at Grafana Labs benefit from the open source community, too: from your participation, and the many OSS components we use in the development of Grafana itself.
But what makes an open source community successful, exactly? And how do you build and nurture one? These are especially important questions for us at Grafana Labs, because getting this right is how we make Grafana better and how we create that wonderful “rising-tides-lift-all-ships” dynamic.
While this post focuses primarily on OSS communities, many of the concepts illustrated here could apply to any community, more broadly.
Why participate in a community in the first place?
To build an open source community, it’s essential to first understand why people show up and get involved: typically, it starts because they’ve got jobs to do and problems to solve.
People turn up in OSS communities wanting to learn and explore first. What is this software? What does it do? How can I use it? Before joining a community, people become aware of available resources like documentation, support forums, and Slack. Often, this is all accomplished by simply “Googling around” and clicking links. After learning the basics, people start to build something useful — even a Grafana dashboard to monitor their fish.
Community involvement starts with a problem, question or interest, but there usually aren’t any relationships (yet).
Building an OSS community: A series
This blog post is part of a series of posts we’ve written on OSS communities and what makes them thrive. Check out these other posts to learn more:
Learning in public: How to speed up your learning and benefit the OSS community, too
Why “good reply game” matters in open source communities
An inside look at the Grafana open source community and what’s next
Phases of OSS community involvement
Community members typically advance through three phases of involvement or participation:
- Passive participants: In the first phase, members will simply consume existing materials or resources, or ask occasional questions. If they feel welcome and find the help they need, they’re more likely to make it to the next phase. Passive participants who hang around long enough may come to recognize certain names on a forum, or get a rough sense of who is who within the broader community.
- Intermittent contributors: In the second phase, folks might make their first contribution back to the OSS community. Now, instead of only asking questions, they might post answers to others. They might share an open source repo they’re working on, find a bug and report it in GitHub, submit a PR, or even speak at a meetup or event. They may have come into contact with one or more people, and relationships might start to form.
- Heavy contributors: In the third phase, a small number of folks make a habit of consistently contributing to the community. They become the people that passive participants recognize in threads. They develop relationships and deep expertise, and make a variety of contributions. They are considered champions of the technology and the community itself.
A sample path
Throughout your experience in open source communities, you may have seen several people who have gone through paths similar to what we describe above. They are paths available to everyone, including you.
For example, after asking questions, many start to help answer them. Maybe you succeed with a technical project and do a presentation about that success, sharing best practices and lessons learned. For some, this becomes a pattern that makes them more visible within the broader community.
These phases we are describing are not hypothetical, and they’re not limited to Grafana: you’ll see it everywhere in open source communities if you look. It’s a gradual transition from focusing only on the technical facts to building relationships and a sense of community, and moving ecosystems forward.
Open source companies like Grafana Labs are working on creating win/win relationships: we can help each other with concrete technical questions, make better software, build a company, develop relationships that further careers — and maybe even get together for a beer at that next conference. None of these have to be at the expense of the others. Can you help others in the community and develop yourself professionally? The answer is “yes.”
Communities show participation inequality
These journeys we go through produce all kinds of positive benefits, but if I’m being honest, it’s not as common as we’d like.
One thing we know about online communities, in general, is that they are often distributed according to the so-called 90-9-1 rule:
Simply put, there are way more passive participants than anyone else in the community. And, indeed, we see this same dynamic within the Grafana community. This isn’t bad! It’s just how communities work. As Jakob Nielsen, principal at UX training and consulting firm Nielsen Norman Group, writes in the linked article above:
The first step to dealing with participation inequality is to recognize that it will always be with us. It exists in every online community and multi-user service that has ever been studied.
Your only real choice here is in how you shape the inequality curve’s angle. Are you going to have the usual 90–9–1 distribution, or the more radical 99–1–0.1 distribution common in some social websites? Can you achieve a more equitable distribution of, say, 80–16–4? (That is, only 80% passive participants, with 16% contributing some and 4% contributing the most.)
One very practical reason for the 90-9-1 rule is sheer time. Escalating contributions takes time and commitment. Not everybody’s got that, and that is okay. Community is the full 100%, not just the top 10%. For some Grafana users, Grafana is incidental to what they do day-to-day, while others spend many hours with it on a daily basis. Levels of motivation to participate will naturally differ.
This notion of “shaping the inequality curve’s angle” is very important, though, and brings us to our next question: How do we do that, exactly?
Good OSS community practices
Once we conceptualize the challenge in this way, the solutions aren’t really rocket science. In this section, let’s look at some good community-building practices, and how Grafana Labs, specifically, tries to achieve them:
Make it easy to contribute. If people can’t figure it out, they won’t contribute — it’s that simple. Within the Grafana community, some of the easiest ways to start contributing are by participating in the community forum or the community Slack. Also, almost all Grafana documentation has a “Suggest an edit” link at the bottom of the page, where you can open up a pull request right to the documentation.
The second practice is to let people edit, rather than create things from scratch. We unlock community creativity by recognizing that “everything is a remix,” and we play into that in open source culture: fork the repo, change the docs, write your own blog post, or edit what’s already there. No blank slate problems!
Reward positive interactions. This one is simple: a good community focuses its time and attention on what it wants to see more of. If someone does something particularly good or positive, acknowledge and celebrate it. This encourages people to continue on the path, and promotes helpful contributions. This was the driving force behind our recently launched Grafana Champions Program.
Be open and transparent. Community is built on trust, and trust can’t happen without transparency. Having discussions in the open where anyone can see/participate helps build trust. It is said that the handshake may have originated in prehistory as a “demonstration of peaceful intent, since it shows the hand holds no weapon.” Handshakes are tough over Zoom or in GitHub, but humans are still human. This very post is intended to provide transparency around the Grafana community, how we think it works, and what we’re trying to do to make it better.
Encourage and practice a good reply game. In strong communities, people help one another. This becomes a positive, self-perpetuating cycle. If you help people in transparent ways, such as posting an answer to a question in a public forum, Google will index your answers, and you’ll help large numbers of passive participants with your exchange. This is why we try to do things like find popular community questions and answer them thoroughly with documentation and blog posts.
Finally, inclusiveness. The community has to be an open space where anyone, regardless of background, can show up and participate. What matters is how we work together on the technical problems that unite us, not where we’re coming from. Exclusion shapes the inequality curve’s angle for the worse.
The Grafana community
What I’ve described here are what I think are good principles for building a community. They are not the only principles, and are by no means a complete list. But they are things we want for the Grafana community.
No community is perfect, and that includes ours. Community is an infinite game that never ends. There will always be challenges, and things we need to do better. That’s where communication and feedback comes in: I have no confidence we’ll ever “get it right,” but I do have confidence that we can listen and work it out together.
Let’s practice with this post: let us know what you think! Head over to the Grafana community site and feel free to tag me, @davidallen5, to discuss some ideas. We’ll always do our best to listen, collaborate, and improve.