Personally I find Zulip to have the nicest implementation of "topic zooming" as it still allows for a global linear view of all activity. Spectrum feels a bit more "channelized" and a bit white-space heavy but prettier.
Zulip's mobile client has come a long way in recent months too.
The hardest part though was trying to convince the community to migrate away from other social platforms. Meetup was (still is) driving me mad with their forums/discussions features which are woeful.
Do any of them allow you to see a list of who's online? That feature broke on Slack. I was told it's a known bug and in the issue queue, but it has already been months without a fix. There isn't a way to see who the regulars are, and the community looks somewhat dead without a way to see who is online.
One thing that Spectrum has that's similar to forum software is a reputation system. Others have admin/moderator status but nothing further.
Discord's mass concurrent voice chat is very impressive, but then they did hone this in 64 man WoW raids and the like. The new screen sharing they added a while back is nice too. Interesting implementation (you can pick which of the nine to watch at any given time).
Video chat is the latest I've been looking into with Zoom starting to stand out above Hangouts and Skype, especially for one to very many and multiple speakers in turn type arrangements. Zulip can hook into Jitsi and Hangouts.
This!
I got a bunch of our community to try out many of the different chat systems out there. Zulip was an interesting one as there were two points that really changed their perception of it as a platform:
1. When they were told there was a "Night Mode" - aesthetics are important! (something Slack arguably got right, IMHO beyond that it's just fancy IRC).
2. After around 5-10 minutes of playing around the penny drops as to why the stream and topic "zooming" is implemented in the way is it. Usually a "Holy Cow" moment.
Once you "get" it, going back to anything else feels like going back in time.
Yes Slack has threads, but they aren't implemented in a way that's conducive to ad-hoc interaction over longer periods of time.
Amongst others I tried: Mattermost, Rocket.chat, IRC(Cloud), Gitter, Discord, Slack, MS Teams, Twist, Hangouts Chat.
Two stood out, both open source (Spectrum wasn't when I started looking):
Spectrum: https://spectrum.chat/
Zulip: https://zulipchat.com/
These two along with Twist (proprietary) manage to deal with the threading and hybrid sync/async. Both the above also have exceptionally helpful people behind them.
The other special mention goes to Matrix (https://matrix.org/) and Riot (https://riot.im/) as their persistence syncing and federation work is impressive. Their threading and hence async story isn't as well developed yet though (https://github.com/vector-im/riot-web/issues/2349).