Exploring new communication channels

TL;DR: some Rust teams are trying out the Discord chat platform for team discussions. You can join here.

With open source projects as big as Rust, the people involved have a variety of communications needs. These can largely be categorized into “synchronous” and “asynchronous” methods, each useful for different things. For example, in the early days of Rust, we had #rust on Mozilla’s IRC network for synchronous communication, and the rust-dev mailing list for asynchronous communication. As we’ve grown, we’ve changed in many ways, and communications is one of them. rust-dev no longer exists, and was replaced by this forum. Furthermore, we have “official” spaces run by the project, and “unofficial” spaces run by others. The /r/rust subreddit is a good example of an unofficial space. One of the earliest channels, as mentioned before, is IRC. At first, it was only #rust, but eventually grew. In 2015, we had 53 channels! Many more have been created since.

We’ve experimented with other chat platforms in the past; all have their pros and cons. We’ve also had discussions in the past about switching to other platforms. One thing that’s become clear in these discussions is that no choice will satisfy everyone. IRC stays today due to inertia, but the core team is increasingly unhappy with it for a variety of reasons. We tried Gitter for the impl period last year, but ultimately it didn’t work for us either, due in part to persistent bugs.

The latest experiment the core team has tried is Discord. Like all platforms, it has its problems, but also several significant advantages:

  • Users are persistent without needing a bouncer.
  • Both web-based and desktop-based official clients exist, so you can install a client if you’d like, but aren’t required to. Phone apps are also available.
  • Rich media is supported, including voice-based (and eventually video) chat, which help facilitate meetings.
  • Discord has strong, clear, and easy-to-use moderation tools.
  • The Discord team has been very responsive to requests and is interested in supporting the Rust team.

The core team has moved over to Discord for the past month or two, and had a positive experience. Subsequently, some other Rust teams and working groups have also chosen to move over. No overall decision has been made, and each individual team is choosing where to conduct its business at this time. The IRC channels remain available, and people are generally reachable from either location.

Churn in chat platforms is painful, and the current situation — with some channels existing in both IRC and Discord — is not great. We plan, after the 2018 Edition is finished, to revisit this topic more comprehensively, probably with an RFC of some kind. In the meantime, though, many of the teams have found the productivity boost to be significant enough to warrant moving as we work to ship.

If you’d like to try out the Discord, https://discordapp.com/invite/rust-lang will get you going!


But why Discord and not Gitter?

  • Guest users can read Gitter chats, without login. But on Discord, you have to register to read chats.

  • Gitter is open source https://gitlab.com/gitlab-org/gitter but Discord is proprietary

  • I am a fan of dark UIs but even for me Discord dark UI is bit awkward, too many components. I know it has a white theme. But Gitter UI is simpler and easy to use.

  • https://gitter.im/rust-lang/rust was really active even on weekends, compared to IRC


It’s in the post:


Use a free communication system like Matrix or Gitter. Discord is unacceptable for a FLOSS project

We already use GitHub, a proprietary platform, to develop Rust. We love open source, but are also pragmatic. (Gitter, again, is discussed in the post.)


Discord also has extremely poor history functionality, and core team and other team records are important historical and technical resources. Moreover, discord isn’t self-hosted, has poor import export, and could disappear at any time. It’s a much worse situation that GitHub in terms of ephemerality. I can always go to the PR’s and tracking numbers, and a number of sites such as GitLab have excellent import and mirroring functionalities.

I use Discord, for what is made for, to post memes and yell insults at other gamers, not for the discussion of record for a progamming language.


Have a look at https://zulipchat.com/, it is FOSS and seems to do well with its topic threading for IM, it has clients for web, android and iOS.

Web interface has support for keyboard shortcuts.


I am using discord for a long period now. And have not experienced mutch bugs. And it is a nice platform to use. But I am a bigger fan of using telegram for chat communication why?

  1. Supports Android, IOS; Windows, MacOs Linux and all web browsers. The computer software also works when phone is not connected to the Internet this is a very handy feature. And also no need to re enter credentials and stuff.
  2. You can create own bots for a chat. That can do whatever you want with that chat. Like welcoming newcomers, forwarding RSS feeds from the interwebs. And all that stuff. The bot works with the telegram API for may language there is already some library which wraps the API.
  3. Also options like managing administrators with different rights, able to mute a channel. And messages that can be removed editted by the user. Banning removing and managing users are also working very nice.
  4. Options to allow users to chat or only read. Options for private groups an public groups.
  5. Lightweight simple chat app.
  6. Safe communication encrypted and all that stuff not that it is really needed for rusy, but still.
  7. You can even create own sticker packs, and adding exiting bots.

There are many things I like about this platform. Defenatly worth to look into instead of discord. One downsight is that you need a phone number to be able to use it.

(currently I host a rust group at telegram: https://t.me/RustTalk , if you are interested to join :slight_smile: )


I’m using Telegram for all of my personal communication and I really like it, but I don’t think Telegram is a solution for Rust’s communication at all. There is no notion of a “server” or “collection of channels”. Additionally, one needs a phone number to start chatting. I don’t think that’s acceptable.


Personally, I feel that there are a few things to unpack here.

I do feel that using a proprietary platform, with a relatively poor emigration story (a differentiating factor vs. GitHub), is problematic on various levels. In particular, should GitHub turn out to be awful, Rust could leave. It could pick up its repos and tickets, and go to GitLab or BitBucket or some other platform. It’s a well-understood process, with strong documentation.

Meanwhile, if Discord turns bad, what are the options available? How will the community history of Rust be maintained in such a situation?

Furthermore, I feel that this assumes that there needs to be a hard choice of one chat platform - and I don’t think that holds true. In particular, there exist a number of bridges from Matrix to other platforms, including a rather advanced and actively developed one for Discord itself. There’s also a bot made to automate bridging a Slack team with Matrix, and an IRC bridge that, while not perfect, is good enough that I currently use it as my daily driver.

Furthermore, Matrix is an open spec, with open implementations, and a federated design. It’s designed to be open, all the way through.

If Matrix was the “hub” of Rust’s semi-realtime, text-based chat presence, there’d be no need for this dichotomy of IRC or Gitter or Discord or

Matrix lets all of those "or"s be "and"s.

EDIT: Also, one can get paid hosting via UpCloud, who host the Matrix.org homeserver itself. Running your own infra is not mandatory, though it is (unlike Discord) at least an option.


That is one downsight indeed that you need to have to enter a number.

I think you are deeply underestimating the tie-in to GitHub we have. It would be much easier to transition to a different chat platform than Discord compared to moving from GitHub to something else. The reason is simple: We have a lot of tooling such as @rfcbot, @rust-highfive, @bors which all assume GitHub and their APIs. If we migrated to GitLab, @rfcbot would have to be rewritten from scratch. Similarly, we have a lot of resources which use absolute links to GitHub.. All of those links will either be updated, or they'll be dead.

Meanwhile, moving to Gitter (if the bugs cease to exist..) if Discord turns out to be bad is something that can be done easily and the migration of people will just happen naturally (as happened when we migrated some channels from Gitter to Discord).


This is true; we do not currently have much in the way of tooling built up around Rust's chat presence. But is that going to continue to be the case? Will we develop tooling around the chat platform we end up on?

We would also, if we made Discord an official platform, have resources that link to that directly. The current lack of direct links to chat platforms is half "Rust doesn't emphasize its chat platforms" and half "IRC has pretty poor support for links".

And this is where my other point comes in - why the focus on one or the other, on the need to migrate? Why not have a hub-and-spoke system, such that Rust conversations are accessible from all of these platforms as is convenient to users, centered on a system with much stronger openness in both design and philosophy?


I rarely use chat for support, so give this comment half a vote, but when I did, I really liked the low friction aspect of clicking a link and dropping into the web-based IRC client.

I totally understand people’s concerns around

  • Permance
  • Access

I really like the idea of using Matrix as distribution mechanism and letting the users doing the communicating choose their own networks and tools. I just ran across Matterbridge a tool that can allow literally any chat system to connect to any other chat system.

At least for a PoC, one could sync messages from Discord into Matrix. I have no idea how user Identity would be handled across all of these bridged networks.

Big ++ for Discord. The “native” (cough electron) app is pretty great, and surprisingly lightweight on my laptop even though it’s carrying an entire Chromium (definitely beats Slack here). The UX tops any other platform I’ve used before, for sure… though there’s no good curses client that I know of.

I’ve also had really good experiences bridging Discord; I maintain a server bridged with MIT Zephyr, which is somehow even more archaic than IRC.


I'd like to clarify several points regarding Discord usability that were brought up:

That's not entirely true. The only thing you need to read chats on discord is a have a username (that does not need to be unique across the whole discord population). As an experiment: open a private browsing window in your browser and go to The Rust Programming Language. Enter a random sequence of characters as your name. Voila! You can now read the chat!

Discord saves all the history, and has a decent built-in history search support. It is feasible to make a bot that would back up all the history if you wished to.

This is my personal opinion, but I don't think chat logs (be it IRC, gitter or discord) are important enough to cause damage in case they are lost. They are primarily useful for near-real-time discussions and instant feedback. Any summaries and decisions resulting from said discussions should be posted in lower-traffic places such as github issues (or this forum).

That said, again, there are means to export the history in case you wish to abandon the platform.

All the points sans the last one stand for discord as well. (It does not feature e2e encryption, but I think neither does telegram by default, and not for group chats. Regardless, as you've mentioned this is probably less needed, given the desire for the chat to be publicly accessible).

Near-real-time chat platforms as a whole have poor support for links. Discord technically supports those, but I've never seen people actually use it. So I'd say the fear of people sharing links to discord discurssions and those links becoming obsolete is unfounded.

Again, it's much better, instead of linking to conversations held at fast-moving chat platforms, post summaries of said conversations instead.

This low friction aspect is also present for discord. Again, just go to The Rust Programming Language, enter any username (as you would in irc), and done. It is true that you need to confirm the email to chat (i.e. to send messages), but that is because Rust team set up the server this way, not because it's discord's will. In other words, the email verification can very easily be turned off if Rust team wishes so.

Note, I'm not saying that Discord is an ideal platform, that's strictly better than all the others, but merely that some of the criticism and perceived inferiority to other platforms is not entirely true.


FWIW, I find the fragmentation here annoying. In order to follow Cargo, it’s pretty recent that I moved from being on the IRC channel to Gitter, and then I saw a message last week noting that stuff was now in Discord. Then I see messages about NLL happening on Zulip, and I wonder what this community has gotten itself into.

I see how it makes sense to try different things, but it would make much more sense to me if there was a bit more coordination (and stronger leadership on this subject?). Keeping track of 4 different chat platforms is a pain and will definitely increase barriers to participation, so I hope this number will be reduced again ASAP.


Honestly, I don’t really care much, but Discord does appear to be better than IRC for our purposes (discoverability of channels, persistence, etc.). I am generally in favor of every kind of incremental improvement, even if it might not be “the largest possible improvement that we could make right now”.

If Discord doesn’t work out we can always move to something better afterwards and keep improving the situation. What we shouldn’t do is move to something worse.


So, I have experimented with many of the chat options available, and so far I believe Discord is the best pick.

  • IRC: traditional and simple, but hard for newcomers. Having a bouncer is not trivial, though if you have one IRC isn’t much pain.
  • Gitter: poor experience. It doesn’t get much feature addition, nor bugfixes. The clients in general are not very good.
  • Discord: large userbase, which means that: it scales (and is highly available), has a business model that works, and the clients works perfectly. It also has channels inside “server” which allows you to discover working groups or teams easily, though the lack of threading hurts a bit. Also it’s proprietary, but at least I don’t have much to complain about their UX.
  • Zulip: supports threading, and sponsors open source. The design IMO isn’t perfect, and experience on mobile is poor. It doesn’t have a concrete business model, and it hasn’t been mature enough (on some side it’s half baked).
  • Slack: supports threading, useful for team (not public) discussion, but it has records on kicking out free plan customers who has a large amount of users. Large userbase, good clients and HA, but there’s no SSO or permanent invites which may be an obstacle to join.
  • Telegram: lightweight and has great open source clients. Though there’s only little localization effort being put in, and the search isn’t the best around either. Requires phone number for an account, which is an obstacle.
  • Matrix: mixture of half baked code, in other words a failed GitLab model. It tries to bake in all the buzzwords (federation, bridges) to a big bloated spec, while the spec itself has many performance (bloated user sync, relies on long polling)/feature (no editing) issues that are yet to be resolved. While it’s still being funded, the development is entirely blocked on single leader and hasn’t really progressed in 2018. I left Matrix and switched back to my own IRC bouncer instead because of poor server performance, poor clients, bad uptime, and stuck development model.

Yes, this matters to me more than the merits or downsides of any particular system (though the do have impact). Suddenly Discord is yet another thing that I’m supposed (to some extent) to look at regularly. (Or worse, keep permanently open.) I’ve already found week-old pings in it due to someone asking me question because they see me "being there" just because I opened it once.

It was Gitter and now it’s Discord. Will we move again in a few months to another system?