Mattermost Logo
We're hiring!

Mattermost Developer Blog

LDAP Nested Groups: Modelling and Representation in Code Posted on Jun 5, 2019 by Martin Kraft

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

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 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

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
Submitting Great PRs Posted on Jan 24, 2019 by Jesse Hallam

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 about writing great code, it’s about making your pull request a great experience for you and your reviewers.

Read More
Go: Idiomatic Error Handling Posted on Oct 18, 2018 by Jesse Hallam

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 Go opinions are enforced by the compiler. Some are documented in Effective Go, and yet others are reflected only in the coding style of the Go standard library.

Read More
Plugin System Overhaul Posted on Jul 18, 2018 by Joram Wilander

Mattermost 5.2 will include major overhauls to the plugin system. Over the last six months of plugins being in beta, we’ve received a lot of great feedback from our community and customers building Mattermost plugins, as well as from our core team. We’ve taken this experience and feedback and used it to enhance our plugin system. This brings us a step closer to moving plugins out of beta and into a full stable release.

Read More
Subpath Support Posted on Jun 25, 2018 by Jesse Hallam

Mattermost 5.1 will include support for serving Mattermost from subpaths. This allows Mattermost to be exposed at something like, with your proxy server exposing different services at other subpaths. Subpath support is configured via the Site URL. Using subpaths in production In production, after configuration and restart, the application server expects all HTTP requests to be anchored to the configured subpath. This includes static assets, API calls, and WebSockets. For convenience, the application server redirects any unexpected requests back into this subpath, e.

Read More
npm@6 Posted on May 22, 2018 by Harrison Healey

Heads up that with PR#1239, we’re effectively switching to npm@6. Why the change? Previously, doing a fresh npm install would unexpectedly change package-lock.json. Upgrading to npm@6 should resolve this going forward. What do I need to do? Make sure you’re running npm@6: npm install -g npm@6

Read More
Platform Repository Splitting Posted on Sep 4, 2017 by Joram Wilander

A reminder that Mattermost will be separating the /platform repo into two repositories on September 6th, 2017: a new repository for webapp client code, hosted at existing repository (/platform) renamed to /mattermost-server, containing the server code. Why the change? Separates PRs for client and server with better naming conventions. This is similar to React Native and Redux repositories and helps us: work on one part of the system (webapp/server) without worrying about the other.

Read More