Teams | Collaboration | Customer Service | Project Management

Latest Posts

How our remote team ships like clockwork

On the 16th of every month, we release an update to the Mattermost server. The release happens on the same day, every month, without fail. It’s a cadence that our customers have come to rely on, and it helps us deliver new features and updates with drumbeat regularity. Hitting this hard deadline every month while ensuring high-quality releases requires clear processes and organizational discipline. This is a challenge for any team.

Running effective meetings in a remote company

As a remote-first company, we’ve spent a lot of time optimizing how we work together as a team. In these challenging times, teams around the world are working to flatten the curve by trying their hand at remote working for the first time. To help these teams succeed, we thought it was the perfect time to share some of the practices and culture we’ve developed to run meetings effectively on Mattermost. Here are seven tips for successful remote meetings.

Greater protection for Mattermost message data on mobile devices

Push notifications are an important aspect of the Mattermost user experience on mobile. When important messages come in, many users like to be notified on their mobile devices so they can respond quickly. Mobile push notifications make it easier for users to stay informed or take faster action while on the go. When it comes to mobile data privacy, many organizations prioritize secure handling of messaging data, particularly when it may contain mission-critical or proprietary information.

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 our code consistency. For this specific task, we utilized go vet and with this blog post, I would like to explain how we pushed the limits of this tool by extending it.

Onboarding as a remote engineer with Mattermost

We decided to make Mattermost a remote-first company for several reasons. For example, employees don’t have to waste time commuting, we are able to hire from a wider talent pool of self-motivated individuals, and we have coverage in all time zones, which helps us respond to our customers around the world more effectively. And since we’re a remote company building collaboration software, we have plenty of opportunity to dogfood our own product.

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?

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 Go opinions are enforced by the compiler.

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 updated because the “source” text changed.

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