Which Chat Platform Should I Use?

Slack vs. Mattermost vs. Gitter vs. Discord

The Great SIG-Game Chat Debate of 2016–2017 (source: Jacob Fischer)

As senior developers of MS&T ACM SIG-Game, Jacob Fischer and I are often concerned with the efficiency and productivity of our student developers. Previously we mainly communicated through face-to-face meetings and emails, but a few years ago, we switched to Slack for communication.

MS&T ACM SIG-Game’s logo

Initially, things were good. Communicating was easier than ever and using a instant chat service was definitely something that was missing from our development strategy. As we started to use Slack more and more, issues started to come up. We decided to investigate the different chat services available to us, leverage the pros and cons, and decide if we could replace Slack with a better solution.

Our Requirements

Because MS&T ACM SIG-Game is a student software development organization, we had certain requirements for our prospective chat service that might separate us from other use cases of chat platforms

Our requirements for a chat service were:

  • Free — Few resources as a student-driven development team
  • Private channels — Semesterly competition discussion
  • Markdown/Code formatting — We talk code a lot
  • File & Image upload — Sending code files and pug images
  • (Optional) Robust permissions — Lots of users with varying access
  • GitHub integrations — Our code is on GitHub
The first choice

Slack

Slack was our original choice because it was the most obvious choice at the time. I had used Slack on a co-op and it seemed to suit our needs. The shortcomings of Slack became visible once we started to have a lot of activity on our server.

Pros: Slack does have one of the more robust and expansive libraries of integrations; most of which suit our needs perfectly as the integrations are designed for developers and teams. Slack is also the most professional and mature modern chat platform.

  • Integrations — very well suited for teams and development
  • Professionalism
  • Mature

Cons: Since we last used Slack, there has been an update to include advertisements in free tier servers. We are an educational student organization we don’t have many resources to expend to upgrade to premium Slack, especially considering that the number of active users varies significantly throughout the semester. As compared to other services (mainly Gitter and Discord), there isn’t much flexibility in the server permissions.

  • Ads (Free)
  • Simplistic permissions
  • Too expensive for a student development team
  • Limited history (Free) — caused “deletion” of vital history

The issue of limited history was a deal breaker for us and we next investigated alternatives.

The open-source alternative to first choice

Mattermost

After realizing the problems with Slack, we did a search for Slack alternatives and found Mattermost and it seemed to do everything we wanted.

Pros: The big difference between Slack and Mattermost was that because we could self-host Mattermost on our local server, we didn’t have to worry about limits imposed by an externally hosted service. To some (such as Jacob Fischer), this gives a definite sense of control and ownership of the chat platform. Although there were some rendering quirks, having LaTeX and full Markdown available was a decent plus.

  • Self-hosted — No reliance on hosted solutions
  • Unlimited history, users, channels, etc
  • LaTeX and full Markdown

Cons: There is possible concern because Mattermost is self-hosted, as our organization does not have the resources to dedicate people to a specific DevOps or tools team. This causes two potential problems: if something goes wrong, that is time lost in ordinary development, and there might not be the knowledge or expertise to service Mattermost if something were to go wrong. Mattermost also suffered from a distinct lack of polish compared to Slack.

  • Self-hosted — Possibility of service interruption
  • Less polish — Several rendering issues
  • Mobile app — the worst mobile application
  • Unknown— Difficult to get people to join

Maybe we jumped the gun too quickly on leaving Mattermost; however, I believe that we would have had major issues down the road as our own personal server had significant issues during a recent lighting storm, which would have rendered our chat platform useless during a time when it was needed the most.

The worst choice

Gitter

Pros: By far, the best feature about Gitter was the GitHub integration. The integration allowed user access based on repo and organization access. Since we organize our repos and users through the SIG-Game GitHub Organization it made complete sense that those with direct access to the repos could have certain access to channels.

An issue we always encounter in our recruitment is getting people to sign-up with GitHub. We primarily recruit freshmen and sophomores to maximize the time we have to train them; however, most of them are wary to sign up for a service they have never heard of. By linking our communication platform to GitHub, we could ensure that anyone talking about our code has access and ability to contribute to it.

  • GitHub integration — great management of users

Cons: GitHub integration wasn’t enough to offset the numerous downsides. Our code is mostly open-source, so we don’t often need private channels. Each semester’s development is closed sourced, then open sourced at the end of the semester. At the time of our usage of Gitter, a private channel was restricted to 20 users per private channel. We had just over 20, making communication difficult if we had to split up the channels.

Other issues include a general lack of polish — but more worrisome: occasional service outages. We used Gitter for a span of 2–3 weeks and within that time, we noticed that Gitter had gone down twice during times which were critical to our operation.

Finally, not that we have anything to hide, but there isn’t much reason to make 100% of our conversations public and available to those outside of the group. Not all of our conversation is on-topic and we would hate for personal information to accidentally be released if it was not desired for a completely public audience. This ease of access might be great for projects that have a great amount of random external contribution, but in our case, our projects are primarily worked on by our developers.

  • Limited private channels (Free)
  • Multiple service interruptions
  • Very immature — Many hiccups
  • Poor web style — We passed around a custom Stylish style
  • Poor app —Supports only the most basic functionality
  • Too public — No reason for our banter to be as open as our repos

We were quick to leave Gitter, especially after the outages. There is still hope for Gitter, especially for more general open source projects. As of recent, Gitter was purchased by GitLab, so we hope that Gitter will see an improvement in polish and stability.

The current choice

Discord

Honestly, Discord should have been our second service to investigate. For some reason we had completely forgotten about Discord until we realized that it had many of the features we wanted.

Pros: One of the first things that brought us to consider Discord was the unlimited history. Discord is just as mature and robust as Slack, and there seems to be very active development towards it. Searching and checking to see what someone said in a previous semester is very useful and it was added a few weeks after we started to seriously use Discord. Initially we did not think we’d use the voice chat, but it has proven useful in certain situations; for example, remote code reviews, design discussion, etc.

  • Unlimited users, history, channels, etc.
  • Popular & Mature — Very few hiccups
  • Voice chat — Unexpectedly useful for remote code reviews
  • Extremely robust permissions
  • On-going development — Search was added recently

Cons: One reason we probably didn’t immediately think of Discord is it is very oriented towards gaming and seems to be used in very informal settings. We like to have fun, but we do like to be serious when it comes to our development and were worried that the environment around Discord would upset the environment we are trying to portray to our developers. We have yet to see this.

Every semester, old development is branched off and archived and new development begins. Slack’s archive mechanism was perfect for this and we hope to eventually see this be added to Discord.

  • Gaming culture — Can be off-putting
  • No archive mechanism

In the future we hope to more actively use the voice feature to supplement the normal face-to-face meetings we have — especially for our smaller sub-teams.

Conclusion

For our specific use case, Discord came out on top, primarily due to its robustness, unlimited history and popularity. Mattermost was a close second; however we would most likely want to host it on a virtual cloud such as Google Compute Engine or Amazon Web Services; however that would be an additional expense, plus Mattermost doesn’t have all the features we hope to utilize in Discord (voice chat, grouped channels, etc.).

It should be worth noting that we don’t have much investment into Discord. It simply happened to fit our needs. The only investment keeping us from switching to a potentially “better” service would be the time and effort investment in moving all of our developers to a new service again.

A major thanks to Jacob Fischer and Adam Harter for ideas & help.