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:
- Jabber
- IRC
- Rocket.Chat
- Mattermost
- Zulip
- 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.