Building communities is a critical part of the success of open source projects. Just like a company that cannot attract customers, an open source project will fail at some point if it cannot attract users or members to its community. Nevertheless, especially newer open source projects have no idea how to grow and develop their community. To tackle this, we have developed the "Open Source Community Funnel". Think of it as a framework for categorizing your community members and figuring out the next steps for your community.
Before we dive into the different stages of the funnel, here are a few basic guidelines:
- Developers move through the funnel from top to bottom.
- Every advocate was previously a contributor, every contributor was a user, and every user was a visitor at some point. Stages usually do not get skipped.
- Contributors and advocates have to stay users to keep a connection to the project (and the community).
- Developers frequently drop out at every stage of the funnel. It's painful, but it's part of the process.
- Even though the structure is based on a classic marketing funnel, you should not make the mistake of considering community building as "marketing". But that's a story for another time.
The Open Source Community Funnel
Visitors 👀
Visitors are developers who are aware that your open source project exists but have not yet used it. They are the large crowd of developers that exists around your actual community. Usually, visitors do one or more of these activities:
- Visiting your website
- Following your social media
- Subscribing to your newsletter/mailing list
- Attending a talk about your project
To turn visitors into users, getting started with the product should be made as easy as possible. For example, it is a good idea to create a very simple "Get started" section in the README, so that developers can experience their first sense of achievement in just a few minutes. This will help to create the first bond with the community. In addition, content is, of course, also very suitable for this stage. Give talks at conferences, attend meetups, or write blogs. The possibilities here are endless.
Users ⚒️
Users are developers who use your product for their software projects regularly. They are the foundation of your open source community, yet they do not actively engage in your community. Typically, users can be spotted by the following activities:
- Starring and forking your repo
- Asking project-related questions in online forums (Stackoverflow, Discourse, etc.)
- Commenting on your social media activities
To turn users into contributors, you have to create a real sense of community. Involve your users in roadmap decisions as much as possible and try to understand what problems they are solving with your project. On the other side, users must learn about all the other potential use cases of your project, so they can evolve from occasional to heavy users. Tutorial series or community-related online conferences are just two ideas for this purpose. Furthermore, having good accessibility to your community is crucial. For example, consider hosting a weekly office hour in your Discord channel.
Contributors 🧠
Contributors are developers who actively contribute to your open source project and are engaged in the community. They are the heart of your community and keep things running. Generally, contributors undertake the following activities:
- Submitting pull requests
- Opening issues and giving feedback
- Engaging in discussions and supporting users with technical issues (e.g. on Discord)
Turning contributors into advocates is the ultimate challenge in community building. It really comes down to building a personal relationship with your most active contributors. Set up regular meetings with your contributors, ask them if they would like to play an (even) more active role, and show them that you care about their opinion! At this point, it is also important to establish an inclusive culture in your community, so that developers feel like investing even more time. No one wants to be part of a community that is, for example, conspicuous for its know-it-all attitude and arrogance. Establish a code of conduct and enforce it rigorously.
Advocates 🌟
Advocates are developers who are true ambassadors of your community and also encourage other developers to come on board. They are firmly convinced of the added value of your project and the values of the community, and they communicate this to the outside world. They should all be personally known to you, but these activities help to recognize them:
- Giving talks at conferences
- Organizing local meetups
- Creating content (blogs, tutorials, regular tweets, etc.)
You have reached the end of the funnel! Now it's about keeping your advocates. Let them feel that they are an important core part of the community and give them the recognition they deserve. This can be accomplished, for example, through a "Champion" or "VIP" community program where advocates are honored for their efforts and achievements. Also, give your advocates exclusive access to new project releases and ideas, equip them with swag, and give them all the support they need to pursue their ideas and activities. Important: Don't get the idea of rewarding an advocate monetarily. This can make their involvement feel more like a job than volunteering.
Some final words
Hopefully, this post has given you an introduction to open source community building. However, I would like to emphasize again that no two communities are the same. Projects, use cases, and interpersonal relationships are just simply too different. And that's a good thing.