Why we opened a public Discourse forum (and you should too)
QuestDB is recognized for having an active, vibrant and responsive public Slack. It's still there, and every day people ask questions, spec out possible contributions, provide feedback and just chat with the team.
While Slack can add a lot of value to people, there are significant drawbacks when using it as your core public community. And to make matters worse, Slack continues to deprecate APIs that are essential for running them!
So, what are the drawbacks? And are there alternatives?
We'll unpack them, and check out three of them.
But first, what's Slack doing to prevent public Slack communities?
IRC + ELECTRON = PING!
Slack is a useful tool. At first, many struggled with its demanding nature. For better or worse, what was initially a slick new version of primitive IRC patterns with channels and slash commands has become the workplace for many companies. While IRC was/is beautiful, Slack significantly broadened the appeal.
Enterprises have taken to it, and it's clear why:
- it's sticky
- has a strong developer ecosystem
- keeps pace with the flow of work relatively well
- works for all levels of people
But for everything it does well, it does not:
- allow viewership without an account
- index into search engines, thus no SEO benefit (!!)
- keep history beyond 90 days on a free plan
- have high quality search
This makes it a suboptimal place from which to grow a thriving community platform. Without these features, the significant effort spent towards support and engagement doesn't catalyze further growth. It's fast, dynamic, and mostly one-and-done.
In short, it doesn't scale well. Though it does work, thanks to the team's effort and the APIs and plugins that made public Slack possible. Well, at least before some subtle yet crucial API and free plan changes.
So how did it work? And how does it work now?
Building public Slack
Slack's payment model is
pay-per-seat.
The issues with public Slack come from stretching the free plan too far.
Consider if we had 1000 members in Slack. That's $8.75
USD per seat, or
$8750
USD/mo! And we have many more than that...
If all users were paid, when someone asks one question and spends 10 minutes, that's still a monthly cost. And then you have to manage these users and their seats. Now scale a little and, well, that bill and that maintenance is untenable. And it's still "closed door", without SEO benefit, with poor, 90-day-limited search, and all gated behind an account.
At first, this was OK, as in exchange you'd get a new server to add alongside your existing company server. Even with its limitations this is still adequate for many. It's fast and it works. People need help, people can come get help.
But because it's all based around seat payments, even on a free plan users must be manually invited. To work around this, a developer named Guillermo Rauch (who also made Vercel and NextJS) created the original slackin utility. Prospective community members entered their emails, clicked a button, and soon received an invite to Slack. Boom!
But it would not last. NETSPLIT.
Slackin' APIs
First Slack
deprecated every API
in their channels.*
namespace. As a result, users didn't get to auto-join
channels, and this broke the slackin bridge. No problem. The
community fixed it in another
repository. But that didn't last long either.
The bigger blow came when the API to join Slack was itself deprecated. The community was not impressed. Now these bridges ceased to function.
Instead, Slack provided an alternative. A team must now produce a link which someone can click on to join Slack. No API involved. It's limited to a maximum of 400 invitations per link, after which it requires rotation.
This is currently how slack.questdb.io functions. We just styled it up a little, and we have a counter running. When the link is full, we'll generate a new link and swap it. No big deal.
Though soon, yet another move against the free tier appeared, with Slack deciding to delete history after 90 days. Previously, paying would restore the history in its entirety. Now, only up to the current viewable threshold. Tough, but ultimately fair. Keeping unlimited data around forever would be expensive. And good software should make money. We'll pay if the value is there!
Although Slack still works, it's clear that using it as your core public community platform goes against its intended design. And it's also not providing the significant benefit of working in the public web-space that helps your community grow.
Alternatives to public Slack
So, are there alternatives? We checked out a few.
International communities of the open source variety are diverse, to say the least. What works for some people might not work for others. Some really like the immediate responsiveness of a chat room like Slack. But many would rather read, lurk and... if they have to... ask a question.
So, all told, our requirements were:
- 1-to-many instead of 1-1 -- must be public and viewable with no account
- solid search with no limits
- clean, simple accessible and readable
- sticky and functionally interesting
- pair well with Slack, but give an off-ramp
- needs a dynamic, chatty component
Some discord on Discord
We considered Discord. Many emerging Web3 startups and open source projects do well in Discord. It offers a blast of community tools, from forums, to voice and chat channels, to scheduling mechanics, and it too has a strong developer ecosystem. And it also has... funky vibes...
Discord is colourful and dynamic. It's fun. Mostly used by gamers, it has its own aesthetic. This is cool, but not for everyone. And while functionally robust, it has the same key issues as Slack:
- no view without an account
- content is not indexed into search engines, no SEO benefit
- search & history keeping is poor
- a lot going on
We respect it. But it's not the best fit for our Ethos.
Open Slack with Linen.dev
We found an interesting tool: linen.dev. It takes private Slack activity and makes it public. Someone can then discover it via a search engine and view it without an account. It creates an open window into your server.
However, it's "rough in, rough out". People don't write for discoverability in Slack. They write assuming dynamic and fluid responses that may require multiple back-and-forths. Thus the format of the content which is being indexed is far from optimal, both in its base composition and in its structural formatting.
It might be open. But it won't be clean and will not index well. If people are to discover your content through search, it needs to look well enough to reflect positively on your brand. And it needs proper structure to compete meaningfully in keywords. While it is nice that it still leverages Slack, this wasn't likely to provide a strong experience for our community members.
Next!
For civil Discourse
From Jeff Atwood, the co-founder of Stack Exchange (inclusive of Stack Overflow), Discourse is more in the forum vein than a chat room. It has the capability for real-time chat, but the bread and butter is QA style posts. It's designed to emphasize intuitive and open functioning, with visual feedback and daily or weekly summaries.
Unlike other choices, it indexes into search engines very well, and can be viewed publicly without an account. But if you do want to create an account, it's frictionless - especially with GitHub and Google auth. But the most important thing is that it is discoverable and when people arrive, they can just read and search.
It's also very focused. With a few tweaks, the UI can be trimmed down to a single dimension. Add tags and decent search on top of that, and it's an easy going experience. But is it good? The best?
Any forum or app is only as good as the team giving responses on the other side. The QuestDB team puts a ton of effort into generating responses. Getting those responses into the public spaces means that our hardwork won't fall into a blackhole after 90 days.
Given the very reasonable costs involved for official hosting, Discourse separated itself as the natural choice for providing strong, friendly support for those diving into QuestDB. And we also love the SEO benefit that ensures that effort rewards our team with growth, too.
Summary
Slack is a dynamic communication hub for teams and enterprises. But it's not a great place for public developer communities. After looking through the alternatives, we felt that Discourse was the best bet to help our community moving forward. It'll help us grow our overall presence in search engines and save many introverts from having to join a busier chat room. (We see you! But we're not staring, promise.)
For those who love the Slack experience, we have no plans to close our public Slack. We'll continue to support both, until perhaps Discourse's real-time chat experience provides that same degree of stickiness. If your team is feeling pushed out by Slack's recent changes, consider Discourse.
And hey, got a question? Like forums? Check out our public community forum!