Depending on definitions, you could also include rocket.chat, and Zulip (open core). There's a bunch.
As to federation, the ActivityPub protocol underlying Mastodon, and a bunch of other projects, was originally designed to support it -- but the devil's in the details, particularly regarding finding a common data model (do you have topics within channels, like Zulip does? what do you support within a channel beyond plain text messages? etc)