What is your favorite open source Slack alternative?
In any collaborative environment, it's important to have good tools for communication. What tools work best for you depend a bit on your situation, but might include anything from mailing lists for email communication, Git or Subversion for version control, a wiki or Etherpad for collaborative authoring, a shared task list for organizing workflow, or even a full fledged project management suite.
One collaboration tool which is becoming increasingly indispensable is team chat. Whether your colleagues are sitting across the room from you or on the other side of the planet, the ability to communicate in real time makes many conversations faster, easier, and can help reduce confusion that might emerge in asynchronous communication.
There's still a perception out there in some circles that chat applications can be a distraction, and I do believe it's important to have a commitment to reel in off-topic threads before they create a cognitive disruption. And it's equally important to be able to give yourself the space to work uninterrupted when you have tasks that require longer periods of concentration. As I write this, for example, I'm using at least two team collaboration tools, but the notifications are silenced so that I can check in periodically as the breaks in my work allow for it, just as I silence social media notifications when I really need to get stuff done.
I would advocate that for your team collaboration needs, you pick a tool that's exclusive to work, though not everyone agrees on this. Personally, I find it too easy to be distracted by non-work conversations when I reuse the chat feature of, say, a social media tool. I like to keep work separate so I can turn off personal communications when I'm at work, and vice versa. But do what works best for your team.
Recently, Slack has quickly become the darling of software development circles, leading to displacement of many other tools. An article in The Next Web earlier this year proclaimed "Slack is quietly, unintentionally killing IRC," and this switch has also come to many open source communities. The developers behind Wordpress, for example, have switched to Slack for their team communications.
But Slack is a closed source SaaS tool, and it's far from the only name in the game. In fact, open source might be critical to your business chat needs. If you work with sensitive information, or need to make sure that all communication stays behind a firewall, self-hosting might be your best option. And access to the source helps you ensure that the communication between you and your team isn't seeping out of your control through some nefarious addition to the codebase.
Let's look at four open source alternatives, from old classics to brand new, that might be a good fit for you and your team's chat needs.
You didn't think we'd be able to start this list off without talking a little more about IRC, did you? Internet Relay Chat, or IRC, is a protocol which dates back to the late 1980s. Since it's been around so long, there are numerous open source implementations on both the client and the server side.
Coming with its age, however, are numerous drawbacks. It lacks many features one might expect in a modern chat client, from security to identity management to even just being able to easily transmit non-text components, like images, files, or emoticons (the latter might be seen as a plus to some, however). Some features have been implemented after-the-fact through bot services, including nickname management, logging, and other features, but these vary from server to server.
IRC does still have some things going for it, though. It's nearly universal, and clients are available for basically every platform out there. Though the command-driven interface isn't necessarily intuitive for beginners, many clients re-implement commands through a GUI. And if you're doing upstream open source development, there's a good chance you're already hanging out in IRC anyway, so adding a team server might be a path of least resistance.
A more modern approach to team chat is a program called Let's Chat, which is released under an MIT license and written on top of the popular Node.js platform. It comes with many of the things you might expect if you're familiar with a client like Slack: image embeds, @ mentions, file uploads, logging, etc. It features multiple rooms, which are a must if you're working on a team of more than a couple of people. And it's easy to install and self-host, either through a traditional method or by using Docker or Vagrant, or as a part of Sandstorm.io if you're deploying other tools for your team.
Let's Chat can also integrate with your existing Kerberos or LDAP authentication server, so you can use the same login you use across the rest of your organization. And it features an API so you can extend it or connect it with other tools. Want to try it out? Here's an online demo, although it's worth noting the demo doesn't implement all of the features available in the project, including file upload.
One feature I really like is the ability to upload sound, video, or images directly from your mobile device, which seems handy when communicating on the go. Mattermost is licensed under an "Apache-wrapped AGPL" which is not unlike the license for MongoDB. Check out the source code on GitHub, or give it a try with its easy Docker-based installation.
The list above is far from exhaustive, and I encourage you to look around and try a few others out before you make a decision. Have another favorite that didn't make the list? Let us know in the comments below so everyone can check it out!
This article was originally published in November 2015 and last updated in June 2016.