Things we were looking for:
- Separate work / personal accounts (i.e. not just Skype, Telegram, etc.)
- Decent native apps for macOS, Android and iOS, bonus points for Linux and Windows
- Reliable notifications across those platforms
- Tracking unread messages across platforms (i.e. you get the whole history everywhere, everywhere knows what the last message you read on any device is)
- Some basic niceties like the ability to drop images into a chat and have them show up across all devices
That's it, really. Aside from the last one, that's almost the definition of group chat. It doesn't sound hard. All self-hosted alternatives failed.
Things that couldn't hack it:
- Matrix / riot.im
It seems mostly the Achilles' Heel is apps and reliable notifications. This seems like it shouldn't be that hard, but almost everything fails there. Most platforms couldn't reliably have message show up punctually on all platforms. Sometimes the clients took 15% of a laptop's CPU idling. Often messages just wouldn't show up until you explicitly opened the app on mobile.
So, like I said, now we use Slack. And we're mostly happy. I had to fight the dork impulses to start writing my own version of this and get back to work that mattered.
Hipchat did this amazingly well. There was a strong guarantee that a notification would be delivered - either email or app.
I don't think a lot of others do it well. It seems that everyone is mucking about threads and UI and emojis.
I've had many times where I was looking at a DM room with someone in Hipchat, with the window focused, and it was still sending me emails with every message from them like I was AFK. This is especially common on the mobile apps, both Android and iOS. I'd often be chatting on my phone at lunch, and come back to my computer to find 50-100 emails of every reply I'd gotten in Hipchat.