How Strapi is shaping community and building their product open source
An interview with Daniel Phiri, Developer Relations at Strapi
Welcome community enthusiasts! 👋 We chatted with Daniel Phiri a while ago. Daniel is a DevRel at Strapi.
Daniel shares how they turn members into advocates, what tools they use for their community efforts, why they moved from Slack to Discourse, how community and the product team stay connected, and a lot more!
Let’s dive in, and don’t forget to hit the subscribe button (if you haven’t) to follow along on the next issues! 👇
About Strapi and Daniel
Strapi is the leading open-source Headless Content Management System (CMS). It gives developers the freedom to use their favorite tools and frameworks while allowing editors to easily manage their content and distribute it anywhere.
Daniel is based in Lusaka, Zambia. He started working in developer relations roughly two years ago. As a student community leader, he noticed a lot of people doing developer relations at the events he used to attend. He started connecting with them. Two years later he got involved in the field himself. He started his career at Hasura, moved to PubNub for some time, and did a bit of freelancing in between. Now, Daniel is key in the DevRel and community efforts at Strapi.
Why does Strapi put effort into community building? How did that start?
The company got started by three students who, at the time, were attending the same college. It began with a Reddit post. With time, people started coming on to the project until the initiative slowly grew into something that many people wanted. Growth comes from awareness, adoption, and use. So, in a way, community has been behind a lot of what has made Strapi what it is today. As soon as I joined the company, I could tell that this constant urge for feedback and the will to iterate and provide the best possible solution for our community and users was a big part of the DNA.
This modus operandi is probably also responsible for the power the product has today. As such, how much attention do you put into community building at the moment?
Being open-source, we're also naturally inclined to be transparent since there are so many people who might be affected by changes. We have a team solely dedicated to serving the community – the User Success Team.
everyone at Strapi is community-facing. The developers, myself, the user success team, and the marketing team, even the founders, have regular community interactions.
But, as I mentioned, the community is at the core of the company. So, to an extent, everyone at Strapi is community-facing. The developers, myself, the user success team, and the marketing team, even the founders, have regular community interactions. It's all community-driven. All in all, we're putting in a lot of effort, you could say. It's really in the company's DNA.
What community programs do you have in place?
I'll pick one that I found very interesting and came from the resourcefulness of the community itself. It's the Write For The Community Program, which we almost rebranded as the Craft For The Community Program.
This initiative or program got started because we saw a lot of community members writing articles about Strapi. It made sense to centralize it, to create a structure in curation and contribution for different Strapi-related topics, and publish everything under a single program on our blog. Whenever someone solves a problem with Strapi or provides a particularly unique solution, they feel compelled to share that somehow. This program enables and facilitates sharing.
How do you stimulate people to grow from a user to someone who provides content for you? In other words, how do you turn people into advocates?
That transition happens gradually and by giving gentle nudges at the right time. We try to gamify some elements as well, which I guess is one of the various ways you can gently nudge people.
The root for stimulation sprouts from organic conversations – just reaching out to different people.
Based on my interactions with community members, this people-to-advocate transition happens somewhat randomly. We'd be talking about a technical or logistical issue, and I'd ask if they would like to document, share, or write about what we had been discussing. The root for stimulation sprouts from these organic conversations – just reaching out to different people. Other times, someone may ask a question in the help channel, to which one of the members gives a detailed response. When that happens, I might ask if they can go deeper into the subject in a blog post. There are various roots to engagement and interaction. And incentivizing every alternative makes more people want to do it.
we brought this program to incentivize those who have gone above and beyond for the Strapi community, basically helping them and acknowledging their efforts publicly and clearly.
A good example is our Writer's Program. Since we compensate writers for their work and give them resources to improve their skills, more people want to be a part of it. Recently, we have also put together the Strapi Community Stars Program. We noticed many people worldwide speaking at meet-ups or hosting meet-ups under the Strapi name or helping others in forums and community spaces. They are passionate and knowledgeable about Strapi – and that is precisely the kind of activity you want to encourage in a community. That's where you find the value of community: people talking to each other, sharing solutions. So we brought this program to incentivize those who have gone above and beyond for the Strapi community, basically helping them and acknowledging their efforts publicly and clearly.
Those with a "community star status" can partake in office hours with Strapi employees. These work as mentoring sessions, trying to find ways of helping them grow not only as developers but as individuals.
We also give them free enterprise licenses for the enterprise version of Strapi, and they get access to features in Strapi before anyone else. The first batch of community stars came in last November. Soon we'll be looking for our next batch. We're iterating on the feedback and trying to make the program better as we're moving forward with it.
I suppose it takes time before someone becomes a community star. How do you keep track of the people who might be the next community stars? Do you administer engagement?
It's mostly done by the eye, based on interactions. I don't have a precise overview of community activity – I guess that's the goal. I do use Orbit quite a bit. I think it's an interesting tool to give an overview of the community members in different spaces.
Sometimes, all people need is knowledge and awareness of how to do something.
Another thing we've been looking at is using the stars program as an accelerator for someone's community activity. The idea is to have people come into the program, learn, grow, become more active contributors in the Strapi community, and get access to other stars who already have in-depth knowledge. We have many resources on how people can contribute to an open-source project in non-code ways, and we have shared that with our members. Sometimes, all people need is knowledge and awareness of how to do something.
Being an open-source project, the main codebase for Strapi is on GitHub. Do you get many contributions, or is the work done mainly through the internal team?
Most of the development, feature-wise, is done by the product team. The majority of contributions we get are bug fixes and documentation. And, of course, the non-code contributions like articles and meet-ups. Some members have taken the initiative to start their own events. But since we also have a program for global meet-ups – which was a massive thing in the pre-COVID world – they eventually reach out. Currently, we're seeing that members are hosting meet-ups in a virtual format in the Czech Republic, Thailand, London, and The Netherlands.
We don't do a ton of specific things to entice people to contribute, apart from the one-on-one engagement I touched upon earlier. It usually emerges from one-on-one engagements. Interestingly, most requests are unprovoked. A lot of people just come and say "Hey, I want to do this or that for Strapi." It can be anything from organizing a meet-up in their hometown, writing an article, speaking at a conference, etc.
What tools do you currently use for your community efforts? And how do you use them?
Slack has been the primary tool of interaction. However, we're planning on migrating soon. For a while, we used GitHub Discussions for RFCs (Requests for Comments), bugs, and issues. Then we moved that to Discourse, which is our main community-led support forum at present. We have about 13 thousand members on Slack, and having to pay for the premium version is pricey and undoable. But the biggest problem was that whenever we answered questions on Slack, it would not be searchable or indexed by Google – and Discourse gives us that.
Of course, we use GitHub, as we're open-source. The project is based there. We also have an RFC repository where we discuss significant changes to the project.
For product feedback and requests, we use Productboard. It's a place where members can upvote different features. We mainly use Notion and Orbit to document and keep track of stuff internally.
Are both Slack and Discourse support-oriented, or do people use them differently?
Discourse is more support-oriented. During this migration phase, Slack also remains support-oriented. We try to remind people to ask everything on Discourse. But since Slack was the first platform of interaction, most community members find it easier to post questions there. Besides support, we have several groups and channels for non-support interactions. There are also spaces for different categories of contributors and community members.
With 13 thousand members on Slack, how do you keep up with all the questions?
The one dealing with that is mostly my teammate Derrick, our solutions engineer. He used to be a community member, one of the more active ones who would be very quick in responding. Now he's part of the team. He's fantastic at what he does, very responsive in answering questions and directing people to the forum. We also have help from many community star members, mainly Sonny in Romania, Matty in the Netherlands, and Bobby in Nashville. They are very active on the support side of Slack and Discourse.
Did you apply any unique integrations or 'hacks' for Slack or any of the other tools that you're using?
Mostly bots that help with welcoming people and giving instructions when someone joins a channel in Slack. Next to that, a couple of Typeforms. Given that we still make a lot of announcements on Slack, we also have a Discourse-Slack bot. Whenever we release something, we put it up on Discourse, and then the bot sends it over to Slack. It becomes a bi-directional conversation: when someone comments on Discourse, it also shows on the Slack channel. So no one misses out on that announcement. We have also integrated Twitter and GitHub into Slack to track different activities and repositories in a specific channel.
How do you make sure that people stay engaged and keep coming back to the community?
This is not necessarily the most significant challenge I face, but it's something I've been thinking about quite a lot. Consistency is important. Having set days when you do certain activities helps people know when to expect things. For instance, for the writer's program, I send out a weekly message (every Tuesday at 11 am) updating everyone on what's going on. It helps because then people know when to expect specific engagements. Still, I feel there's only so far you can go with making sure people come back. Community members are humans. A lot is happening in their lives, and sometimes texting or sending a message in a Slack channel is not a priority. And there's nothing you can do about that.
Do you try to create inspiring content for the community, or is it primarily centered around educating people about the product?
It's a mix of both. To use the aforementioned writer's program as an example, a lot of the content that goes out with the weekly message is community crowd-sourced. We have a repository where people can request a specific type of content, and anyone can write about it. We put the ideas out there, and someone eventually takes care of creating content around it. This ends up being an excellent way to attract people to use the product and join the community.
You must come across a lot of feedback on how the product could be improved. How do you make sure there's a connection between what the community says and what the product team does?
This always requires a bit of effort, and I know there's room for improvement on my part. Whenever there's feedback, I try to pass it on as quickly as possible. I have a Notion page that I try and keep updated. But I often use the Slack feature in the company Slack and send myself a reminder. A lot of the feedback is also dealt with in casual conversations with the product team when I let them know that there's a possible issue here or there. We also have a community feedback channel. So whenever I hear anything from a member, I paste it there, tag them, and let the conversation run its course.
Once we address the feedback, we always try to follow up with the members that mentioned it.
Once we address the feedback, we always try to follow up with the members that mentioned it. One of my teammates is responsible for this. It goes back to the Productboard portal that I talked about earlier, as that is also a place where we collect a lot of feedback. At the same time, our product marketing manager is really proactive in her approach. There's a constant stream of communication with those who give feedback or send requests.
Do you do anything to monitor the experience of developers when they start using Strapi?
At the moment, no. But I do have some visibility on what that might look like. It's something at the back of my mind, especially since a lot of the content is tailored towards newcomers. As a DevRel, knowing the product can be treacherous. You can get lost in a bubble where the things you do to help those who aren't well-versed with the product come off as gatekeeping. So you have to be mindful of the words you use and how you explain things. I try to get out of that bubble. Whenever I create something, I avoid making it too complicated. Unless, of course, I'm trying to solve something for a specific type of user who is of intermediate or advanced knowledge on the topic.
As a monitoring tool, we do use Amplitude. It provides excellent insight into how people interact with the product. It shows what people do and where they drop off in the product use cycle.
What is the most underrated or overlooked activity that a company could do to enhance the developer experience?
I think optimizing the getting-started experience. For some reason, a lot of people get this wrong. They try to become too flashy right at the outset to make people see the value in the product. Perhaps they feel like "complicated" means the problem is worth solving. Sometimes a really basic approach to a getting-started can go a long way. If you can make it as low-barrier as possible from the get-go, it would improve your developer experience.
Based on how you build community and engage with members, do you think some principles also apply to non-developer communities?
I think the reasoning behind how and why communities are built – developer or non-developer – is pretty much the same. I would take the same approach in terms of making sure everyone feels welcome. It's important that the community members are there for the right reason and that you are also engaging them for the right reasons.
In a community, I don't think anyone wants content being thrown at them. Community comes from two-way communication
I believe it's important to differentiate between an audience and a community. An audience entails you putting stuff out there and people listening to you. In a community, I don't think anyone wants content being thrown at them. Community comes from two-way communication – not just between your members and you but your members and themselves.
Do you have any advice for people starting a new community or are in the early stages of building a community around their start-up?
Focus on the problem you're solving with your product/service and build around that, I would say. By doing that, you establish a direct link with your community. Consequently, your community helps you grow because you're solving their problems. Transparency, consistency, and intention in interacting with your community can go a long way. I think that's the most robust foundation for building any community.
At the same time, highlighting your community's work and efforts – even outside of the product – is something many people forget. It doesn't necessarily make sense when you think about it at first. But it's essential to be able to tell the stories in a way that inspires other people.
Follow Build With Users on Twitter for quotes, golden insights & more 💙
Thanks for reading this issue 🙏