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?
I couldn’t find any decent XMPP clients that supported encryption and worked on both desktop and mobile without looking like they were made in 1995
For Linux and Windows, gajim works very well and is easy to use. It definitely doesn’t have an interface from 1995. If you need something easier for people on Linux, dino is even more streamlined and is extremely easy to use. I think there was an effort to make a Windows build too, but I don’t know how far along that is or if they are still working on it.
For Android Conversations is the gold standard. On macOS there’s Sikin and Monal, but I’ve never used them since I’m not a Mac or iPhone user. But all these clients support a wide variety of features including encryption.
It also doesn’t seem to function well as a Discord-like replacement, since I don’t want a separate “group chat” for every single topic. I want a central hub where people can then join pre-existing channels like you can in Discord and Matrix.
I’m not sure I follow you on this point. XMPP has had MUCs (Multi-user Conferences) which function similarly to chat rooms/IRC channels for a long, long time. The channels are accessible regardless of what server you’re on as long as your server is federating with the wider XMPP network. There’s even a searchable list of public MUCs at search.jabber.network covering a variety of topics. Most servers allow creating new channels if you want to start a new one, and anyone can join regardless of their server.
Not sure what the problem with Gajim was. There’s a distro package already in Arch, although I usually use the AUR packages from git. I haven’t had any problem with either of them, though.
You should be able to limit MUCs so that they’re only for local users of a server and not accessible to people outside the server. Or, you can make them invite only, require a password, etc. So there are options there.
One-to-one video and audio chat works pretty well with XMPP. I don’t think group video/audio works, but I’ve never tried. I know that’s a really popular thing on Discord, so it’d be nice if XMPP had that too. I think there’s some work toward it, but I don’t know where that’s at.