It's been great to see the continued growth of the Cube.js community since I joined in October 2020. One of the areas where this growth is evident is on Slack, where we now have over 3,000 members (compared to ~2,000 members back in October). The conversations on Slack have been great, and it's also great to see community members connect with each other.
As great as Slack has been, it does have limitations as a tool, especially as the community is growing. For example, there are many technical discussions on Slack that are getting lost due to the increased volume of conversations, difficulty in searching old threads, and the limit of 10k messages for a free Slack instance (there have been about 60k messages on our Slack so far). Over the past few months, I have been looking for ways to preserve some of the Slack conversations on a platform that could be used as a collective knowledge base for the community.
At the same time, I got contacted by community members after the recent user stories we published. They told me that they liked the user stories as they could learn different use cases and wanted to see more of them. However, they were concerned that these blog posts could require a lot of effort to get them published. In addition to writing the content, the user stories typically require reviews from legal, marketing, and others, so they're not something that could be published in a few days. Their suggestion was to have an interactive platform where community members can share their use cases or recipes with a lot less overhead and get feedback from other community members.
So why a community forum?
When I looked at ways to address both concerns around Slack and user stories, I thought a community forum would be a good tool to help our community. Here are some of the benefits of a forum:
- Better organization: Forum platforms provide easier ways to organize and search discussions with features like tags or sorting by popularity.
- Creating a knowledge base: With better search capabilities and no limit on the historical conversations you can keep, forums will allow us to build a community knowledge base of use cases, recipes, etc.
- Asynchronous communication tool: If you've been away from Slack for a few days, scrolling through several days of posts gets tedious pretty quickly. On a forum, it's much easier to sort through topics of interest vs. scrolling through all conversations.
- Content creation support: If you're interested in contributing content like use cases, forums will provide a much better environment for writing richer content with support for markdowns, images, polls, etc.
We concluded that Discourse is the best option for our community among many other options for the following reasons.
- Familiarity: As many open source communities use Discourse, we believe the platform will already be familiar to many Cube.js community members. In fact, a few community members pointed me to other communities' Discourse forums (e.g., dbt or Ember.js) for me to look at as good examples.
- Ease of use and rich feature set: Even if you are new to Discourse, we believe the user interface is fairly intuitive. Discourse also has nice features such as easy integration with tools such as Slack, the ability to do fun community-building activities through badges, and is mobile-friendly.
- It's open source! We naturally love open source, and it's great to be able to support another open source software & community.
So, when should I use the forum vs. other community platforms?
Obviously, introducing another community tool could sometimes cause confusion, especially as people have become comfortable communicating on Slack. So I think it makes sense to clarify the purposes of each tool. If you want to take just one thing away from this post, I hope it's the following table. 😅
|Discourse||For sharing and discussing Cube.js use cases, recipes, etc. Any discussions that you believe other community members will benefit from even weeks or months later should go here.|
|GitHub||For reporting bugs or making feature enhancement proposals in Cube.js.|
|Slack||Connecting with other community members and for quick conversations/questions (and you don't mind losing track of the conversation in a few days). Here's a good example.|
|Stack Overflow||For technical questions when you get stuck using Cube.js, e.g., "I'm getting the following error message and I don't know how to fix it." (like this post) or "Is it possible to do X in Cube.js?" (like this post)|
As with any changes, it may take a little while to get to a community norm with a new tool, but I believe Discourse will be a valuable resource that can help the Cube.js community scale with everyone's participation. One of the things you are going to see is the Discourse emoji on Slack threads as you can see in the example below.
We'll use this emoji when we see a discussion that'd be a better fit for Discourse and then export the entire thread to Discourse, where texts in the exported are fully searchable (this is actually a great feature of the Discourse-Slack integration). Once a thread is exported to Discourse, we'll ask everyone to continue the discussion there, as you can see in this example below.
What can we look forward to next?
Finally, we want to have some fun as community members get introduced to the Cube.js Discourse forum. So we will be sending a couple of different swags to recognize the early pioneers. The first is for community members who create the first 10 new topics in each of our categories. The other swag will be awarded to top monthly posters for the next six months. We hope people will enjoy seeing these tokens near their desks or even carry them in their backpacks!
I plan to follow up with another post on how things are going after we had a chance to get comfortable using Discourse. In the meantime, I encourage you to get in touch with me with any questions/feedback on our Discourse forum, or better yet, start a topic under the General category in Discourse if you want to kick off a discussion with the community!