Teams | Collaboration | Customer Service | Project Management

Mattermost

Lessons Learned Building Messaging Software with a Fully Remote Team

Our experience working with hundreds of customers who use Mattermost, an open source messaging workspace, and a distributed team with hundreds of additional contributors all working remotely, has taught us several lessons about communications tools and how to get work done across time zones.

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.