I've been trying to use Matrix to replace sites like Discord or Slack. But it seems that if a user creates an invitation-only room in a server, then invited users who are registered on other servers get errors when trying to join. Not very useful error messages either: "Failed to join room". (In my case, I tried creating accounts and rooms at nitro.chat and then at converser.eu, but friends registered at matrix.org don't manage to join).
Quite a let-down. Anyone who's facing the same problem and has maybe managed to solve it?
However, this does not necessarily mean federation is off the table, possible avenues are:
Implement our own federation protocol
Implement a promising up and coming federation protocol, polyproto
Implement the Matrix protocol (unlikely, obtuse and unstable)
Implement the XMPP protocol (battle-tested and stable)
The site isn't hosting the file. Sure you can host your own FTP etc. But there is a lot of security risks and vulnerabilities that arise because of that. You can even host your own Magic wormhole. It's under MIT license. Just have to open the ports Etc. It should however theoretically have a lot less attack surface than HTTP FTP and similar protocols. Nothing is invulnerable of course.