Team communication is very important. Without good communication, a project will always fail to meet its full potential. Every day we are seeing more instances of remote work and teams spread across large geographical areas. Traditional email just doesn’t meet the needs posed by most modern software development teams.
That is why, in recent years, new chat-based platforms have become a popular solution for team-based communication.
Mattermost is an open source solution that seeks to provide an alternative to other Software as a Service (SaaS) platforms.
I stumbled upon this software when looking for a Slack alternative. My intention was to set up a Slack-like communication platform for a no-budget project I have been working on with a few colleagues.
After some Googling around, I decided I would try Mattermost out to see if it would be a good fit for our project.
Every day we are seeing more instances of remote work and teams spread across large geographical areas.
As software developers, knowing our options for good communication is important.
There are times when a lesser-known product may actually fit our needs better than the more well known tools out there.
Mattermost is both the name of the company and the software solution it offers. They provide a Slack-like chat software that is designed for team communication. It offers a free and open source version, as well as two enterprise editions with advanced features.
This review will focus on the open source version that I tested, though I will also go over the difference in features between the open source and enterprise editions.
There are two enterprise versions: E10 and E20. At the writing of this article, E10 is currently priced at $20 per user per year. Pricing for the E20 edition is not provided on the site. The interface was written using React and the backend was written in Go.
Here we'll break down both versions and their features, so that programmer and developer teams of varying size and different projects can find the solution that best fits their needs.
While open source is not always the correct solution, there are times when it has advantages over its proprietary cousins. Choosing the right product is important to the success of any project, and one should always weigh the pros and cons of choosing an open source alternative before implementing.
The important thing to remember is that a free product that doesn’t solve your problem isn’t a solution.
The server I was setting this up on is actually a small Ubuntu-based (Mint, to be exact) desktop I use as a test server/home theater PC. It runs a 64-bit Intel dual core processor with about four gigabytes of RAM.
Before I began the installation process, I assumed I would be dealing with a PHP based program that would be extracted to my Apache web directory and installed through a web browser.
I was surprised to find that it is, in fact, an executable that runs on a specified port. I liked this design because it allowed Apache to serve my current projects without cluttering up my PHP configuration.
The Mattermost company has provided a very helpful guide to installation that makes the process relatively simple for those with moderate command line experience. They also have a docker image that can be deployed.
The instructions start by having the user install postgres database software, then create a database within it for the Mattermost information. After doing this and configuring postgresql to listen on your Internet Protocol (IP) address, it's time to download and configure the Mattermost software itself.
This involves editing the config file to give Mattermost access to the database you set up initially. You can also change the port that it will be working from, which is useful if your network administrator has blocked certain ports for security reasons.
Once you have Mattermost up and running, there are several different ways to use it. You can access it through the browser by entering your server address and the port number into the URL bar, which will bring you to the web interface. I also downloaded and tested the Linux desktop and Android phone clients.
The Linux desktop client is basically the web interface opened in an application window on your desktop. It didn’t appear to offer any additional features and lacked usefulness. However, the Android app scaled the site to the appropriate mobile design and allowed me to receive push notifications about messages.
Mac and Windows desktop clients are also available, though I did not test them. I did note that their design is clean and simple to use. Multiple teams can be created and each team has multiple rooms to chat in.
Rooms can be created or renamed at will by those with the appropriate permission. Finding the appropriate menus and options was very simple and straightforward.
Any user with any experience with chat programs will find that Mattermost does not deviate much from the standard chat interface.
There are 21 color themes that can be applied to the interface by each user, and it even allows you to set your syntax highlighting rules for code snippets. It also allows you to upload custom emojis (since that's what your team has been waiting for in a chat program for all these years).
Mattermost allows for group chats and one-on-one messaging. You can also send files through the chat bar. The size limit can be set by the system administrator. Once an individual sends a file into a chat room, it can be downloaded by any of the members of that team at any time in the future.
It also has a feature called threaded chatting that gives users the ability to comment directly on a chat statement made by another user. If you reply to a comment made earlier, it will insert an alert at the bottom with a link that opens up a side window that shows all replies to that comment.
This feature is helpful when you want to respond to something that was said earlier in the conversation without explaining which statement you are referring to.
It provides the ability to flag chat statements or comments as inappropriate for the administrator to review.
Though I did not take the time to set it up, Mattermost can be configured to send emails as well, which can be used for email notifications and password recovery.
It supports multiple languages and has an experimental video chat feature that I did not have an opportunity to test.
Greater Security and Control
One of my favorite features about Mattermost is that it is self-hosted. This means that if the internet goes down but your local network is still running, it can still be used by those in the office.
This feature also places greater control and responsibility for security with the local administrator. Rather than being dependent upon a third party's network security, you can rely on your own instead.
Mattermost can also be configured to send out push notifications to your mobile users if you have access to a push service. If you do not, you can use their service, but it does not provide any encryption, so it is not recommended for anything beyond demonstration.
Speaking of encryption, the open source edition of Mattermost does allow encryption, provided you have a TLS certificate to use. And because it is open source, new features can be added to fit your company's needs.
This software features a robust administration panel. It allows you to control basic things like team membership and security settings, while also giving you control of more advanced features like email configuration and push notifications.
You can control who creates accounts on your server by limiting allowed email domains or by having a randomly generated link that allows signups for a limited time. You can limit the maximum number of people per team and control one-on-one messaging as well.
The software has extensive logging abilities. It's worth noting that Mattermost permanently stores all chat information by default. Even when users change or delete their posts in the rooms, the database preserves and logs everything that is posted.
This feature can be useful for maintaining accountability within your teams. You can control session lengths as well as password reset salts. I encourage and support software that gives users (and administrators) more control.
The administration panel for Mattermost allows administrators to have a precise level of control over the user management and technical side of the system.
Because this project is open source, anyone can download the source code and customize it in any way they want. This makes Mattermost extremely flexible, as it can be customized to fit your project's needs.
However, making changes from the source code up can be difficult and time-consuming, and that problem is what makes this next feature so great.
Interface with Custom Programed Software
One of the most appealing aspects of Mattermost (from a developer’s standpoint) is the Application Programming Interface (API), which allows people to interface with the software with their own custom programming. This could be used to make your own mobile app or desktop client. You can also create scripts to automate almost anything.
The API uses basic HyperText Transfer Protocol (HTTP) requests to complete actions. You can log in, create posts, delete posts, update posts, and make administrative changes using any language that supports HTTP POSTS.
Mattermost provides extensive documentation for their API with examples provided for nearly every feature it has.
This helps to make Mattermost stand out of the crowd, as poor documentation is a recurring problem for the open source community.
There are only seven additional features provided in the E10 Enterprise version, but they are useful.
Some of the more notable features included are the ability to sign in with Active Directory credentials, encrypted push notifications through the Mattermosts push server, multifactor authentication, and next-day business support.
The E20 version also offers more advanced features, such as experts who will assist you with meeting compliance standards. True to its name, these additional features prove most useful in large-scale deployment environments with specific needs.
Most small- to medium-sized business and teams will find that the open source version meets all of their needs.
Mattermost impressed me with its quality design and flexibility.
However, the initial installation was more complicated than I liked and should only be attempted by those with moderate Linux and network experience.
There are two main use cases where Mattermost becomes a great solution:
- The first is if you are willing to spend time instead of money on your chat solution. While it costs no money, it will take much more time to set up and manage than other Software as a Service (SaaS) solutions. If you want a private chat room for your friends or for a project that is cash poor and time rich, then you will find Mattermost a good option.
- Mattermost also stands out for those who desire or need a private, customizable, and self-hosted solution. Because it is self-hosted, you can take whatever steps you need to ensure your privacy.
This second feature is important for those who have to meet compliance standards like those defined by the Health Insurance Portability and Accountability Act (HIPAA). HIPAA has extensive rules for any company that deals with medical data.
There are also government agencies that would benefit greatly from a self-hosted option, as they also have specific security needs that cannot always be met by third party providers.
You will also have access to it on your local network even if the internet is down.
If you need to heavily customize or automate your chat solution then the available source code and API will make this possible. For most other use cases though, Slack’s quick setup, ease of management, and polished mobile apps will make up for its monthly fees.
The Mattermost source code is available here. The compiled binary can be downloaded directly from Mattermost.