Mattermost - a review
Wed Feb 08, 2017 · 1442 words sucks

Let's get this out of the way - if you think you're happy with just using Jabber then you've either not tried anything else or are not paying attention to your users. Although Jabber (either with macOS Server or other) + could be considered “better than nothing”, it is actually worse:

Most of those can be blamed on poor clients, but some I believe are shortcomings of the XMPP protocol itself. By far the biggest of those for us were the first two. I would love to still love, but it's simply not good enough. So it was time to try…


We did a trial run of Slack and everyone liked it. When we decided to roll it out for the whole company, I realised I would have to bind it to our Active Directory server. This meant A) syncing our AD to one of the supported identity providers and B) paying Slack $12.50 per user, per month (plus whatever the identity provider charged) for the privilege.

With roughly 60 active users and growing rapidly, that would have totaled at around $9000/year; several times more than what we currently pay for our entire email/calendar platform (Kerio Connect). In fact that's almost our entire Office 2016 licenses annually. For one service. That's simply not a good deal, no matter how you slice it.

Our current Mattermost license costs us $1200/year and that includes AD single-sign on, push notifications for mobile clients and tech support, which I think is more than reasonable.

There's a pretty good comparison table between Slack Plus and Mattermost here.

On-prem rocks

I'm a big proponent of on-premises installations. And not only because it's fun. Moving services to the cloud because “then it's someone else's problem” is myopic - when it breaks, it's still your problem, except you're helpless. Cost may have been the reason to explain this change to management, but from a sysadmin perspective, running this service and being able to freely integrate it with any local system was the main motivation.

I think the current generation of admins moving everything offsite is doing a huge disservice to the admins of tomorrow, but that's a rant for another blog post…


Installing the server (or “the platform") was pretty straight-forward. This was in large part thanks to the helpful and well-written documentation. The stack itself is a pretty typical modern realtime web application with logic written in Go and JavaScript, using MySQL or PostgreSQL as a database and a web server as a proxy. Although I'm pretty sure you could get it working under FreeBSD, I chose to go with the (rather excellent) docs and set up an ESXi virtual machine with 4GB of RAM and CentOS 7.2, PostgreSQL 9.5.5 and nginx 1.10.2.

Mattermost System Console
Mattermost System Console

Configuration is nice and easy through the web-based System Console or by editing the config.json file, although I would also like to see an option to push settings to the clients. There's also a CLI, but I haven't really looked into it. Being an Electron app, you will not be able to manage Mattermost's preferences with your usual tools (defaults, profiles) and Mattermost should really update their documentation to cover enterprise administration.

Initial testing (with version 3.4) went smoothly, but when we moved into production and started on-boarding everyone the Mattermost server would suddenly start crashing. I still don't know exactly what caused it, but I'm happy to report that's the only time it's done that. I have not had the Mattermost server crash since.

The apps

Just as with Slack, there are three ways to access the platform - desktop app (Mac/Win/Linux), mobile app (iOS, Android) and through a browser.

Mattermost Icon
Mattermost Icon

The desktop app weighs in at around 116MB, 108 of which is taken up be the Electron Framework (the same thing that Slack is built on). Remember when you could fit an OS and a drawing application on a double density floppy? Yeah, progress… But I digress… It's a typical “WebView-type” deal, much like the Slack app. And apart from a few keyboard shortcuts, running it through the app wouldn't be that much different from running it via, say Fluid, except of course this also includes a full copy of CHROMIUM, NODEJS AND A FRICKIN JAVASCRIPT ENGINE.

The desktop app is not that great and you really do feel like you're just using a web page with a dedicated browser. I've run into several UI bugs, the shortcuts don't make much sense (Alt+Shift+Down arrow to switch to the next unread message, Cmd-S to search, etc). The prefs are about as basic as you can get:

App Preferences
App Preferences

That's mainly because most of the settings are actually under Account Settings:

Account Settings
Account Settings

When you get a notification, you can just click on it on the iOS app and that'll take you to the messages, whereas there's no easy way to jump to a new message on the desktop. And I've yet to figure out how to keep my phone from firing notifications if I'm chatting on my laptop. The whole UI feels like it was designed as a web page, which oddly, also lets you do stupid stuff like this:

Resized Window
Resized Window

Another shortcoming of the apps - permalinks to posts always open in the web browser because the links use a https:// scheme and the apps don't define their own. This is super annoying because users aren't typically logged into the service through the browser. There's also no way to “jump” to a URL inside the app.

That being said, our whole company is using it and I haven't heard many complaints from users. Perhaps the biggest negative surprise we've found thus far was that, unlike with, where you could just select multiple users to chat with them at once, in Mattermost, the only way to chat with multiple people is through a named chat room.

On the upside, the desktop client has been really stable - I don't think I've had the client crash once over the 4 months that I've used it.


I started with version 3.4 and have since updated the server twice. Both updates went without a hitch, again thanks mainly to the great documentation. The desktop apps have only been updated once and they have so far been forward-compatible with the server (a 3.5 client can connect to a 3.6.2 server). Compared to the frequency of Slack updates, the lack of updates for the desktop apps is a bit worrying, but the company assures us updates are on their way.

Customer Support

I've only had to contact customer support once so far and the experience was a bit odd. First they didn't seem to know who I was (even though I ordered the license from the same email address) and then they asked me for my customer number (which was never mentioned anywhere). All communication is done via email and there is no customer support portal to log onto (which can also be a good thing). The followup email acknowledged my existence, but seemed to have completely forgotten the initial question. Eventually I did get an answer, but the process felt like they were just setting up their customer support operation and hadn't installed their CRM/ticketing system yet.


Mattermost is far from perfect, but it works well enough and solves a real problem. All in all I'm happy with the decision and can only see things getting better. Although Slack's client apps feel much more polished, Mattermost has proven to be stable and taking the whole system from zero to production took less time than figuring out how to securely sync our AD domain to one the cloud providers supported by Slack. The open source community around the project seems vibrant I'm looking forward to further developments and hopefully contributing to the project myself.

I also like their business model and really hope that it works out. If you're looking for a modern on-premise chat solution, definitely check it out. Their name may be silly, but the product is not. ;-)

Pros (in order of importance):


back · essays · credits ·