So I set up a XMPP server in my homelab this weekend to see how the ecosystem has evolved since the last time I used it. Only took me a few hours.

It seems like it has pretty much everything we'd expect from IM these days? E2EE with forward secrecy, group chats, message archives, reactions, file uploads, audio messages, voice and video calling, location sharing, etc. etc. It's even federated!

Why are we sleeping on this tech? Is there some unmitigated downside I haven't discovered yet?

#xmpp

@smn

> Why are we sleeping on this tech? Is there some unmitigated downside I haven't discovered yet?

No. The other tech has better advertising .. and that's all there is to it.

Happy to have you back on #XMPP !

@gnemmi @smn ive always liked xmpp. only barrier ive seen is getting nontechnical connections to onboard.

@jae I'll give it to you that onboarding could be kind of an issue, but #XMPP has come a really long way in that regards. From the server side of things (with mod_invites) just as from the client side with easy onboarding straight from the app without having to create an account from a web page or anything like that.

Onboarding from a recent (mid 2025) client is as easy as installing the app, open it, choose create account, pick one from the drop down list of server, provide a password. Done.

@gnemmi the group of clients i maintain took pulling teeth to get them to move to #deltachat which i contribute to and run #chatmail relays on (also stefano has one on bsd.cafe!). a couple of them know about xmpp but noted they had a hard time figuring out basic account setup. i'm reasonably technical so for me, it's not an issue but i think sometimes people get intimidated by something they aren't familiar with vs the platforms that have marketing that signals ease of onboarding. to your point, if xmpp had a marketing department funded, it'd be over :-)

@jae @gnemmi

Yes, Delta is mainly made by a German company, so they have more or less the complete project in their hands. All clients are based on exactly the same library. That gives a nice "out-of-the-box" experience.

#Jabber/#XMPP is a huge and diverse ecosystem with sometimes conflicting interests or priorities. And it's an open standard with many implementations, which can result in incompatibilites.

I prefer the latter, because I see more advantages in that approach, but YMMV.

@debacle @gnemmi

> Yes, Delta is mainly made by a German company, so they have more or less the complete project in their hands. All clients are based on exactly the same library. That gives a nice "out-of-the-box" experience.

yip, i work on the project the gerrman's have built the ecosystem to use the common core. it's fairly robust and has allowed me to write a tui for #deltachat

i've also created an xmpp <---> deltachat bridge in go that's almost ready to release (working on the omemo part still).

> #Jabber/#XMPP is a huge and diverse ecosystem with sometimes conflicting interests or priorities. And it's an open standard with many implementations, which can result in incompatibilites.

true, but the fact that we have this battle-tested protocol and you can build on is really nice.

@jae @gnemmi

Can't wait to try your XMPP-Delta bridge!

Is there a public repo somewhere?

My vague impression is:

Delta is focussed on private chats (individuals, small groups) and has its strength there.

#XMPP is deliberately a universal protocol for everything: private chats, team chats, public chats, social. In my company we even built an IoT product based on it!

Still, some #Jabber clients are focussed: #Conversations_im on private chats, #Movim on team chats and social features etc.

@debacle @gnemmi currently the repo is on my system. it'll open up once its working. the omemo is kicking my ass.

i think your take on deltachat is likely spot on. but we use email as a transport layer with some bolt ons for performance

there's not much call for interop with other platforms but i can't force it on people so i engineer bridges.

@debacle @jae @gnemmi but will it give smoother experience like conversations?
@methuselah @debacle @gnemmi i think the experience is subjective with #deltachat similar to how xmpp clients all have their pros/cons. i'm still working on the bridge if you were inquiring on that. i need to collaborate with someone to figure out the best way to get the actor account for the bridge to use omemo. clear works perfect for bidirectional interop, but the omemo has scorched my brain for days :-)

@methuselah @jae @gnemmi

Idk. Never tried Delta, because it doesn't have a client my OS. Only from third party repos, which I try to avoid.

Trying the bridge will be challeging, because nobody in my bubble does use it so far 😉

@debacle @methuselah @gnemmi what operating system do you run?

> Trying the bridge will be challeging, because nobody in my bubble does use it so far

i've got people on both sides of #xmpp and #deltachat since both platforms i like a lot. ill figure it out soon i hope, but taking a step back to solve some ci issues i hope on an upstream repo

@jae @methuselah @gnemmi

I'm on #Debian and I'm also co-maintainer of various #Jabber related packages (#Dino, #Gajim, some more).

Installing Delta on Debian is easy (they provide appimage, flatpak, or snap, AFAIK), but I *strongly* prefer Debian main, i.e. not third party repos. That's easy with both Jabber and Matrix, but not yet with Delta.

Situation might improve at some point, though:

https://bugs.debian.org/1073037

#1073037 - RFP: deltachat -- chat system, uses any email server as a backend - Debian Bug report logs

@debacle @methuselah @gnemmi i came from debian for years, i can't even recall why i left. there is flatpak/appimage for the desktop clients. i'm working on a tui (unofficial) that'll eventually get packaged if appropriate. but i can understand the lean towards your preferences.

@jae @debacle @gnemmi

Nice! I was thinking I'd do a deltachat/XMPP bridge one of these days, but one less thing to do for me. My little finger told me @daniel might maybe possibly maybe be maybe interested in doing proper e2ee with a deltachat bridge (proper e2ee=dedicated client support needed).

What did you make your bridge with? (Language? Lib?)

@nicoco @jae @debacle @gnemmi @daniel https://github.com/chatmail/core#language-bindings-and-frontend-projects it's rpc so there's a few memes for it, doing transparent e2ee over the bridge might be a bit tricky though
Issues · chatmail/core

Chatmail Rust Core library, used by Android/iOS/desktop chatmail apps, bindings and bots 📧 - Issues · chatmail/core

GitHub
@fluttersh @jae @debacle @gnemmi @daniel
> transparent e2ee over the bridge might be a bit tricky though
Certainly tricky, but probably fun to do. It would definitely require either XMPP client deltachat-specific support or a more generic approach like this protoxep by @Goffi https://xmpp.org/extensions/inbox/gateway-relayed-encryption.html
I know literally zero person that use deltachat so there isn't a lot of incentive for me to start anything related to that… but who knows, fun and/or funding could be enough.
XEP-xxxx: Gateway Relayed Encryption

This specification describes a mechanism for end-to-end encryption with gateways that is compatible with third-party networks.

@nicoco @jae @debacle @gnemmi @daniel @Goffi would b interesting to see what we can do with both lol, you could make https://conversejs.org/ a webxdc app and use it on top of apps that support webxdc or chatmail could have a xmpp transport compatibility, but xmpp s2s for me is not a resendy as email
Converse

Converse.js - Open source, web-based XMPP chat client. Self-hosted, customizable web chat with end-to-end encryption.

@nicoco @debacle @gnemmi @daniel the bridge is in go, it works bidirectional and for each contact or muc it will create a new deltachat group for the user and his actor (bridge account for xmpp). its designed for single users vs everyone sharing the same bridge endpoint.

its been a while since i got deep into xmpp spec but its been fun so far. missing piece is omemo on the xmpp actor account which is proving tough.

@jae @gnemmi yeah, I just ran into this actually. Told a friend that I'm using Conversations on Android. Then they tell me it's $7 on the play store. I was blindsided by that because I installed it from F-Droid, where it's free.

Installing F-Droid or paying the play store tax is high barrier of entry for non-technical folks to experiment with the tech.

Which is something I say with mixed feelings, because open source developers absolutely deserve to be compensated.

@smn true .. but it's also true that it has become pretty common to find #conversations_im for free several times a year .. and sometimes even a month. @daniel has been very generous several times this year, setting Conversations for free download from the Google Play Store, specially at #diday

@smn @gnemmi i can appreciate that dilemma. for the newcomer, dropping 7-20$ on an app just to test often isn't reasonable or at least not a priority when signal/whatsapp/etc "just works".

but hey, many of us technical people are on xmpp (or dual like me on #deltachat) so we can still keep in touch.

btw what xmpp server are you running? i'm fleshing out an implementation based on an xmpp-go setup i found on github since i'm sort of obsessed with go. :-)

@jae @smn you guys, let us not forget that we still have #Quicksy for free on the Play Store

@jae @gnemmi I went with ejabberd, since that's what I used to run back in the day.

Very cool that acme support is built in these days, but I wish the docs gave better advice for how to expose port 80 to succeed at the HTTP-01 challenge. Fortunately I already had a reverse proxy listening on port 80 so setting that up for this project was simple. I do feel like a lot of novice or even intermediate sysadmins might get stuck here though.

Not thrilled about the plaintext password default either.

@smn @gnemmi i'm hoping to find a way to do dns01 challenge since acme webhooks are always one more thing to maintain.
@jae there's always certbot 🤷‍♂️
@smn certbot+cron/systemd-timer usually does the needful

@jae @smn @gnemmi

I'm co-admin of both #ejabberd and #prosody instances and can recommend both. Maybe the former more for a "professional" setup and the latter esp. if you are interested in one of the many community modules or with a very custom setup.

@ejabberd @prosodyim

@smn @gnemmi @jae there's Monocles, Snikket, Conversations, Cheogram, the playstore version of the last two use google unified push servers, so charge to cover costs, F-Droid version doesn't. I don't think Snikket or Monocles does that, but I could be wrong.

They're all Conversations forks.

@silverwizard @gnemmi @smn i use cheogram and it's pretty decent. although using phones these days is rare for me. i'm more of a laptop/desktop person trying to stay less connected.
@jae @gnemmi @smn yeah, I use Gajim on my lap/desktops. Cheogram mostly on my phones.
@silverwizard @gnemmi @smn gajim always served me well. i tried dino recently and had some issues with connections not receiving my messages but maybe it was my error ))
@jae @gnemmi @smn I have never liked Dino, it has always felt too "my way or no way"
@silverwizard @gnemmi @smn that hits. it feels like kiosk-mode of clients to me

@smn Free Conversations weeks on Google’s store happen from time to time.

@jae @gnemmi

…although Google kinda treats Conversations like shit.

@smn @jae @gnemmi

@gnemmi @smn

Speaking from a #Jabber/#XMPP fanperson perspective, the downsides are:

1. No good client with A/V calls for Windows. #Gajim by @gajim is on the MS store and is good, but doesn't have A/V calls, #Dino by @dino is also good, has A/V calls, but only has outdated Windows installers somewhere on the net. There is #Movim by @movim, but web clients are not everyones cup of tea. Problem can and will be solved, but atm. it is a drawback. Maybe #Kaidan by @kaidan will solve that.

@gnemmi @smn

2. Because of the long history of Jabber (since 1999!), and huge advancements in cryptography, encryption in XMPP has many options. So far, so good, but most clients are still on #OMEMO 1, which has some problems, and only few clients already have OMEMO 2 (#Kaidan by @kaidan, #Libervia by @Goffi, soon‽ also #Conversations_im by @daniel, #ConverseJS by @jcbrand and #JabberEl by @[email protected]). And there is no standard way to move decrypted message from an old device to a new one!

@gnemmi @smn

3. A/V calls typically work great for one-to-one calls, if network, TURN server etc. are working correctly. But multi-party calls are "not there yet", esp. for groups > ≈ 4 people. Both #Movim by @movim and #Libervia by @Goffi have it on their roadmap, and I'm optimistic, that it will work well later this year or the next.

That's the three downsides from my PoV, but Jabber is still my favourite chat.

@debacle @gnemmi @smn @movim Hey, SFU (big conferences) is not just on the roadmap, there is a working prototype for nearly 2 years now (based on the excellent Galène), with corresponding specs in XSF /inbox. Well was working actually, broken right now due to big changes in web frontend, but should be back soon.

#XMPP #Libervia #AV #Conferences #Galene #SFU