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 would highly recommend looking at Zulip and telling me what you think. a good example of Zulip in action is the Rust communities Zulip instance.
rust-lang.zulipchat.com
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.
Apparently it's already in the protocol, just needs UI support from the clients. Not sure if they use Slack model though