I recently created a Matrix channel for my open-source project. It's really quite good. They need to work on the threading (I prefer Slack's model), but really it's 90% as good as Slack for my use case of an OSS community.
I much prefer Zulip's thread model to Slack's (it it bolt-on and poorly done: threads have no titles, they get lost in history as there is no way to list threads, and they are optional so people only use them some times), but I prefer Slack's UI to Zulip: in Zulip everything feels a bit 'tight' and too close together. Also the big outline box for keyboard navigation is distracting to me.
Seems like an interesting study in developer-driven design: in Zulip the mental model is much better, but the appearance of the UI isn't as nice.