Bleeding Edge Chat

by Alex Lawn

Traditionally Catalyst has been a huge user of Internet Relay Chat (IRC) for our internal chat and private messaging requirements. IRC is a big part of the way that Catalyst discusses and interacts on a number of technical and operational topics both internally and with the open source community as a whole.

IRC, like email, is a technology that has been around for quite awhile and there are now some new options ready for consideration to scratch the same itches.

As part of our engagements on large projects with partners, Catalyst has been exposed to all of the familiar players in chat implementations: Skype, Microsoft IM, XMPP, HipChat, Google Chat, Slack and many others.. We've seen some very powerful solutions with a lot of investment by some clients in integrated solutions between chat and ticketing systems, IntraNets, Calendar and even phone systems. There is no question to us that this has real operational value.

ChatOps is one of the buzzwords you may hear in some technical circles. Atlassian (the creator of HipChat) published a great blog about ChatOps, and here is another from PagerDuty.

As part of our review of new chat technologies, Catalyst did not want to go with a fully hosted solution using proprietary protocols. We want an open source platform that we have the freedom to host and manage ourselves, on our own infrastructure should we choose. And something that is easy to use and can be accessed via a web browser.

The great thing about free and open source technologies is the freedom to prototype and experiment with different solutions without having to fish out large sums of money or commit large sums of money for per-user licenses. The Catalyst Australia team has been experimenting in 2016 with new chat platforms for use internally. This is not a replacement for IRC as yet, but certainly something that we are ready to invest internal time and energy into.

Given our requirements for a free and open source solution, our two trials so far have been:

Mattermost

Mattermost  was the first solution we piloted. Mattermost has great potential to integrate with third party services using webhooks. And we were successfully able to setup an IRC bridge back to our internal servers, and it was easy enough to add GitLab integration allowing notifications when developers made commits, comments or created pull requests.

A select group of twenty team members from Catalyst trialled Mattermost  for four weeks. It became a big part of how we communicated as a team and took over a lot of the communications that would have traditionally been on IRC.

Some things about Mattermost we really liked:

  • Scrollback history
  • Offline messaging
  • Embedded video support
  • Rich text markup
  • Mobile integration
  • Push notifications
  • Browser based clients
  • Open source - MIT / Apache Licence
  • File uploads
  • Webhooks / 3rd party integration

Things that we didn't like so much:

  • Commercial upgrade required for LDAP authentication support
  • Some challenges with GitLab authentication integration
  • No video chatting support
  • No screen sharing support

There is plenty to like around Mattermost, and there were some amongst us who were perfectly happy to stick with it. But we decided to continue our search for a chat server by evaluating some more options.
 

RocketChat

RocketChat  looks very similar to Mattermost and has a fully featured chat client. In terms of setup, it was fairly easy to get running on our own server infrastructure.
We have been working with our own instance of RocketChat now for over a month and we are almost unanimously happy with the tool set.

Some things about RocketChat we like:

  • Webster video calling
  • Screen sharing
  • LDAP integration
  • Scrollback history
  • Offline messaging
  • Embedded video support
  • Rich text markup
  • Mobile apps available for IOS and Android
  • Push notifications
  • Browser based clients
  • Open source - MIT Licence
  • File uploads
  • Webhooks / 3rd party integration

     

Internally we are now looking at SAML authentication options for RocketChat and making several customisations to allow external clients to connect.

Here is a meta-chat about this blog post in RocketChat from last week.

The Road Ahead

There is another chat protocol / client that we have not tried that looks very promising from https://matrix.org that offers distributed federated chat. At the time of writing matrix.org is in a pre-release beta state.

We are looking at several integration options with our internal systems:

  • Integration with our ticketing system, which will allow clients to login directly with the same username and password where they will have a chat room available with the relevant staff added directly to the room.
  • Improving some of the automated markup to grab ticket information from jobs that are referenced or linked to within the chat windows.
  • Closer integration with GitLab to allow developers to configure notifications based on activity with GitLab.
  • Continuous integration build and deployment server notification integration.