The Mattermost Developer Blog

Monitoring a Multi-Cluster Environment Using Prometheus Federation and Grafana Posted on Dec 18, 2019 by Stylianos Rigas
Monitoring the state of your clusters is an effective way to discover bottlenecks in your multi-cluster production environment.

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 can help identify single points of failure. Being able to get information about things like the number of applications running on each node or the CPU and memory performance can help to get closer to zero downtime deployments.

Read More
Localizing Matterpoll Posted on Dec 11, 2019 by Ben Schumacher
Matterpoll is a plugin that allows users to create polls in Mattermost. Learn about how we localized it.

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 updated because the “source” text changed. On the other hand, Matterpoll only has two maintainers (@kaakaa and me) and no infrastructure of its own to work with.

Read More
Unit testing mmctl commands Posted on Nov 7, 2019 by Miguel de la Cruz
Mattermost is starting a new open source campaign, this time around increasing the unit test coverage for the mmctl tool.

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 servers without having to access the specific machine on which the server is running.

Read More
Instrumenting Go code via AST Posted on Oct 31, 2019 by Eli Yukelzon
Learn about what Go AST is, why we need it, and instrumenting our handlers with tracing code.

We’ve been working on integrating call tracing in the server to provide exact measurements of all API and DB calls. We’ve picked OpenTracing - a lovely open source project that allows you to setup trace reporting and enables you to support Distributed tracing. Instrumenting your API handler in Go is very straightforward - setup a connection to a collection server supporting the OpenTracing spec (we’ve decided to use Jaeger) and wrap your code in spans.

Read More
Debugging Using Charles Posted on Oct 21, 2019 by Jesse Hallam
Learn about using Charles to debug against community servers while running a local copy of the mattermost webapp.

I recently acquired a copy of Charles, the well-known Web Debugging Proxy Application. I’ve actually stumbled across this product on multiple occasions, but never bothered to actually try it… almost exclusively because I thought the website looked a little dated. In trying to suss out the root cause behind MM-19091, I needed a way to debug against our community servers but running with my local copy of the mattermost webapp. This would allow me to insert console.

Read More
Avoiding Flaky Tests Posted on Sep 29, 2019 by Jesse Hallam
Flaky tests are no stranger to the Mattermost code base. Find out what we've done to avoid flaky tests.

“Your tests are failing.” This comment on a pull request is crushing. After all the effort you’ve spent writing your code, adding new unit tests, and rebasing your changes to make each commit almost a work of art: how could your tests possibly be failing? Begrudgingly, you sign into your CI server only to realize the failing tests have nothing to do with your code. You think, “Hmm, maybe the code is more coupled than I expected.

Read More
Hermes @ Chain React Posted on Jul 18, 2019 by Elias Nahum
Elias Nahum shares his thoughts on learning about Hermes and how it can improve the Mattermost Android app.

- Yes, yes... - for real? - Yes I come all the way from Taiwan... and you? - Oh I'm from here.. and what about you - me? hmm I flew 18 hours to get here (me) In short, the above is how the whole thing started. It is really interesting how people from all over the globe attended the event. It was a fun learning experience and even the unexpected was waiting on us.

Read More
LDAP Nested Groups: Modelling and Representation in Code Posted on Jun 5, 2019 by Martin Kraft
This post describes what LDAP “nested groups” are and how we ended up modelling and representing them in code.

LDAP Group Sync in Mattermost In Mattermost v5.8 we deployed LDAP group sync feature to enable Enterprise Edition customers to create and synchronize groups in Mattermost matching their LDAP groups. The goal was to ease onboarding by automatically adding group members to configured teams and channels. With the upcoming Mattermost v5.12 we’re adding the ability to create teams and channels that are only accessible to those synced groups. This post describes what LDAP “nested groups” are and how we ended up modelling and representing them in code.

Read More
Percona Live 2019 & Database Replication Posted on Jun 4, 2019 by Jesse Hallam
Everything you need to know about database replication and how it applies to Mattermost.

This past week, I was privileged to attend Percona Live 2019, an open-source database conference held this year in Austin, Texas. With the breadth of the sessions I attended being captured on a community.mattermost.com post, I wanted to use this blog post to dive into a recurring topic from the conference: database replication. What is replication? Replication is a means by which data on one database server is automatically copied – or replicated – to other database servers called replicas.

Read More
CanSecWest and Encryption in Mattermost Posted on Apr 25, 2019 by Christopher Speller
Check out these takeaways from CanSecWest 2019, which was full of exploits and interesting anecdotes.

This year I had the opportunity to attend the security conference CanSecWest in Vancouver, BC. Like any security conference, it was full of exploits and interesting anecdotes. There were plenty of interesting talks, but this post focuses on a talk by Zhiniang Peng and Minrui Yang on the dangers of homomorphic encryption. This post gives a high level overview and avoids giving too much technical detail. What is Homomorphic Encryption? Homomorphic encryption is defined as an encryption scheme which allows computations to be performed on ciphertext that, when decrypted, match the result of the operation as if it was applied to the plain text.

Read More