nibbusu
39d ago
64
89
Fell
In order to answer this question it is important to understand the fundamental difference between XMPP and Matrix.

XMPP was invented at a time, where communicating online meant sending a message from one device to another.

However, the modern expectations for messaging apps are much more than that. Sending media, using multiple devices, deleting messages, editing messages, read receipts, notifications when typing, group chats, threads, and even managing communities are all things a modern messenger app should be able to do. The fundamental operating principle has shifted from mere message passing to synchronising a common state between all participants. If you think about it, nowadays, you're not chatting anymore. You're essentially collaboratively editing a shared chat history file, where the most common action is to add a message; usually at the bottom.

This is what Matrix is at its core. It's a protocol to synchronise state, and that's part of why Matrix is so complex and hard to administrate. I personally think its the better base for the future of communication than XMPP, and I havent even mentioned encryption yet.

Moving on to the practical part: Running a Matrix Synapse server is quite a commitment, but if all you want is talk to friends and family, then there are simpler options. Conduit and Dendrite are a bit easier to set up, and of course there are plenty of public homeservers you could sign up with.

If you do commit to running Synapse however, you have the option to install bridges to almost any other messaging service. This way, your friends and family can keep using what they're used to (WhatsApp, Telegram, Discord, Facebook, ...), and you just use one single Matrix client to talk to all of them.

That's what I do.

pacija
It's apples vs oranges. I selfhost and use both, ejabberd / conversations for xmpp and synapse / element for matrix.

XMPP is traditional IM. I use it exclusively from Conversations client on Android / GrapheneOS and it is really instant, supports presence (knowing whether contact is actually online), rings for audio and video calls, gives feedback about whether user read the message etc. I use it mostly for 1:1 conversations, it has all but replaced SMS and phonecalls.

I consider matrix more like 'fast forum'. Perhaps things changed but last I checked (from element on Android / GrapheneOS) there was no presence so I have no idea whether contact will get my message immediately or not. No confirmation that contact read the message. Audio and video calls not working, not even ringing when phone is locked. Quite laggy in message delivery.

So, after some years of using both, XMPP is best for replacing one-to-one SMS, video and audio calls, while I enjoy hanging in public matrix rooms, treating them like '(not really) instant forums'.

tupolef
I went from hosting XMPP to Matrix and then XMPP again in the last 10 years.

- I'm now sure that I will never convert anyone to Matrix or host a Matrix server again.

- Matrix big issues for me are that it's not really decentralized and this design impacts the server admin, the performances and the user's privacy.

- I'm still not happy with XMPP clients for Linux, most are missing Omemo or automatic turn/stun discovery and Dino is in in alpha and bugged.

- I'm sur that XMPP will have a community in 20 years, not sure about Matrix.

katzinsky
I use XMPP and then Cheogram for people who don't want to figure it out.

That way for people who don't care everything just works and for people who do they get a rich experience with E2EE. Unlike eg iOS/imessage I don't force them to use a different OS for this and I can talk to everyone from my laptop. Everything is 100% self hostable.

I don't know why you would use Matrix. Self hosting is awful, the clients are a huge mess, and it was bootstraped by the Israel based company that runs US telephone surveillance (it's kind of insane that's done in another country.)

xxmarkuski
My friends and I all selfhost own matrix homeservers and we use it to chat. It works reasonably well, but stil the administrative work required should not be underestimated, comparable to selfhosting e-mail.

Regarding features, matrix is promising and definitly innovative, but espacially the mobile apps don't have the same level of usability like WhatsApp or novel features like Telegram. Techsavvy friends can definitly use it, but you don't want to become a managed service provider for your broader family.

I use this ansible playbook to provision my server and related services (monitoring, bridges, ...) [0].

The bridges espacially make it fun to play around with.

[0] https://github.com/spantaleev/matrix-docker-ansible-deploy

dngray
Also relevant https://soatok.blog/2024/08/04/against-xmppomemo/ recently.

It's quite critical of some of the code quality of common implementations as well as the fracturing across different clients.

As for Matrix, probably element is the main client you want to use. I use Nheko on Linux.

esbeeb
I run Prosody XMPP server on a cheap VPS, and appreciate how it's a stock Debian package, greatly simplifying security updates. It's delightfully lightweight on the server.

I use Conversations as a client in Android, and Gajim in Linux.

The basics like OMEMO, file attachments, push-to-talk voice memos (in Conversations, but not Gajim) work well. All comms are at least client-to-server-encrypted, and the OMEMO-protected comms are end-to-end encrypted.

the_third_wave
XMPP + OMEMO (E2E encryption), no doubt. Open standards, multiple implementations, cross-platform and it mostly just works. Light on the server, "maintenance-free". Conversations on Android, Gajim or Dino-IM on desktop.

I tried Matrix but found it to be more complicated without adding significant functionality.

alt187
I'd say you're taking the problem backwards. Your friends and family will follow you probably because you ask them, rather than because of any intrinstic feature of the protocol.

So the real question is which one do you want to use?

In terms of server software, XMPP is lighter, easier to manage and scales better.

In terms of protocol, the Matrix protocol has an immense metadata problem. While encryption is sound, the metadata carried with every message is as good as plaintext. XMPP meanwhile provides pseudonymous rooms and minimal metadata leakage.

In terms of direction, I trust the XMPP foundation more. The Vector foundation comes from a multinational and is clearly a startup. I don't think anything good can come from the tight coupling between Vector and Matrix, no matter how much Matthew tries.

Vector also relicensed Element under a CLU (Contributor License Agreement). For me, it's a sword of Damocles.

In terms of community, it's pretty personal but I don't like the people on Matrix at all. The XMPP users seem more friendly. Your mileage may vary though. It may also not matter if you only want to talk to your already existing friends.

However, the best XMPP client is beautiful like the face of a dying man, and just as easy to use. Matrix is way ahead on client design.

vaylian
> Maybe also what’s easier to convert your friends and family to.

You will need to pick a client that you can recommend to your friends and family, because they likely won't bother to look one up. If they are non-technical, then the client is what matters most for them and you need to decide what makes the most sense given their circumstances.

On the matrix side I can recommend Element (https://element.io/) which has a lot of eye candy. I'm not sure what to recommend for XMPP.

You also need to pick a server for them, because again, they won't bother to choose one themselves. If you can, host a XMPP or matrix server yourself!

kreetx
Prefix title with "Ask HN:"!
rglullis
Matrix if any of your friends and family are on iOS. As much as I'd like for XMPP to be more popular, only Android has a decent client. Element is far from perfect, but its shortcomings are platform-agnostic.
wdkrnls
I'm curious if anyone has a setup for emacs for either of these that supports audio/video calls. Emacs seems to have basic support for text chats on both protocols, but I wish I could use XMPP JMP.chat as my phone from Emacs and initiate video calls from Emacs as well. Is there some kind of audio/video server protocol analog to the language server protocol that let's plaintext and command line enthusiasts talk to each other without having to open that giant insecure web browser thing or a monolithic chat client?
bjoli
My own experience is a two years old, but interoperability seemed not to work great. Messages frequently disappeared and all that.

As long as you stayed on the same instance everything was dandy, but writing to someone one the matrix homeserver worked most of the time.

Matrix as a protocol is more exciting than xmpp, but using xmpp (without omemo unless you are all on Conversations) is boring in a good way.

frabbit
Also: what do we know about the people and institutions developing and promoting these standards and implementations?

We've seen the appointment of people with biographies suggesting affinity with US interests, for example Katherine Maher to the Signal Foundation (and the departure of the Moxie Marlinspike.)

I see a members list for the board overseeing the spec for Matrix, but does anyone know who they are[1]? And the spec is one thing, but who controls the development of the actually used clients and implementations?

Please note I am not imputing anything w.r.t. Matrix/Element etc, but if we're bothered to put effort into E2EE then it is probably worth thinking about this aspect in addition to whether the technical basis is sound. The historical record is clear on government attempts to influence things from that end.

I have the same sort of worries about GnuPG (and the SPoF that is the hard-working maintainer.)

Maybe E2EE is not of concern to the OP, in which case disregard the above.

1. https://matrix.org/foundation/governing-board-elections/

zaik
I'm running an XMPP server for my family and have convinced most of my friends to get an XMPP address. I think XMPP is the more standard way to do messaging. I feel like all the projects that reinvent a basic thing such as instant messaging, instead of sticking to the internet standard are doing more harm than good.
kfiven
Haven't used XMPP much so can't comment on that but in case of Matrix, I use conduit (server) + cinny (client) and it's much lighter and better setup than the synapse and element. Conduit isn't super feature rich nor cinny but if you aim for rich text messages it works well.
jacooper
Imo matrix is the better protocol, however the clients are still not great. Element X is a big step up but element call is still in a kind of limbo where it's beta on desktop yet default on X.

The desktop client is capable but very very janky.

dvh
If you want to develop fast, use neither and make your own protocol that suits your custom needs.
yobid20
Neither. Xmpp is convoluted. Matrix is even worse.