When a company decides to embrace open-source software development, releasing the code under a suitable license is only the tip of the iceberg. The real challenge that companies face is learning how to attract and collaborate with contributors.
It’s not easy, but fostering the growth of a healthy community is a necessary step that will help your open-source software project fulfill its potential.
Build In The Open
Successful open-source software projects require development to occur entirely in the open. Although the idea seems obvious and axiomatic in principle, applying it in practice requires a lot of care and attention to detail. Developers should avoid creating barriers that isolate the in-house development team from the broader community.
At RethinkDB, we conduct all of our development on GitHub . Members of our development team use a public issue tracker to collaborate with each other as well as with the community. All of the underlying discussions that inform major design decisions occur in the open, so that users and third-party contributors have an opportunity to follow and participate.
We also use the issue tracker to highlight our development roadmap and prioritize planned features. We take great care to make sure that all of those aspects of development are plainly visible to our community.
As your project grows and attracts other stakeholders, you might want to consider establishing formal governance structures that give prominent independent contributors a proportionate amount of influence over the management and direction of the project. As a number of high-profile open-source software projects have seen in recent years, failing to foster sufficiently participatory governance can lead to messy forks.
Build An Ecosystem
Building an ecosystem around your project is often just as important as developing the project itself. Independent developers can help build bridges between your project and other popular technologies, increasing your project’s usefulness and garnering exposure with other communities. A strong ecosystem will let you take advantage of network effects to attract users and stimulate community growth.
At RethinkDB, we benefit greatly when community members build client libraries that make it possible to use our database in new programming languages that we don’t officially support. The availability of a community-driven Go driver, for example, helped boost our audience by extending the reach of our product to the vibrant Go community.
Build Personal Relationships
Internet collaboration often has an eerily impersonal quality. There’s a lot of value in stepping out from behind the curtain of faceless anonymity so that you can cultivate a stronger relationship with your community. You want your users and volunteer contributors to know you as people, not just disembodied GitHub accounts.
To make our community more personal, we regularly publish videos that feature our engineers and evangelists. The videos give us an effective way to speak to the community with our own voices. We also publish blog posts, each carrying the byline of the individual team member who wrote the content.
The most important thing is to remember that your relationship with the community is a two-way street.
Another way we foster participation is by encouraging our users to reach out to us, most notably through our Shirts for Stories offer. We give a free RethinkDB shirt to any user who contacts us to share how they use the database. It is easily one of our most successful community outreach initiatives, giving us a valuable opportunity to open dialog with many of our users.
Putting boots on the ground is another important part of an effective community evangelism strategy. Speaking at conferences and going to meetups can expand your community and offer valuable opportunities to establish a personal connection with users and prospective contributors. We’ve had great success presenting workshops rather than just sessions at conferences. The interactive, hands-on format lets us engage more deeply with the audience and better address their interests.
You can amplify the signal by giving members of your community the tools they need to evangelize on your behalf. You can do this by enabling them to reach out to other communities or create their own communities that expand yours. At my company, we put together a kit, called the Meetup in a Box, that contains everything a community member would need to successfully present RethinkDB at a meetup or similar community event.
A small startup can easily punch above its weight with the help of a robust community, but it takes a lot of effort to keep that community healthy and sustainable.
The most important thing is to remember that your relationship with the community is a two-way street. Your community members aren’t free labor for your project. You have to earn their support and participation by creating an environment in which they also benefit from working with you.