The NGO is a decoy organization with exactly the same people (minus one) as the VC funded startup. Go look at the “core spec team” and find out which organization they belong to.
Your information on XMPP seems to be quite outdated. File transfer in XMPP is now mostly done by uploading the file via HTTP and sending the URL. Audio calls are done using WebRTC and work two ways.
“protocol extensions” (aka: incompatible)
Reality shows that implementations can very well implement the same extensions. If you don’t use extremely outdated clients you will find they do have compatible file transfer and A/V calls. ActivityPub works the same way.
Meanwhile Matrix Ltd. cooks up a completely new, incompatible protocol instead of building upon existing internet standards.
Here is what I used before I switched to desec.io: https://gist.github.com/haansn08/50565768c66c5fbf382b2bc2484e8a41
At least the private contact discovery is not very private:
The client calculates the truncated SHA256 hash of each phone number in the device’s address book.
The client transmits those truncated hashes to the service.
Phone numbers are so not-sparse that there even was a game to text your “number neighbor”. I can probably build a pretty effective rainbow table for this with my current hardware.
WhatsApp started is an XMPP client, but they use lots of proprietary extensions (doesn’t matter since they don’t federate). You can build very robust and scalable messengers with it if you want to.
The open source implementations are developed by like 1-2 guys in their spare time and they’re not far behind (and sometimes even ahead) other federated messengers which received tens of millions in venture capital funding.
Prosody and Openfire are servers while end-to-end encryption happens on the client side (that’s why it’s called end-to-end). It would be kind of strange if a server implementation talks about E2EE. The OMEMO protocol only needs server features which are widely implemented. Maybe there is an ancient XMPP server implementation out there that doesn’t support it, but you will be fine with Prosody, Snikket, ejabberd or anything else really.
All files stored on IPFS are public. It’s also incredibly slow and inefficient. You would be better off using BitTorrent.