Operations | Monitoring | ITSM | DevOps | Cloud

Mattermost

Lessons Learned Implementing ChatOps

Email overload, distributed teams and excessive meetings have caused many organizations to move their DevOps teams to messaging platforms and thus adopt ChatOps workflows. With thousands of open source installs and hundreds of customer implementations, we have a few lessons to share on interesting DevOps workflows, how incidents can be effectively communicated across distributed teams and what messaging in secure and regulated environments should look like.

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.

Mattermost 5.21: ChatOps integration with AWS, GitLab, and CodeShip, and more

Mattermost 5.21 includes improvements that will help your team work together more effectively. Some of these improvements, including the following ChatOps integration and plugins, were built during our successful open source chatbot hackfest that brought together 2,000 contributors from around the world.

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?

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 can help identify single points of failure.

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.