Ok, now do XMPP. Or Signal, but with the added requirement that you want to run your own server.
I find that XMPP interoperability (terrible as it is) is still just miles ahead of Matrix. For all intents and purposes Element controls the protocol and despite that I almost constantly find friction communicating the client for Android and the desktop Electron-based client. With 3rd party clients it is a nightmare.
Don't get me wrong, it would be great if more people were using XMPP. Now that I am more involved in the Fediverse space I'm learning how many wheels are being reinvented and XMPP has already solved. If more people learned about https://movim.eu I'd be able to shut off Communick and move on to do something else to do with my life, but the reality is that XMPP failed to achieve critical mass because it never had someone to complete control the protocol.