How to build a great open source community in ten easy steps
So you have an Open Source (FOSS) project. And you need someone to use it? A common problem! As it turns out, the success of a FOSS project is directly dependent on the health of its community.
At the recent All Things Open conference, community-building expert Jono Bacon discussed the critical nature of a healthy community and how it is essential for an open source project. At Progress, I’ve had the privilege of helping build, moderate, mentor and manage two communities: our Developer Experts and our NativeScript Community. The Developer Experts program is a group of 38 community evangelists passionate about Progress and Telerik products. The NativeScript Community, primarily active on Slack, is comprised of 2400+ enthusiastic NativeScript developers both experienced and novice who chat about all things NativeScript, helping each other develop their mobile projects.
Given the growth of these groups over the past year, I think it might be useful to others to share some concrete examples on community-building as someone with absolutely no training in building this type of community.
Even though the above gif may speak volumes, something is definitely clicking in the NativeScript community. I asked some of our members for a little word association exercise: “Give me five words that you associate with the NativeScript community”:
Some of our Developer Experts have had even more concrete results:
Convinced that building community is worth your time? Read on.
Tip 1: Find a platform and stick with it
Initially our community hub was on Google Groups, but it quickly became apparent that the interface was not amenable to building good conversations. When we moved to Slack, it got real, real fast. I have lamented the fact that Slack doesn’t have threads or, for unpaid plans, an easy way to retain conversations. A forum would be a good way to have this sort of conversation, and products like Discourse offer a free plan for FOSS projects, but for us it’s all Slack, all the time. Slack has many surprising uses. We have turned organized Slack Chats with our Developer Experts into well-received articles for our Developer Network. We’ve even used it to help with hackathons. Sometimes the 37 channels of the NativeScript Slack seem a little frantic, but we all get along.
Tip 2: Tacos and bots
This seems cheesy, but we love our tacos. I first started experimenting with Slackbots to harass my perpetually-late team leader:
As it turns out, it’s both easy to write chatbots and integrate them with Slack. And they are great for helping engage the community. We use the @heytaco bot to build a leaderboard of the most helpful people on Slack — and it can get pretty competitive.
To train newcomer in the use of @heytaco, I create a Zapier ‘zap’ to watch the Slack channel for new members and welcome them with a friendly taco:
Not for nothing am I ‘queen of the bots’: we have a Secret Santa bot running right now on the Developer Expert channel, and I’ve tried scheduling and polling bots to organize group activities. One of my bots got a little out of control, pinging people reminders every half hour, but over all they are a great way to raise the level of joy of your Slack channel. A little silliness goes a long way.
Tip 3: Get people the tools they need
Developers are clever folks. If they find a tool or process will make their work easier for them, they’re likely to not only grab it and use it, but improve it. Enabling, amplifying, and celebrating this process creates a great software ecosystem around your core open project that money can’t buy. Witness the NativeScript + Angular 2 snippets for Visual Studio Code that Nathan Walker built, as well as his Advanced Seed project that allows you to quickly spin up a web, mobile, and desktop app with shared code. Another example is the Webstorm plugin for NativeScript built by Issam Guissouma, and used by many other developers who love this IDE.
Tip 4: Cultivate your helpers
It gives me the greatest of pleasure to see those who have been helped become great helpers. Mister Rogers was right. Can you tell I used to be a superfan?
The helpers on our channels go the extra mile to help their peers get the job done. It’s a great thing. We help our helpers by getting them access to core Engineering resources and inviting them to chats, calls, and codebases to further their understanding of the platform. We also point them towards contracts, partnership opportunities, and programs to collaborate with individuals and companies. The more community members turn into experts, and the more experts turn into professionals on your platform, the better it is for everyone. This tip is all about karma.
Tip 5: Spin up contests
Once in a while I like to spin up an impromptu app building contest on Slack. These have become really popular and have generated some production-ready apps that can be featured in our showcase. Contests have many uses. It compels people to step away from their day job and work on a project that allows them to build an entire app from start to finish in a short period of time. This exercise that is useful to us internally to shake out bugs, and useful to the community to see what can be built. Our first contest, a challenge to build a news reader app, was done extremely impromptu; our second saw the creation of some beautiful weather apps; our third turned in to the battle of the apps with some of our heaviest blog engagement recorded, and we are currently running our fourth contest for the holidays. I love contests for the friendly competition, community engagement, and great results.
Tip 6: Amplify blogs
All hail the awesome bloggers! A set of great community-oriented blogs is a sure sign of community engagement. While we have our own internal developer-focused blogs (Telerik Developer Network and the NativeScript blogs), it’s of vital importance that the concerns of the community be heard too. Internally, we might not be able to do a fast shake-down of a release’s features and quirks, but you can bet Nathanael Anderson will, via his blog. And if he doesn’t, Nic Raboy or Brad Martin surely will! We’ve done some interesting hybrid blogging or content-sharing experiments, including NativeScript Snacks, which is a site that I manage but the content is entirely community generated. So far it’s working nicely.
Tip 7: Feature a community member
Each month, I jokingly ask the Developer Expert group, “who wants to be Miss <add month here>” — and they know it’s time to volunteer to be a featured Developer Expert on the Telerik blog. This has proven a really nice way to get to know each other, especially in this group which is extremely international and dispersed. Did you know, for example, that Osei Fortune is from Trinidad and will willingly teach you local slang and give you a recipe for doubles? That Nathan Walker is a passionate artist and musician? That Jochem Bökkers has been writing software since the days of PASCAL but the thing that drives him nuts is his Swiss keyboard? These folks may never meet face to face, but this sort of ‘feature’ puts faces to names and personalizes people.
Tip 8: Send swag, stickers, and badges to form your tribe
This is probably the most obvious method of community building but it still does work brilliantly to build your ‘tribe’ and your ‘brand’. A solid logo and good stickers are an affordable way to spread the love. We are lucky to have budget enough to send swag worldwide. Everybody loves getting boxes in the mail, little presents, and love. Form your tribe!
Tip 9: Build careers
This is my favorite of all…watching developers grow their skills and become professionals in the field, enough to start building their careers on the platform you have helped to create. I’m proud that our efforts are helping pay mortgages, child care, even if only in part, by helping people change up their career path.
Tip 10: Commit acts of love and joy
How can we help you? That is the big ‘ask’ of the FOSS project. And the help is reciprocal — helping you helps us, helps the project, and helps create something that is bigger than any of us.
And one bonus tip…try to improve. We can definitely do more, and better. I’d like, for example, to see far more diversity in our community, and am working with my colleagues to further this aim. I’d like to see younger students give our project a try, so creating more curriculum and learning resources are a goal. We can always improve. But in the meantime, it’s simply fun to be a part of a thriving community of terrific individuals.