The problem with omemo, jingle, etc. is that you have makes sure that the XMPP components you use support them. It would be fine if all popular implementations support those features, but that's not the case.
So you can't just say, let's use XMPP. You have to be very specific and make sure people use the right versions.
And you probably need 'Component "conference.example.org" "muc"' for any kind of 'room' support.
The the next question, does prosody have the equivent of federated rooms in matrix. Here is a list of XMPP extensions in the documentation:
https://www.prosody.im/doc/xeplist
I guess the answer is, there are no federated rooms in prosody.
Another question is whether it is possible to send someone an XMPP message when that person is offline. I have no idea how to search for that.
It seems that some people that host XMPP servers should select a set of required extensions with specific versions and give the whole thing a name and version and use that in lieu of “XMPP”. Likewise, clients would need to provide and claim compatibility with the extended XMPP. Has this not been done before?
> The problem with omemo, jingle, etc. is that you have makes sure that the XMPP components you use support them. It would be fine if all popular implementations support those features, but that's not the case.
Isn't this also the case with Matrix that no implementations except the official ones support E2E encryption?
> Isn't this also the case with Matrix that no implementations except the official ones support E2E encryption?
This isn't true. There are independent working E2E implementations in weechat-matrix and pantalaimon (python-nio), nheko (mtxclient), and even a read-only one in purple-matrix. Meanwhile lots of independent apps build on the official SDKs (e.g. Seaglass on macOS, bots like Matrix-Recorder, the various Riot forks, etc)
In Matrix, clients are supposed to implement the full Client-Server API. If a client leaves out e2e then it cannot claim to implement the matrix protocol.
Given that 1.0 of the full matrix protocol was published only a few days ago, it makes sense that anything other than the official implementations are behind. E2e in the official implementation is not that old either.
Even the official implementations need some work to be useful. For example, cross device signing is not there yet.
Simple retaining messages until the client is online was supported since ages, I don't think there is XEP for that but I could be wrong. More elaborate scheme with persistence, multidevice access, paging etc is here: https://xmpp.org/extensions/xep-0313.html
> In Matrix, clients are supposed to implement the full Client-Server API. If a client leaves out e2e then it cannot claim to implement the matrix protocol.
Just a note - without XEP-0198 you will be losing offline messages if your connection is unreliable. I think most desktop jabber clients still do not support it.
> So you can't just say, let's use XMPP. You have to be very specific and make sure people use the right versions.
I too ran an XMPP server for years, used plaintext and OTR, it was nice.
This was in the days before everyone had tablets, phones and laptops. I used ChatSecure (formerly Gibberbot) on my phone and Pidgin on my PC.
OMEMO wasn't invented then and nobody else had the double ratchet so I had to just deal with the fact there wasn't multi device support and E2E.
Google and Facebook both offered XMPP bridges too. Google and Facebook have discontinued such services. Voice/Video never worked with them and file transfer with Pidgin never worked with Google Talk.
Now in today's world, how am I seriously going to convince my friends to use XMPP when they will say, can we use camera/video, oh do we have group E2E too?
Am I seriously going to say "lets use this XMPP client for chatting in text because it supports OMEMO, and lets use this other client because now we want to have a video call?".. What am I going to do when they're on Android?. Conversations.im is nice, but there's no voice/video with that.
The problem simply is there's no reference client that does everything. Many of the clients are ancient fugly GTK clients, and if they do Jingle it's only on Linux (Pidgin, Gajim, Telepathy based etc)
That said, self hosting matrix seems to be similarly hard to execute at this point in time - simply too many opaque and moving components on the server side.
The riot client is also incredibly slow for my taste.
Installing Synapse is very easy actually with Pip, however as this OP showed that using your own identity server is also necessity. FOr that you want https://github.com/kamax-matrix/mxisd
But this is what I've been pointing at; to self host XMPP with multiple domains and per domain settings, I need prosody, nothing else. Not identity server, no video servers, etc. This is the based of my problems.
on what platform is riot slow? if android, give riotx a try - it’s roughly 6x faster.
in terms of too many opaque moving components serverside; the baseline is just a homeserver. pip install matrix-synapse and off you go. configure your client not to use an identity or integration server if you are worried about them.
Matrix tries to do a lot more than XMPP. In my experience, people find XMPP too limiting, so they don't use it.