It is no secret that I love rocket.chat platform (considering they have changed their brand look I will use the same here as well, so the name is in small caps). In case you are unfamiliar with it, look at some of my other articles before getting back to this one.

TL;DR - RC is an open-source collaboration platform aimed to be used as a chat, audio/video, file share, and much more. It is a #SLACK, Microsoft Teams alternative as well as Mattermost (that I will be talking about here).

Rocket.Chat v3.7 with custom theme and channel avatars

So why RC vs. MM? Well the thing is there are several RC-like platforms out there but MM is one of the most popular and both of these can be self-hosted (SLACK and Teams can't).

MatterMost with default and custom dark theme

The idea behind this article is to see what both platforms offer, lack, and have in common. I will focus on several elements that matter to me in my everyday routine.

This article will cover the following:

  • General overview - comparing the platform overall features, ease of use, self-host deployment, resource requirements, etc
  • Chat, audio/video conference, file share, and screen share features - focusing in general what apps can offer in terms of usability, and performance when using these features
  • Desktop, mobile, and web apps/access - how each platform works with their dedicated desktop and mobile app as well as browser support
  • Permissions - mainly the options that both platforms offer in terms of working with user permissions (class/roles)

Another TL;DR - rocket.chat wins in the end :). Well, it wins for me just because of one single thing, but then again it doesn't matter if you win by a foot or a mile right?

General overview

As I mentioned before the main reason I am looking into these two platforms is because they can be self-hosted. So getting them up and running via Docker doesn't take that long at all.

Each of them is easy to set up and requires only two docker containers, the database one and the platform itself.

RC uses MongoDB as it's backend and MM, on the other hand, can work with multiple backends such as Postgres, MySQL, SQLite, MSSQL, and Maria to name the few. This fact alone can be a tipping point for someone to choose one chat platform over the other.

Some organizations might have issues running or using one DB over the other, so having more options is always better. RC unfortunately is working only with Mongo and there is no reference that that will change in the near or distant future. There are old GitHub tickets that are talking about his topic but RC DEV side is not looking to invest time into other DB platform support at this time.

So in short if you are looking at a solution that will give you options to migrate your DB to almost any opensource platform out there, MM is a clear winner here.

For my personal use, this does not matter even though I don't have any other app running with MongoDB.

As I mentioned before running these two platforms doesn't take a lot to get them up and running. For both of them, I have articles linked at the beginning so you can see what needs to be done and how to get them running.

Resource vise both platforms are lightweight. Of course, this will depend on the number of users that you intend to serve. If you will host a lot of users you will probably have to deploy a load-balanced configuration (that I will not talk about).

RC with Mongo and MM with Postgres both use about 500MB/RAM combined (front+back end) when idle. Depending on your needs and using this will vary. The main thing here is that you have a fast DB layer (preferably on SSDs) with high I/O and lots of IOPS.

RC as well as MM will benefit running on SSDs as well but they don't need to run on flash by default.

Both platforms are modern and young (2015/2016), and while RC is developed in JavaScript, using the Meteor full-stack framework, MM on the other hand uses Go as well as JavaScript. Platforms are in constant development and have a large developer community so there is no fear of them going away anytime soon. They both work on all major web browsers as well as desktop, and mobile platforms. The bottom line is you can chat from anywhere.

Chat, audio/video conference, file share, and screen share features

The key factors what platform will win here will be functions that most of us use daily.

In short, both platforms offer a nice clean look at the conversations that you have, public or private, and both also have a decent amount of tools to manipulate your conversations.

Rocket.chat conversation tools

For example, RC has a bit more tools and offers some options that MM does not include so its contextual menu is populated with more options. To name a few are reply in thread and discussions.

In the channel where there is a lot of chatting going on one can lose its place quickly in multiple responses. So reply in thread will offer a visual nesting of any response to that specific message and display them in a smaller font so they don't dominate the main channel.

On the other hand, if you are not looking to just have a quick "side" chat on the matter but would like to engage in a proper discussion, then using the discussion feature will open up a separate channel with a link back to its main channel. With this new discussion channel, you can have a completely separate stream where you can also invite and deny users just like with any other public or private channel.

Another visual advantage that I would give to RC is the fact that quote messages are better visually presented out of the box but nothing that some CSS modifications won't fix. Also, quotes are classified as regular "reply" actions in MM just because RC has the beforementioned reply in thread feature.

Rocket.Chat example of nested replys
MatterMost reply example - not really visible that you have replyed to something until you actually read it

So all in all, plenty of options for chatting on both sides, and IMHO it is all part of getting used to the tools.

One thing that I would argue is better is MM is it's keyboard action shortcuts. For example, if you want to reply or quote something in RC you have to use the mouse and trigger the fast action menu next to the message. Ok not the end of the world but still. In MM you can use the keyboard to quickly respond to the latest message that you got.

Nice collection of Mattermost keyboard shortcuts

This is great if you have a constant back and forward with someone and want to reply to that exact message. With RC you have to break away from the keyboard that in some cases can be a bit of a pain.

On the other hand, both platforms offer quick edit using the keyboard in case you spotted a mistake.

Finally, a few words on file and screen share as well as video conference options. Today having a video conference is important and handy, and for some a must feature. Both platforms deliver on this.

By default, RC has some options built-in but they need to be activated like access to the free jitsi.me platform (hosted by 8x8). Still, if you are not willing to use jitsi, both RC and MM will work with BigBlue, WebEx, and Zoom once you install the features from their "market place" and configure them.

Rocket.Chat video conference settings for Jitsi (and BigBlueButton above)
Mattermost Jitsi settings page

The reason why I mentioned this is the fact that if depending on your conference platform of choice, there is support for screen share this is the way to do it. So if you want to share screen you need to activate a video conference and then activate screen share. Jitsi will offer this out of the box with both window and screen options.

If you want to just share some files you can do that by simply dragging the file on the chat window. Keep in mind that RC in this case has an option to limit the upload size as well as control what kind of file type the users are uploading. This is a great feature that offers admins to be sure that there won't be some users that might abuse this option and cause problems for everyone.

File share - simple drag and drop

In this category, I would give my vote to RC. The reason is that in this version MM is very limited when it comes to some features and options that RC has by default that IMHO should be there.

Desktop, mobile, and web apps/access

If you can't have access to your chat platform from any device known to mankind you are not doing a good job right? Well MM, and RC are covered. You can access them using your desktop computer, mobile phone, or tablet.

Example of iOS app. Mattermost follows its theme accross all device and platforms, Rocket.Chat has its own mobile selection of themes

In both cases, some features don't work on each platform or are missing entirely (like RC's E2E mobile encryption that is coming out in the next few days as part of v4.11, finally), but for the most part, it is all there.

Considering that we are talking about web applications their desktop and web apps are the same just packed in a nice desktop UI if you are using a desktop application.

Mobile apps are slightly different and are optimized for the platform of choice (iOS/Android). This is one of the reasons that some features are missing or not working. Another example is the channel avatar that is visible in RC on desktop and web, but yet on the mobile app (developers have confirmed that it is coming).

One more thing to note here is that RC mobile app does support themes so you can use three of them (light, dark, and black) but unlike MM that mirrors your desktop theme onto their mobile app, RC has not followed that model. Both platforms can be modified utilizing CSS and MM, as I said, mirrors this across their entire eco-system. Point for MM in this case. Finnaly, the feel of switching channels and general navigation in MM is a lot more quicker and with fast and smooth transitions. RC, not so much, but is getting better with each new versions.

Still, from a function perspective, both platforms work well on their mobile platforms and are in constant development. If I'm being honest, MM is better looking then RC if esthetics is something you are going for.

Permissions

This is the section that was key for me. The idea behind these types of platforms is the same as it was (is) when it comes to IRC, Teams, SLACK, or Discord platforms, its user roles.

Well, if we want to focus on roles in both RC and MM (team version that I'm talking about here) this is not even a competition.

Mattermost (team version) has these user roles, thats it.
Now that is what I call permissions settings (check the number of pages!)

MM has two roles, member and team admin. This might look like enough but once you realize that a team member can create edit, rename, and even archive public channels, you realize that that specific role has too much power. The team edition of MM has no option to limit roles what they can and can't do.

RC on the other hand has a lot of roles, twelve to be exact. On top o that there are 120 (yes that much) options that you can activate or deactivate for each role. So imagine how much control you have. Did I mention that you can create your custom roles as well?

So, permission is the only reason why I would recommend someone using RC over MM. Everything else can be tweaked, modified, and extended but permissions in MM (team version) are just not up to the task. Even if you are building a server that you will use outside your company, so for private usage for example or maybe you want to run an anonymous chat platform, RC is a clear winner here, by far.

Conclusion

Now, there is still a huge part of features and options on both ends but the fact is that, as I said at the beginning, these are the main feature and elements that are a key factor for me. Of course, the fact that they can be self-hosted as well. Considering that MM doesn't offer a lot of features and options out-of-the-box I won't go and try to compare it to RC, but I think you get the idea so far.

Still, RC sounds like it is too good to be true right? Well, there is one thing that might give you a bit of a problem and those are push notifications. Before I go own I would like to point out that this reflects on mobile notifications only, not your web or desktop notifications.

I have written about RC push notifications changed a while back, and I can say that their 5000/month limit can be reached very quickly even on a server with only a few active users. This will of course depend on their configuration of notifications. So if each user sets a notification for every message, you can see how quickly that quota can hit 5000.

If you want to use push you can change your plan with RC (considering that they are hosting the push gateway), build your own (but you will have to build and compile mobile apps as well), or simply not get over 5000 notifications once you hit your monthly limit. So, all in all, nothing major but just bear in mind that push notifications will have to be managed and if that is a key factor for you, read up on the linked article and up-to-date documentation on the RC site.

Hope this was informative for you and if you made it to the end, congratulations. Feel free, as always to comment and ask questions in the comment section below.