In recent times, many workforces and teams across different industries have had to work online and communicate with their colleagues remotely. To facilitate this requirement, organizations readily searched for collaboration platforms to adopt for its employees and their internal operations. While there have been wide adoptions of dedicated solutions for specific requirements like Zoom for video conferencing, generalized collaboration platforms present a different choice for the organizations. In this space, Microsoft Teams, Cisco Webex Teams, and Slack have seen widespread adoption in the recent past. Mattermost is an open-source cross-platform solution for collaboration that is focused on security, flexibility, and integrating with third-party tools1.
Mattermost is driven by the goal of empowering other teams to collaborate effectively. Their guiding principle is
Helping the world build better software by aligning teams, tools, and processes across the entire development lifecycle2.
While it is evident that Mattermost places itself as a tool for developers, they also take pride in showing that they are adopted across multiple industries to help teams. A key part of their product stack is the mattermost-server
component which serves all the other client applications on multiple devices. Since mattermost-server
is only the back-end part of Mattermost project as a whole, it does not have its own product vision. For this reason, this essay is mostly focused on Mattermost project in general. We will try to refer to specificities of mattermost-server
as often as possible.
Key Domain Concepts
Mattermost is a collaboration platform for developer teams. A solution in this domain is focused on promoting seamless communication between team members and offering additional capabilities according to teams’ operations. Through the lens of communication, a user is part of many teams and each team has different topics of discussions ongoing in parallel. In a development team, the typical operations are to track progress of development tasks, monitor tests and application performance, resolve bugs, and integration/deployment of new application features. These form the requirements of the domain space that Mattermost exists in.
In specific, mattermost-server
is a server-side component that is built to serve different client-side applications of Mattermost. These client-side applications exist on different mobile and desktop operating systems, as well as the web. Considering this, the requirement from mattermost-server is to present a common interface for all the clients to use in order to fulfil the previously outlined requirements. In addition, it is also the mattermost-server
’s responsibility to implement the business logic of all the features and manage interactions with the database and the file storage.
Use cases and capabilities
As Mattermost is a collaboration platform, it is obvious to think that communication is the main objective. In reality, it boasts a variety of use cases3 which are made possible by a set of capabilities4. These will be discussed in this section in brief. As Mattermost is primarily geared towards development teams, the use cases that Mattermost presents are development related. Some of these use cases are:
- Agile Development: Ship better code faster with specific solutions for increasing productivity and supporting continuous integration.
- Workflow Orchestration: Build and run automated workflows with deep integrations with other tools.
- Incident Resolution: Resolve incidents in the application quickly and reduce time to resolution with playbooks, notifications, automated tasks, etc.
- CI/CD: Ensure smooth collaboration with the tool and automation for seamless releases.
- Test and Q/A: Ensure visibility for Dev & Ops during the QA process to catch problems early.
- Monitoring: Setup alerts, automatically connect relevant people, processes and automations to monitoring tools.
Mattermost has 3 broad sets of capabilites that enable these use cases. They are called Channels, Playbooks, and Boards.
- Channels: Offer real-time messaging, voice and video call support, file and multimedia sharing, markdown support, and unlimited search history for messages. In addition, slash commands and bot integrations are also offered.
- Playbooks: Prescribed workflows for operations that require reliable repeatable processes. Enablee quick action from teams and facilitate monitoring, broadcasting and reporting in case of important events. This also supports automated triggers to be set up.
- Boards: Project tracking tools for planning and tracking the progress of tasks, milestones and goals in a team. Individual parts of these project details can be integrated with messaging, meetings, custom workflows and much more.
Context
The context of Mattermost can be discussed in two parts - users and component integrations.
The users of Mattermost belong to a few categories. There can be individual users that are part of a small team using a cloud hosted version of Mattermost. There can be users that use a self-hosted version of Mattermost on their organization’s premises. There can also be bigger organizations that use Mattermost and manage their own deployment of the software. All these types of users gain value from Mattermost either from the client-side applications, cloud/self hosted server-side application, or both. Thousands of users can interact with a single deployment of mattermost-server
at the same time, while falling into different categories.
Considering the components, we have a clearer picture. There are three different client-side applications:
mattermost-mobile
: A mobile application written in react-native that runs on iOS and Android phones.mattermost-desktop
: An electron based desktop application that runs on Linux, Windows and MacOS.mattermost-webapp
: A react web application that runs in the browser. All these clients are designed to work with a cloud hosted or a self-hosted version ofmattermost-server
.
mattermost-server
is responsible for providing common REST interfaces that all these three client applications can use. The server component is written in Golang and built to run as a single binary5. This server component is the final layer before calling the database and the file storage.
Stakeholders
In any freemium open-source project, there are usually many different categories of stakeholders which have varying levels of influence on its growth and trajectory. Mattermost is not an exception. It is owned and maintained by a company: Mattermost Inc. The open-source repository project receives contributions from the developers of Mattermost Inc., as well as independent developers. Finally, there are also independent and enterprise users of Mattermost.
Mattermost Inc. (Business and Leadership teams)
This is the company that originally founded Mattermost and has final say over its growth today. As this involves the leadership and the business teams, earning good revenue while staying on track with the product vision is their biggest priority. They decide which high-level features to undertake next and task the development team at Mattermost with working on these features.
Mattermost Inc. developers (Development and Operations teams)
These people implement new features, fix bugs, and maintain the growth of the open-source projects from Mattermost Inc. The software architects would be part of this category. Developers at Mattermost also have the final say in accepting issues and approving code contributions from the independent developers. Despite having a team of developers, Mattermost strongly believes that
…open source will drive innovation in enterprise messaging and collaboration just as it has for the infrastructure stack that powers the world’s largest companies2.
For this reason, independent developers form an important category of the stakeholders of the project.
Open-source contributors (not affiliated with Mattermost Inc.)
Independent developers’ contributions can range from simple contributions to source code or documentation carrying minimal impact to bigger features that affect all users of Mattermost. They also have the freedom to raise issues that they found while using the application. They ultimately accelarate the pace of development as well as the discovery of bugs and the subsequent fixes, ensuring stability along with sustained evolution.
End users
This category includes individual users and independent small orgnaizations that use Mattermost for free. These stakeholders can give feedback to Mattermsot Inc., request features, and report bugs as well. A more influential group of users involves bigger organizations that subscribe to Mattermost solution for a fee and contribute to the revenue of Mattermost Inc. Naturally, feature requests from these premium users will be assigned a higher priority by the leadership team of Mattermost Inc.
Key Quality Attributes
Scalability Mattermost can be used by a small group of people or a large organization. The size of an organization can also grow over time. Scaling with high volume of concurrent messages is also an important aspect.
Availability As many organisations constantly rely on this platform for internal communication, downtime is very costly and can hinder operations of these companies. Availability is an indispensable attribute for Mattermost.
Modularity As a cross-platform solution, the growth of several client-side applications and the server component at different rates is natural. The architecture of Mattermost must ensure this modularity in development, testing, and in deployment activities.
Compatibility An important aspect to ensure alongside the modularity of the components is the interoperability of these components with each as the product grows. The team must ensure to have the least possible breaking changes in between versions and document them well in case breaking changes are inevitable.
Product Roadmap
The direction for the growth of Mattermost is straightforward. It is well-captured by this statement from Mattermost:
The Mattermost Product Direction shares an overview of new benefits we hope to provide for users and subscribers in our monthly releases, as well as our longer term direction. It is driven by user and subscriber priorities, and may change as those priorities change6.
The set of features to work on are grouped into three categories: Now, Next and Later6.
-
Now: Things that are currently being focused on by the contributors to the repository. They include elements like skin tone for emojis, popular integrations, custom user groups, etc.
-
Next: Tasks that are on the scope for a reasonably short term, although they are not being worked on at the moment. These include a forward messaging option, as well as some board management, improved support for a version of the mobile app, etc.
-
Later: Things that are known as existing issues or potential improvements, but that do not fall into the priorities. Some examples are text formatting controls, different integrations (OneDrive, ServiceNow), or a better playbook editor.
These three categories refer to Mattermost project as a whole, and not necessarily to mattermost-server
itself. Since mattermost-server
is only the back-end component of Mattermost project, it does not exist independently and thus does not really have its own roadmap or planning. There is one exception however, which is the refactoring process to move towards an architecture more cloud-compatible (see extensive details about this in our essay 4 about scalability).
Ethical Considerations
Ethical concerns in the field of communication software are mostly regarding user privacy. Users want their data to be safe on Mattermost, so assuring security is of highest priority, especially since a server is often a common access route to try and break into software. For this reason, Mattermost is very careful not to let openings for potential hackers. They also encrypt all potentially sensitive data with technologies defined as “generally accepted industry standards”7.
Moreover, the usage of data collected on users is another substantial ethical issue. Regarding messages and content published, Mattermost explains that data retention is customizable by the users 8, so they can decide to delete the messages after a certain period of time.
When an organization uses Mattermost to setup a work group, this organization is the owner of the data, and Mattermost only acts as a data processor7.
Mattermost collects data on their users for the good functioning of their structures, and claim to respect the regulations of the different countries7.
References
-
Mattermost. Home Page. https://mattermost.com/ ↩︎
-
Mattermost. About Us. https://mattermost.com/about-us/ ↩︎
-
Mattermost. Use cases of solutions. https://mattermost.com/solutions/#use-cases ↩︎
-
Mattermost. Platform overview. https://mattermost.com/platform-overview/ ↩︎
-
Mattermost Docs. Architecture Overview. https://docs.mattermost.com/getting-started/architecture-overview.html ↩︎
-
Mattermost. Product Roadmap. https://mattermost.com/roadmap/ ↩︎
-
Mattermost. Privacy Policy. https://mattermost.com/privacy-policy/ ↩︎
-
Mattermost Docs. Data Retention Policy. https://docs.mattermost.com/comply/data-retention-policy.html ↩︎