It's not quite federation, but I've been contributing to an amaaaaazing bridge tool called Matterbridge:
https://github.com/42wim/matterbridgeWorks for: Slack, Zulip, Mattermost, IRC, Telegram, Gitter, Rocketchat, XMPP, Steam, Twitch, Riot, and some others.
Some of the nifty things it supports (to various degrees):
- rethreading of Slack messages between instances. (future) interop with Mattermost possible.
- edits and deletions going through most platforms.
- relaying of "user is typing" messages on Slack. (future) interop with Mattermost possible.
- (future) hack to relay emoji reactions via editting a "prosthetic attachment" in Slack.
- sync'ing channel topics.
- (future) still not generalized, but on a local branch, I've been using an option to set a channel with a language, and have all incoming messages translate via Google Translate.
This last feature I'm pretty excited about. The goal is to allow anyone who finds themselves interested in #un-projet (that's french) to simply create #un-projet-en, and have everything auto-translated to Ye Olde English. If people in #un-projet don't understand your english replies to their french nonsense (ha!), they can create #un-projet-fr and have all your english belligerence translated into their One True Glorious Language.
As stated, this allows bridging between many different services. It's config is via toml file, and not a UI, but I am excited to later build that out. I'm particularly excited to explore how public chat gateways could be offered as a community service, kinda like TravisCI.
Like imagine if someone could send you a link, as a member of a Slack or Mattermost team, and logging in would allow you to join a giant multi-team/multi-platform gateway that others were already using. I feel that this could help un-silo us until we all figure out the one true protocol ;)