It's just that you need a client and server that supports those features. Daniel Gultsch has written an Android client[1], that's as good as it can be. He also offers a maintained XMPP server [2] providing the full-featured counterpart. But if you want to self-host, ejabberd supports all the features as does Prosody. For iOS users, there's Monal which is slowly getting there.
Among other things, my server has message archiving configured for MUCs, but Conversations is the only client I've ever been able to get to sync that history locally. That's something I just don't ever have to worry about with Matrix. (Not that I don't have other complaints with Matrix.)
Also, Gajim has support for MAM and can sync everything locally. I believe Monal has it, too.
Yes, I've heard that Gajim and Monal support it. I'm running both of them right now; Gajim doesn't appear to be fetching history from the server for the MUC I'm looking at in either the chat or history windows, Monal seems to attempt to but shows a progress spinner indefinitely. Conversations successfully loads history from the server; I can scroll back to well before I got this phone so I know it's not just local.
1. Store and forward 2. e2e encryption 3. Messages received on multiple clients at the same time, with clients being able to reconnect and pick up the complete conversation history.
In theory, all possible.
In reality, none of the clients I tried supported the same combo of XMPP plugins and encryption methods.
Oh, and I need clients that work on MacOS, Windows, and Android.
I am using conversations legacy on Android right now because that works with how ejabberd is setup on my machine, and how ejabberd is setup works with the clients other people I want to talk to are using.
I gave up using XMPP on a laptop since I'd get encrypted messages with the wrong key sent to other devices except whichever one I'd used most recently to send a message with.
I never did manage to set sending images working at faster than ~2KB/s.
It is like I am back in 1996 and using AOL IM, but worse.
To have OMEMO working between multiple clients but the same user, make sure they’re all running and send a message from each client to your OMEMO contacts so they learn all your different keys and send answers encrypted for all of them.
In regards to Matrix. There’s only one reference client at the moment. But once other clients emerge and the protocol gets extended, they’ll probably have the same fate in that many 3rd party clients won’t support all features.
Conversations doesn't display when your friends are online or not, which is fine if they are almost always online but if they are offline a lot, then depending on the server configuration and the phase of the moon, messages sent while offline go missing (silently of course).
EDIT: I think the only setup I could whole-heartedly recommend non-technical friends is Conversations talking to Conversations with Prosody default-settings server(s).
If matrix actually does succeed and continue to change I think it will result in having only 1-2 server implementations and 1 client per platform. A hobby dev can't possibly keep up with all the features being implemented by a whole team working on the main client.
For example, Apple adds person to person payments in imessage and it suddenly just works for every single imessage user. If someone did that as a feature on top of matrix you now have a situation where some clients support it and some don't so the feature never really gets used as its too unreliable. Maybe over time the feature rolls out to more clients but there will always be some devs who think "No I don't like this feature, I won't ever add it"
I guess things are a little simpler here since it might be possible to implement new features without server changes as they may just work on top of the standard matrix spec.