Categories

  • No categories

Maintaining consistency in codebases with Go Vet

Maintaining success in a large open source project is one of the key objectives of Mattermost. We have hundreds of contributors and we want to create a project that could serve as a model in the Go community. Having said that, following idiomatic Go principles is the thing that we care most about while maintaining …

On Hermes and Mattermost

With the upgrade to React Native 61 came the prospect of substantially improving performance of our Android app. How? Through the use of Hermes, Facebook’s new JavaScript engine. To say that we were excited is an understatement. And with that excitement came curiosity: How is this new JavaScript engine achieving performance boosts? Let’s first chat a bit about …

Monitoring a multi-cluster environment using Prometheus federation and Grafana

Monitoring the state of your clusters is an effective way to discover bottlenecks in your multi-cluster production environment. It is one of the key challenges that development teams are facing and factors such as the team experience as well as the number and distribution of the applications can make things even more complex. Better monitoring …

Go: Idiomatic error handling

Go is an extremely opinionated programming language. import something in a file that’s not used? It won’t compile, and there’s no flag to override. While there are workarounds, the end result remains the same: Go files are never cluttered by unused imports. This is true for all Go code everywhere, making every Go project more accessible. Not all …

Localizing Matterpoll

Matterpoll is a plugin that allows users to create polls in Mattermost. Since Mattermost is localized in 16 different languages, it’s optimal that Matterpoll is similarly localized. Because we rely on contributors to do the translations, we want to make it easy for them to translate new strings and determine whether already translated strings need to be …

Accelerate DevOps workflows with the Mattermost Jira integration

Jira is one of the most popular platforms to plan software development work and to track work. Teams use Jira to create user stories, create and assign tickets, document and track issues and bug fixes, and track the entire development cycle from conception to release.  Jira is incredibly useful, but it can also create a …

Submitting great PRs

If you want to submit good pull requests, start with our contribution checklist. Today, that page talks about what to fork, how to style your code, how to write unit tests and where to push your code. Implicit in all of that is the need to write great code, of course! But this blog post isn’t …

Unit testing mmctl commands

Mattermost is starting a new open source campaign, this time around increasing the unit test coverage for the mmctl tool. The mmctl tool is a CLI application that mimics the commands and features of the current Mattermost CLI tool and uses the Mattermost REST API to communicate with the server. Using the tool, you can control and manage several Mattermost …

Mattermost installation: The important details for sysadmins

ChatOps is about bringing conversations, tools, files, and automation into a single space. Mattermost has a number of plugins that support ChatOps and real-time DevOps workflows through integrations with developer tools like Jira, GitLab, GitHub, Bitbucket, and Jenkins.  At the core is the Mattermost Server. Visit the Integrations Directory to see all integrations. Mattermost Server …

Getting started with Mattermost integrations

Mattermost is well-known as a flexible, open source messaging platform. But what makes it even more useful is its ability to automate connections with bots and webhooks and to link up to external applications. These automations and connections are known as integrations.  Many integrations are available off-the-shelf through the Integrations Directory. But there are lots …

Get the latest updates, releases, and more—delivered to your inbox.

An update from our co-founders: Remote work when SaaS is not an option Learn more >