this post was submitted on 21 Apr 2024
156 points (97.6% liked)

Selfhosted

39964 readers
268 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 1 year ago
MODERATORS
 

I'm looking into hosting one of these for the first time. From my limited research, XMPP seems to win in every way, which makes me think I must be missing something. Matrix is almost always mentioned as the de-facto standard, but I rarely saw arguments why it is better than XMPP?

Xmpp seems way easier to host, requiring less resources, has many more options for clients, and is simpler and thus easier to manage and reason about when something goes wrong.

So what's the deal?

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 29 points 6 months ago (1 children)

I don't think you can pick out any one reason. XMPP is very old and has extensions for a huge variety of features. Many people have experience with older versions which had many major missing features (such as strong multi-device with offline support and server-side history) and a lot of the "hype" has died out long ago.

Matrix is new and made a lot of decisions that really helped its popularity.

  1. Having a HTTP-based client-to-server protocol makes web clients very easy to make.
  2. It is based on sync and merging rather than messages which moves some difficult problems (like multidevice and server-side history) into the core protocol meaning that it works well out of the box.
  3. Having HTTP based protocols make hosting it familiar for many people.
  4. The "default" Element clients have lots of features out of the box, features that for a long time were not always present on XMPP servers or clients. This gives a more consistent experience.

We will see what the history holds. Matrix is still very new and maybe the hype will die out and we end up moving back to XMPP. Or maybe something new. Overall I don't think there are major fundamental differences. I think Matrix making graph sync the core primitive to build off of was a good idea, but in practice I don't think it matters much.

You say that XMPP is much lighter. But I think that is mostly due to Synapse not being very efficient. Other implementations are fairly light. Even then my Synapse is using fairly small amounts of resources. You should also check that you are making an apples-to-apples comparison with large rooms, media and message history like you would typically see in a common Matrix server.

[–] [email protected] 15 points 6 months ago (2 children)

You say that XMPP is much lighter. But I think that is mostly due to Synapse not being very efficient. Other implementations are fairly light. Even then my Synapse is using fairly small amounts of resources. You should also check that you are making an apples-to-apples comparison with large rooms, media and message history like you would typically see in a common Matrix server.

I have a Prosody server running with about 10 concurrent users (friends/family). I just checked and it's using 32M of RAM, local storage is in the megabytes. The database I'm using as a backend for message history and such is about 70MB. The only other data is temporary cache for uploaded media, which varies depending on what's uploaded. How does that compare with a typical Matrix server for friends and family?

[–] [email protected] 7 points 6 months ago* (last edited 6 months ago) (1 children)

My Synapse install is using 94MiB of RAM and 500MiB of database disk space. CPU usage is effectively zero. I only have a 3 active users but decades of conversation history for myself (imported from other services). An uncompressed pg_dump of the data is about 250MiB which is within an order of magnitude of the raw text that I have in it. Nearly all of the conversations are encrypted so it wouldn't compress much.

Given that just running python takes 13MB of RAM it probably isn't using many resources past loading the code. At least at small scale running a Matrix server is not a notable resource burden for most people. A Matrix server written in a more efficient language (like Conduit) would likely be fairly similar to an XMPP server written in the same language. Either way unless you are hosting thousands of users it doesn't seem like this is a major problem for either protocol.

[–] [email protected] 5 points 6 months ago

It should be noted here that Synapse resource use is highly dependent on the specific usage and can easily blow up if even a single user is joining a lot of large popular rooms on the Matrix network. XMPP has no such issue and scales pretty linear with user number.

[–] [email protected] 6 points 6 months ago

How did you manage to convince friends and (especially) family to actually use Matrix? Quite impressive!