Slacking off? It used to be there was pretty much one place to chat with your fellow developers: IRC
Reg tiptoes through the Zulip to review open source chat and collab software
Review IRC is crusty, ancient, and still far and away the best group chat system currently available. IRC is the best chat system precisely because it is a system. It is a protocol, not just an app, and even better it is a loosely federated protocol.
The IRC system is a federated protocol around which a galaxy of clients (apps if you prefer) orbit. No one person or corporation controls IRC.
Yet it has two problems: it lacks end-to-end encryption, which isn't as big a deal as it sounds since most of us use IRC in open channels anyway, but the other problem is that IRC lacks a good means of asynchronous communication. Catching up on IRC chats that happened when you were away is difficult and time-consuming. It's just not something IRC was built for, and that's okay.
Rather than re-invent or try to replace IRC, what if we accepted IRC for what it is - a kind of water cooler where developers can gather and chat in real time - and build other tools for other needs? This is after all somewhat like the Unix philosophy: do one thing, and do it well. Let IRC be IRC.
You know what IRCs me?
The problem is that the tech industry feels the need to continually re-invent IRC. And so we get Discord, Slack, Mattermost, and then, next thing you know, Microsoft shows up like the drunk guy at the office holiday party trying to get everyone to join something called Teams.
That, friends, is where we find ourselves today. Now if you want to chat with your fellow developers and friends you need accounts on Slack, Discord, Signal, possibly even Teams. And yes, I know I sound like an XKCD character, but I really do have it set up exactly the way I want.
Unfortunately I don't live in a cartoon and in this world I have to use Slack and the rest like everyone else. Slack is fine for real-time chat with individuals, that aspect of it is just IRC with rich text, emojis, gifs and other bad ideas. Slack is even OK for small teams, but as the size of your team grows, Slack starts to fall on its face, especially if you're a distributed team.
Slack is IRC reinvented. It does a better job of keeping track of messages you've missed, but it's still pretty terrible at asynchronous communication, especially for teams spread across time zones. Slack is also not open source, and if you work on an open source project, doesn't it seem a little hypocritical to have proprietary software at the core of your communication infrastructure?
Fortunately I found a piece of software that's actually good at both of the things Slack isn't good at, plus it's great for real-time chat, and it's open source - Zulip.
The strangest thing to me about Zulip is that it isn't new, it has been around longer than Slack in fact, but it has never quite captured the audience that Slack has, which is a shame because it's much better.
Zulip is everything Slack is, but it's smarter and more powerful. It probably helps that it borrows some ideas from both IRC and email, rather than just cloning IRC and slapping a little frosting on top. And yes, I said email features.
Zulip looks a bit like Slack. Or perhaps I should say Slack looks a bit like Zulip since Zulip arrived on the scene first. It was co-created by Tim Abbott (of rebootless Linux kernel update fame), Jessica McKellar, Jeff Arnold, Waseem Daher, and some other software engineers way back in 2012. In 2014, while it was still in private beta Dropbox bought Zulip and that probably would have been the end of the story, but surprisingly, Dropbox released Zulip as open source software in 2015.
As with any great software, Zulip quickly found a devoted user base and that, more than anything else, has sustained it all these years.
Today Zulip operates like many open source projects. There is the application, which is free and open source - you can run it on your own server (though it does have some significant hardware requirements, more on that in a moment). At the same time there is a hosted version available as a service, which is run by Kandra Labs. Kandra Labs is Abbott's commercialization of Zulip. It provides commercial hosting and support, which makes Zulip a legitimate Slack competitor even for large organisations that require commercial-grade support.
While that's great, convincing your entire company to ditch Slack in favour of Zulip is going to be a long and uphill battle. There are plenty of companies using Zulip, but I was more interested in it from the perspective of a user self-hosting it or a small open source project that wants something more approachable than IRC, but not governed by a proprietary licence.
For that use case, Zulip is close to ideal, with a couple caveats.
But first, what do you get and how is it different to Slack?
There is much about Zulip that will be familiar to Slack and IRC users, namely reverse chronological real-time chat. Zulip does this as well as Slack, all the features you'd expect are there, everything from the silly, like emoji reactions, to the very useful, like automatcially turning Git commit tags into links to your hosted project.
- Chromium devs want the browser to talk to devices, computers directly via TCP, UDP. Obviously, nothing can go wrong
- We've been shown time and again that strong encryption puts crims behind bars, so why do politicos hate it?
- Military infosec SNAFUs: What WhatsApp and bears in the woods can teach us
- Yak-yak app Slack cracks, flacks gobsmacked: Can this bug be whacked or will code be rolled back?
- Alleged Vault 7 leaker trial finale: Want to know the CIA's password for its top-secret hacking tools? 123ABCdef
There are also plenty of integrations with other popular services so you can get notifications about a new bug in Jira, or see alerts from Zendesk and other customer service tools. There's even support for getting messages from Slack and IRC so you can monitor conversations happening elsewhere all from within the Zulip UI.
As you would expect, Zulip has apps for all the major platforms, including one that will warm the heart of developers everywhere: the terminal. The terminal app does lack support for changing settings, and of course you won't see animated gifs, but it's much better than any of the terminal clients I've tested for Slack, and it's officially supported by Zulip.
Many of the features above exist in Slack as well. Where Zulip pulls ahead of Slack is how it enables you to easily keep track of asynchronous messages. This is arguably the one feature IRC lacks - an easy way to go back and see what people said while you were out. This can be done in Slack, but it's awkward and time consuming as you have to read through every channel or topic finding the messages you list.
Zulip takes this model and then borrows a simple idea from email to give you topic-based message threads.
Part of what makes email a successful communication tool is the subject line; it groups related messages in threads by subject line. Zulip does the same thing within your streams (a stream is the equivalent to a "channel" in Slack). That does mean you have to write a subject line when you create a new topic, but most of us are pretty used to that with email. Once you get out of the Slack mindset and into the Zulip way of doing things it's not a big deal. In fact now it seems strange to me to just fire off messages in Slack with no subject – that's chaos, madness.
The genius of subject lines is that you can quickly and easily catch up on the messages you missed in your off-hours. There's no hunting around and digging through threads to find things, everything is neatly orgnanized in one spot. You read through the threads you're interested in, skip the ones you're not and you're done. This feature alone saves me hours a week.
...and the down side
Now the caveats. Installing Zulip requires a fresh server to install it on. I suppose that makes it easier for newcomers, since the Zulip installer takes care of everything, even installing system software like a Postgresql database, but this reviewer found it off-putting. I shouldn't need to dedicate a whole server to a Django app. It's not the end of the world, and you can, technically, install it on an existing server, but you will run into issues and you that is not supported or encouraged in any way, shape or form.
The good news is that there's a much easier way to get up and running with Zulip. Just sign up for a free account on the hosted service. You do have to agree to the terms of service, but for the purposes of testing it out this is the way to go. You can be up and running in minutes, configure everything the way your team needs it to be, and then figure out if it's going to work for you.
If Zulip does work, and you decide your project has the desire and resources to host its own installation you can export your entire hosted organisation account, messages, users, everything, which you can then import into a self-hosted installation on your own server. I tested this out with a small account and had no issues at all. Everything just worked, and, I'll be honest, it's been so long since an online service let me easily export all my data and do what I want with it that I'm still looking for a catch. But so far as I can tell, there isn't one.
Self-hosted, open source, export-your-data web services that are actually better than their proprietary counterparts are a rare thing, but Zulip is doing it right. If you're looking for a Slack replacement, and IRC won't do, Zulip is well worth considering. ®