Mattermost is een open source multi-platform messaging web-applicatie voor teams. Het is een prima Slack-alternatief en draait binnen je eigen netwerk.

Een team ontwikkelaars dat samen een applicatie bouwt of onderhoudt, kan niet zonder goede onderlinge communicatie. Zit je bij elkaar in de buurt, dan kan dat aan de vergadertafel of bij de scrum-wall. Wanneer je niet bij elkaar in de buurt zit, dan is het handiger om daarvoor telecommunicatie-tools te gebruiken. Instant messaging is gemakkelijk en minder opdringerig dan de telefoon, ontwikkelaars kijken toch al een groot deel van de tijd naar het beeldscherm. Vroeger communiceerden teamleden met elkaar via IRC, later werd Jabber het medium. En wil je er tegenwoordig als ontwikkelteam een beetje bij horen, dan gebruik je Slack voor de communicatie binnen het team. Vroeger had je IRC-bots die je van alles op de hoogte hielden, voor Slack heb je webintegratie tools die dat voor je doen.

De nadelen van Slack zijn dat het closed source is en dat het in de cloud staat. Je hebt daardoor minder controle over je data, wat zeker lastig kan zijn wanneer je later naar een andere omgeving over wilt stappen. Mattermost is een open source alternatief voor Slack. De functionaliteiten die je in Slack tegenkomt, zijn ook in Mattermost terug te vinden. De ontwikkelaars van Mattermost hebben geprobeerd daar zinvolle features aan toe te voegen.

Mattermost draait op je eigen server, met naar keuze een MySQL of Postgres database. Je houdt dus zelf de complete controle over je data. Mattermost is gebouwd in Go en React en is beschikbaar onder de MIT-licentie. De ontwikkelaars moeten ook de huur betalen, daarom gebruiken zij het model van een open source variant met daarnaast een zogenoemde enterprise variant die niet gratis is en meer features biedt. Mattermost heeft een webapi waarmee je koppelingen met andere applicaties kunt maken.

Voor gecompileerd of zelf compileren
Het installeren van Mattermost doe je door een tar-ball te downloaden waarin een kant en klaar gecompileerde binairy is opgenomen. Een andere oplossing is om uit Github een clone te maken van de source en deze zelf te compileren. Verder kun je eenvoudig met Docker een preview omgeving opzetten, voor een eerste kennismaking met Mattermost. Daarnaast kun je met Docker ook een productieomgeving opzetten, de administrators manual bevat instructies voor het draaien van Mattermost in Docker op Linux, Windows en OS X. Voor een productieomgeving raadt Mattermost aan om Nxinx als reverse proxy in te zetten voor een betere performance en meer veiligheid.

De tar-ball met gecompileerde binairy is te downloaden voor Ubuntu en RedHat systemen. Wij installeerden de versie voor Ubuntu 16.06 probleemloos op een Debian Stretch systeem.

Kanalen en teams
Mattermost organiseert de communicatie door middel van teams en kanalen. Teams vormen een hoofdindeling en de opzet daarvan laat je zo goed mogelijk aansluiten bij je eigen organisatie. Je kunt bijvoorbeeld teams aanmaken per te ontwikkelen applicatie, of per product of dienst. Bij het aanmaken van een team geef je aan of dit een besloten team is of niet. Bij een besloten team kan niet iedereen zich aansluiten, maar kan dat uitsluitend op uitnodiging. Bij open teams kan elke gebruiker die dat wil zich aansluiten.

Elk team heeft één of meer kanalen. Kanalen zijn chatrooms die je gebruikt om de communicatie te scheiden naar verschillende doelgroepen. Je maakt bijvoorbeeld een kanaal waar de ontwikkelaars met elkaar kunnen communiceren, een kanaal waar de leden van het verkoopteam met elkaar kunnen communiceren en wellicht een kanaal waarmee de klanten kunnen communiceren met je organisatie. Elk team krijgt in Mattermost standaard de kanalen “Town square” en “Off topic”. Het idee daarbij is dat je in “Town square” iedereen ontmoet en met iedereen kunt communiceren. “Off topic” is meer bedoeld voor de dingen die buiten het werk liggen, zoals de laatste roddels of de voetbalwedstrijd van gisteravond. 

Chatroom
Alles wat in een kanaal gezegd wordt, is door iedereen in dat kanaal te zien, net als dat bijvoorbeeld in IRC het geval is. Doordat Mattermost een Reply functie heeft, kun je de communicatie binnen een kanaal met threads werken, wat iets meer structuur biedt.

Markdown
Het communiceren, gebeurt zoals je dat van de instant messaging applicaties gewend bent. Onderin het scherm heb je een inputveld waar je één of meer regels tekst kunt invoeren. Verder heb je hier ook de mogelijkheid om via een paperclip-icoontje bestanden te uploaden. Je kunt de berichten die je in Mattermost invoert, formatteren met behulp van Markdown. Hiermee kun je heel eenvoudig een stuk tekst vet of cursief maken, bullits en hyperlinks opnemen en zelfs emojis en plaatjes. Ook headers van verschillende niveaus en bijvoorbeeld tabellen zijn eenvoudig in te voeren. Naast postings in één van de kanalen kun je ook een “direct message” naar een individuele gebruiker sturen. De ontvanger krijgt een notificatie, via de desktop applicatie een geluidje, en in de browser zie je in de browser-tab tussen haakjes het aantal direct messages.

Mattermost biedt verschillende manieren om berichten terug te zoeken. Je hebt een algemene search-box, waarin je in een invoerveld een woord of stuk tekst kunt invoeren. Hierbij heb je nog wat aanvullende opties, zoals een stuk zin tussen aanhalingstekens (quotes) zetten, om op precies dat stuk tekst te zoeken. Ook bestaat de mogelijkheid om het zoeken tot een bepaalde afzender of kanaal te beperken. Je kunt in je bericht een hashtag opnemen (tekst voorafgegaan door het hash-teken #). Je kunt dan later deze tekst makkelijker terugvinden via de zoekfunctie in Mattermost. Zie je een belangrijk of interessant bericht op één van de kanalen voorbij komen, dan kun je die vlaggen. Je kunt elk moment een lijst van de door jouw gevlagde berichten opvragen, zodat je deze snel terug kunt vinden. Wanneer je één van de teamleden in een openbaar bericht wilt aanspreken, dan kan dat door te taggen. Dat wil zeggen de naam met een apenstaartje ervoor in het bericht op te nemen. Je kunt elk moment een lijst opvragen met berichten waarin je getagged bent.

API en Webhooks
De API maakt het mogelijk verschillende toepassingen te koppelen aan Mattermost en deze zelfstandig berichten te laten posten. Daarnaast biedt Mattermost webhooks. Je kunt bijvoorbeeld een koppeling maken met onder andere Redmine, Trac, Kanboard, Nagios en Twitter. Voor ontwikkelaars zijn er bijvoorbeeld nuttige integraties met GitLab, GitHub, Mercurial, en Subversion. Andere voorbeelden zijn een CalendarBot, Facebook integratie, e-mail integratie, Trello integratie en Threema integratie en RSS-feed integratie. Dit is geen uitputtende lijst. Er zijn nog veel meer mogelijkheden.

Twee andere voorbeelden die we nog willen noemen, zijn de hubot-matteruser en matterircd. Hubot-matteruser is een Hubot-adapter voor Mattermost. Hubot is een chatbot die naar commando’s luistert en op verzoek acties uitvoert. Bijvoorbeeld een Google Maps plaatje van een bepaalde woonplaats in de chat weergeven, of bepaalde informatie opzoeken, enzovoorts. Matterircd staat op Github en levert een IRC-server op die gekoppeld is aan je Mattermost omgeving. Dit functioneert als een IRC-gateway. Je vindt dus dezelfde kanalen en kunt via IRC met de andere Mattermost-gebruikers communiceren alsof je achter Mattermost zit.

De voorbeelden die we genoemd hebben zijn reeds bestaande oplossingen. Het is uiteraard mogelijk om zelf nieuwe koppelingen te maken met behulp van de API en webhook functionaliteit. Ben je op dit moment een Slack gebruiker, dan is het fijn te weten dat al je bestaande Slack integraties zeer waarschijnlijk ook in Mattermost zullen werken.

Desktop en mobiele apps
Mattermost levert ook een desktop applicatie voor Linux, Mac OS X en voor Windows. Wij installeerden de 64-bits versie voor Linux in de vorm van een deb-bestand. Deze is eenvoudig op een Debian- of Ubuntu systeem te installeren. Wanneer je de applicatie opstart, kies je voor “Add new team”. Hier voer je de URL in van de Mattermost server en de naam van het team waar naar je wilt connecten. Vervolgens krijg je een inlogscherm waar je een e-mailadres en wachtwoord invoert. De applicatie logt met deze credentials in op de Mattermost server. Je krijgt hierna dezelfde pagina die je anders in de browser zag. Wij zien echter niet de toegevoegde waarde van een desktop applicatie boven het werken in een browserscherm, behalve dat een desktop applicatie notificaties beter aangeven.

Mattermost levert een iOS en een Android app. Wij installeerden vanaf de Google Playstore de Android app op ons 7 inch Android tablet. Voor push notifications op je mobiele apparaten is een Mattermost Push Notification Service (MPNS) nodig. Dit is een dienst die hetzij op een server van Mattermost draait, hetzij in je eigen netwerk. Dit geldt zowel voor de iOS app als voor de Android app. Deze MPNS service krijg je uitsluitend wanneer je voor de enterprise variant van Mattermost kiest. Heb je voor de open source variant gekozen, dan vis je wat dit betreft achter het net. Het gevolg hiervan is dat de app geen toegevoegde waarde ten opzichte van inloggen direct vanuit je browser heeft, dat levert exact dezelfde gebruikerservaring.

Gebruikers settings
Gebruikers kunnen zelf een aantal settings wijzigen, via het Account Settings menu. Denk hierbij aan een profielfoto, wel/geen desktop notificaties, kleurenschema (theme), tijd in 12- of 24-uurs weergave, enzovoorts. Dit zijn echt settings die aan je account gekoppeld zijn, dus wanneer je een ander kleurenschema kiest, dan heeft dat bijvoorbeeld ook effect op het kleurgebruik in je mobiele app.

 

Dark theme
Nadat je Mattermost geïnstalleerd hebt, dan is de eerste gebruiker die zich aanmaakt automatisch de beheerder (administrator). Een gebruiker maak je aan met een e-mailadres, een gebruikersnaam en een wachtwoord. Deze eerste gebruiker kan vervolgens de systeemconfiguratie aanpassen. Hierin bepaal je ook de rechten, bijvoorbeeld of elke willekeurige gebruiker teams mag aanmaken of dat alleen de beheerder dat mag. Zo kun je ook bepalen of iedereen zich als gebruiker kan aanmelden of dat deze door de beheerder moeten worden aangemaakt. Je kunt verder een restrictie zetten op het domein waar gebruikers deel van uit moeten maken. In dat geval kunnen alleen mensen met een e-mailadres binnen dat domein zich als gebruiker aanmelden. Je kunt hierbij meer dan één domein opgeven. Op deze manier kun je wel werken met vrije aanmelding, maar toch alleen gebruikers van de organisatie toelaten.

Mattermost heeft een uitgebreid menu voor de beheerder waarin allerlei aspecten van de systeemconfiguratie ingesteld kunnen worden. Zo kun je bijvoorbeeld Amazon S3 als storage opgeven, in plaats van het lokale bestandssysteem.

Nxinx
Standaard luistert Mattermost naar poort 8065 voor een normale verbinding of poort 465 voor een met TLS beveiligde verbinding. Kies je voor een met TLS beveiligde verbinding, dan kan Mattermost een Let’s encrypt certificaat voor je ophalen. Je kunt zelf via de configuratie-settings andere poorten instellen. Overigens raadt Mattermost aan om voor Mattermost een reverse proxy met Nxinx op te zetten. Dit komt de veiligheid en de performance ten goede en verder kunnen de gebruikers dan naar de gebruikelijke poort 80 of 443 gaan. In dat geval laat je de TLS verbinding aan Nginx over en houd je Mattermost gewoon op poort 8065. In de administrators manual staat een voorbeeld-configuratie voor Nginx als proxy. Deze is uitgebreider dan wat wij normaal gesproken voor een Nginx reverse proxy  gebruiken, maar wij kregen er een goed werkende reverse proxy mee, dus hebben wij deze zo gehouden.

In een productieomgeving heeft Mattermost verder nog een SMTP-server nodig voor de e-mail notificaties en voor de paswoord-resets (wanneer je Mattermost met eigen paswoorden gebruikt).

Tot slot
Wanneer jij of je teamleden een tekst-interface echt niet meer van deze tijd vinden en niet onderling via IRC of Jabber willen communiceren, dan is Mattermost een goed alternatief. Ook wanneer je team reeds Slack gebruikt, maar je liever voor een open source product gaat of toch liever je data onder eigen beheer hebt, dan is Mattermost een prima oplossing. De communicatie binnen het team is uitstekend te structureren in meerdere kanalen, met daarnaast direct messages naar individuele teamleden. Het grote voordeel is dat je onderling niet meer via e-mail hoeft te communiceren en alles in een overzichtelijk scherm hebt. De mobiele apps hoef je alleen te bekijken wanneer je voor de betaalde Enterprise versie gaat. Zonder dat kun je op je telefoon of tablet gewoon via de browser werken. Je mist dan alleen de notificaties, maar dat is eigenlijk wel zo rustig.