Introducing Discourse Chat (PRE-ALPHA)

Three years ago we published a blog post about how Discourse and the long-form forum paradigm can co-exist with the short-form chat paradigm:

This kind of tooling mashup works, but it has some flaws. You end up with:

  • Duplicate user directories
  • Competing forms of private messaging
  • “Where does this message belong?” uncertainty
  • Poorly integrated tools for content gardening

One of the most upvoted HN stories of this year was a post about forums being superior to chat:

https://www.mooreds.com/wordpress/archives/3451

The very first paragraph immediately exposes the problem we’re now trying to solve for:

Hot take after a year or so of trying to build a developer community. If you can pick only one, use forum software rather than synchronous chat software for community building around a developer platform.

Community builders shouldn’t have to pick between the two as if they’re mutually exclusive. It’s a false duality. Ephemeral vs permanent, short-form vs long-form; these are merely different modes of communication with subtle differences in utility. They still serve the exact same purpose of communicating with people.

Minimum viable community

Get two people in a chat room together and you’ve got yourself the beginnings of a healthy community. As long as there’s some chatter on a regular basis, the room will come off as lively and inviting to other prospective participants. This is a great onboarding strategy in the early days of a community, but there is a hard limit on how far it can scale. Doing things that don’t scale can be a winning strategy for startups and burgeoning communities alike; the key is knowing when you’ve outgrown your initial growth strategy.

The bigger the community, the more you need the standard (and only) Discourse interface to date. But at the low end of users and for Day-0 upstarts, the biggest hurdle isn’t to keep the party orderly but rather just to get the party started. And we know for a fact that chat does better at these small sizes.

In other words, chat solves the “Somebody say something!” problem:

Historically we’ve been deferring to chat platforms for Day-0 communities, with relative success: At scale, most chat communities organically discover a need for a more structured counterpart to their chatty firehose, so they eventually come calling.

This has allowed us to focus on being the best tool available for discussions at scale. However, by not being the tool of choice for most greenfield communities Discourse often finds itself in the very tough position of being an additional comms tool, further down in the stack.

Moving up the stack

To address our untenable position of having to introduce Discourse to communities years deep in chat inertia, we’ve begun working on something rather radical:

This plugin is now enabled for testing on a private category here on Meta. We will be chatting together in this closed space in much the same way that the MVP of Discourse Chat will be introduced to existing Discourse communities: Staff chat.

One of the complicating factors of communicating the long term plan for Chat is that we are inevitably targeting two separate markets:

(Mostly private) chat for Team-work
(Mostly public) chat for Communities.

These two verticals are largely identical; solving for one also solves for the other. Whether you’re kicking off a team project or a community, you need a good staff chat for your primary stakeholders to stay coordinated as well as socially connected.

Early access

There are currently two ways to play around with Chat:

  1. Install the open source plugin on your self-hosted install. While we don’t recommend it for production use just yet, we are already running Chat on our internal team instance as well as Meta.

  2. Join our private group for chat testers to chat with us here on Meta. Anyone can request membership. Self-hosters are also encouraged to share their feedback in here.

Chat will go fully public on Meta in late December / early January.

96 Likes

Ooh, very nice. This is a must-have feature for my site, and I have a custom plugin to wrap Rumbletalk at the moment. Having it be part of Discourse core would be a definite plus.

6 Likes

This is probably getting way ahead of things, but — is there any thought of bridging?

Because while I love Discourse, the last thing I need is yet another source of instant messages. In Fedora, we’re in the midst of moving from IRC to Matrix. This would be very useful if we can bridge to matrix… and going in the wrong direction for communications fragmentation if we can’t.

9 Likes

Awesome decision. A game changer for adoption of Discourse.

6 Likes

Bridging is planned, albeit in a limited capacity. We’re looking into replicating what @merefield put together for Discord for other platforms.

10 Likes

Of course, the most exciting thing from my point of view would be for Discourse chat to act as a Matrix homeserver and Matrix client, rather than having a new separate protocol. But simple bridging would be okay as long as it’s relatively seamless.

6 Likes

Hey, just a quick question. Is this plugin a permanent overlay to Discourse, or is it just in the places you chose for it to be? That is, if you choose to install it, will your entire community change to that, or will it only change in the categories you select?

3 Likes

Congrats on the first publicly accessible release.

For our goat farmers and cheese makers community, my master plan long term is to move some people who spend time in Facebook for chats only over to our Discourse community.

For the professional Jai programming language developer online community I’m building from ground up, my plan is to demonstrate Discourse Chat as an alternative to Discord chat.

For some of my clients who use Slack basic features only, I already managed to move project management over to Discourse, but once this plugin becomes stable-ready-for-production, I’ll start offering it as a complete Slack replacement.

Finally, my big-dream-almost-unrealistic plan would be to convince Toptal management to abandon Slack and move onto Discourse completely. Slack sucks big time by not giving a way to organize knowledge into searchable, collectively editable, categorizable, watchable threads.

9 Likes

Very interesting news, thank you.

My first thought was… time to polish emoji reactions and support them officially?

I swear I’m not kidding.

(Yes, Retort - a reaction-style plugin for Discourse exists.)

5 Likes

There is an official plugin similar to retort

9 Likes

My suggestions. I have not actually tested the plugin yet, but I find these even more important than bridging (also useful):

  • Allow access to the chat by group.
  • optionally Allow r/w access to the chat by anonymous.
    • Allow groups to have their own chats
  • Optionally remove chat comments after X hours / days / weeks by group
  • Optionally Allow sidebar visibility for tags / groups in chat
  • Make it easy for someone to “convert” comment(s) into the body of a topic, perhaps by trust level/group. Perhaps handled by flagging.
  • Convert comments(s) into reply on an existing topic would also rock by trust level/group. Perhaps handled by flagging.
  • Tags within chat
  • If a group is mentioned which allows a user to join / request membership, allow that person to immediately join / request group membership from within chat.
  • Contact Discobot directly within chat, both publicly or convert to private message.
  • Assign chat visibility to relate to a particular topic / reply / tag for a duration
  • Allow users to quickly mention existing posts within chat.
    • If a post mentioned gets a heart in chat, add that heart to the original post as well (assuming such an action is supported, lol)

Search topics/posts integration
It would be interesting to add automatic searching when a user is attempting to post in chat, so when they type: Hi, I cannot find music... music post they need automatically appears as a link.

Moderation.

  • Slow users posting too much in chat.
  • Allow group/trust to ignore a user/group in chat permanently (all of their comments are no longer visible once ignored)
  • Flag / Silence / Ban user within chat.
  • restrict words if blacklisted
  • allow attachments by group

Anything encouraging others to join up or expound within a larger post appreciated.
Tag support would also allow chat integration plugin support, covering all existing Discourse bridging.

10 Likes

A post was merged into an existing topic: Small feature requests

Only the ones you select! :ballot_box_with_check:

6 Likes

This is awesome! But as others suggested, having yet another source of instant messaging can be problematic. Although I love IRC, I think a better integration would be with XMPP as its federation is larger. I would not go the Matrix way, because Matrix federation is so greedy. There are good bridges between Matrix and ActivityPub and XMPP and ActivityPub being worked on.

1 Like

The chat uses slug of category as name of that channel. That is not perhaps the best solution?

3 Likes

I’d like to re-frame the problem.

For some reason, people see this Chat feature as a +1 source of instant messaging. Instead, I’d suggest to primarily see it (at this stage) as a replacement for existing instant messaging platforms that don’t give a way to organize knowledge into searchable, collectively editable, categorizable, watchable threads.

In fact, Discourse Chats is capable of not just replacing an existing platform functionality wise, but also eliminating the old platform, thus decreasing the number of platforms you use, not increasing it.

So, for example, if you’ve been using Slack basic features (mostly simple chat), you just stop using it and start using Discourse Chat – now you have -1 platform to think about and to integrate with.

Same goes for Discord and other “heavy” chats. If you only ever used it for simple stuff, you’re now better off migrating to Discourse Chat and discarding the old platform. Not only will it decease the number of platforms you use, but it will also make your chat integrate with your forum / wiki / knowledge base / documentation / project management more tightly.

On the other hand, if you’ve been using Facebook Messenger that integrates tightly with Facebook, and you need that, why would you consider to start using Discourse Chats and thus adding one more source of instant messages? You should not until Discourse Chats can integrate with Facebook Messenger and let you use the latter through the former, i.e. without leaving the Discourse Chat.

Same goes for Telegram, Viber, and whatnot.

So my advice would be to re-frame the problem and to think about the Discourse Chat feature from a different prospective. It’s a great opportunity to start using less tools/platforms, not more of them. That’s how I’ve been thinking about it all time from the very first notion about the Chat feature from the Discourse team. And it’s actually very exciting.

23 Likes

This only seems possible if you are talking about a very small group. I have Slack, Matrix, Keybase, Telegram, Signal, Google Chat, Twitter, Discord, Mattermost, and Rocketchat just to communicate with co-workers. Not to mention IRC, although Matrix bridges mostly take care of that. Oh, and Zulip. There’s probably more. And that’s not considering friends, family, hobbies. Literally all of those are for work-related communication.

Most of those are “capable” of replacing most of the others, but they do not. Instead they accumulate.

Famously…

Note the parenthetical, which directly mentions instant messaging. This is why I very strongly hope any new things on the pile at least intercommunicate — and do so using an existing standard.

Don’t get me wrong — sure, try something new. But for me, the only really compelling new thing at this point would be interoperability.

6 Likes

All correct except that it has nothing to do with the idea I tried to convey. Maybe I failed to explain. Might try to explain in different words sometime later.

4 Likes

@RGJ

friend something GIF

In all seriousness: I think it’s a great idea to integrate a chat into a discourse community. In our forum we ended up only using one single channel in Rocket Chat via Communiteq integration as well as for internal communication concerning one time questions which don’t have long term value.

The only reason we are not expanding is because the chat might
a) cannibalize the activity in the forum
b) chats end up in long form discussions which are more suited for the forum

IMHO: I think there are great chat platforms out there if there is a more complex and extensive demand in a community. Hence I would love to see a more KISS chat integration that might as well act as “Private Messages v2” and later on replace the current messages UX/UI in the long run.

8 Likes

I’m not fan to chats, but it is just me.

But how expensive is this? Meaning RAM, processors and storage.

7 Likes