Except no.
You can't even have a conversation between Conversations and Fluux because OMEMO is enabled by default in Conversations and there is just no OMEMO support in Fluux - despite it being actually modern one.
Gajim works but Pidgin doesn't even show "I sent you an OMEMO encrypted message but your client doesn’t seem to support that". Just like images, which is a first party in Telegram and even WhatsApp.
So much for 'just works'.
I worked on adding OMEMO2 support to Converse.js via libomemo.js and I tested it against Kaidan.
Anyway, there is a discovery mechanism, and clients do adapt the version used by peers, so there is no incompatibility. Kaidan choose for a while to have only OMEMO:2, because resources are limited and they were going for the latest version first, but resource are limited for everybody, and it took times for others to implement OMEMO:2 too.
NLnet/NGI did (and still does) gave financial support on several XMPP projects (including mine, huge thanks to them), and, curiously, when there is money to help, implementations happen. That's problem nb 1 with XMPP: lack of financial resource.
() GUI (notably web UI) is being reworked, not stable yet, but the CLI is pretty solid.
My limited experience is that it's not the case. When I tried to join a few rooms I got insulted because my client apparently used extensions that weren't supported by some XMPP enthusiasts' clients, so my client sucked and I had to change it and use an ugly one instead.
I'd rather get a feature-complete protocol than an extensible one, so that at least everyone can speak the same
Not my experience. I had to give up on it since it was just completely flooded with spam, and unlike mail readers that have ways to mitigate it, XMPP clients were ill prepared. Might still work if you keep your address hidden, but as chat-like alternative to a public email it just stopped working years ago.
No. It doesn't "just work". It very much depends on which subset of the XEPs all the parties in the chain support.
> All other popular systems and servers went defunct;
Well, in this sense it does just work :)