A month using XMPP (using Snikket) for every call and chat (2023)
60 comments
·July 29, 2025danieldk
bombela
Yep it was great. I had one client per device. Could talk to everybody. I had a consistent UX. Sure sharing pictures and videos wasn't easy then. But also the pay to use features and dark patterns weren't an issue either.
donatj
I miss the days when our best minds developed protocols instead of products. The last 15 years has been just the commodification and destruction of everything the previous generation has built.
I'm frankly surprised email has stood up as well as it has, even if it is nearly impossible to run your own email server these days.
In the mid-to-late teens IRC was making something of a comeback and then Slack EEE'd it.
icedchai
I briefly worked on an XMPP client around that time. It cemented my opinion that the protocol was an absolute abomination.
jauntywundrkind
That's quite unspecific and unhelpful.
Personally I find XMPP much makes sense. Sure it's this weird streaming XML thing, but there's a request/response pattern (IQ) inside that seems fine. I love how nicely it composes: accounts have a tree of nodes they can define for whatever content they want, which is a sensible & flexible base. Then there's pubsub, and ACL capability specs on top of that. Everything stacks relatively sensibly. The past decade has seen some good XMPP Enhancement Protocols (XEP) to create best practices & recommended feature sets.
It was such a small jump to create a full "everything app" atop XMPP baseline capabilities:
> Libervia [ed: nee Salut-a-Too] is a all-in-one tool to manage all your communications needs: instant messaging, (micro)blogging, file sharing, photo albums, events, forums, tasks, etc.
It's unfortunate that the top rated comment is uncontestable blanket desparagement. Can we raise this from a low criticism to something respect-worthy?
lmm
XMPP missed the boat largely because it couldn't handle multiple clients correctly for years - the default is to deliver messages to one of your clients, you need an extension to do the sensible thing, and that extension spent years in bikeshed limbo right as smartphones were taking off and people started wanting to use the same messenger on their phone and computer at the same time. (I've heard that performance/battery issues from XML validation didn't help either)
Personal speculation but I blame the "everything is an extension" model - it was meant to reduce fragmentation and allow clients with different featuresets to interoperate, but in practice adding a new XEP seems to have all the downsides of making a change to a non-extension-based standard (you still have to get all the clients to agree) and none of the upsides.
icedchai
I wasn't trying to be specific, just an opinion on what I experienced 10+ years ago. Others are welcome to work with the protocol and develop their own opinions.
Bjartr
In today's world of containerization and AI powered UI automation, perhaps a single user-facing client could be viable again, powered by hidden per-service clients under the hood. Where each services' UI state is continually monitored and interacted with by an AI directed by user interactions in the visible interface. That would be against the services' ToS probably, but it could work I think.
Who needs APIs when a computer can exploit the analog hole and use the same affordances as a human?
oofbey
Here's a specific complaint about XMPP, and possible explanation why nobody uses it any more. (I worked on a large-scale XMPP implementation back in the day.)
Presence. That's the colored dots indicating "is somebody online or not". The traffic needed to maintain presence scales by N^2, and in any large-scale implementation, the traffic to maintain presence data completely dominates anything useful.
Not to mention that for the past 15 years or so (ever since everybody has a connected cell-phone all the time) the whole idea of presence (am I online or not?) is either meaningless or just badly modeled.
So the result is a protocol which spends tons of bandwidth and battery maintaining metadata that is functionally useless. That's why the real world has run away from it as fast as possible.
dietrichepp
Company I worked at back then used XMPP. There was something that you could paste into the chat that would make all of the Mac clients crash, and to fix it, someone with a different client would have to join the chat and type a lot of comments to flood the history.
I am not surprised to hear the protocol is an abomination.
kentrado
Seems like a problem with the client rather than the protocol.
oofbey
XMPP fans are continuously baffled by why XMPP isn't used for _everything_. STILL! When will the world wake up and realize its simplicity and beauty?
zsiddique
You could even use an XMPP client with HipChat for your business chat. Though, I'd argue XMPP was one of the factors that contributed to HipChat's demise (it wasn't the sole reason, but trying to scale presence via XMPP proved to be a nightmare).
oofbey
Presence is the key problem. It scales badly - in terms of compute, bandwidth, and battery. And it's not actually useful. Lose lose. Solution: don't use XMPP.
opan
Matrix had similar problems and most servers just disable presence. Can XMPP not do this?
SoftTalker
Who GAF about presence. If the person answers, they're there.
FuriouslyAdrift
Trillian and Gaim... (2000 and 1999)
johnisgood
Now Gajim still exists and is maintained. :P
BGZq7
Gajim is unrelated to Gaim. Gaim was renamed to Pidgin though, which still exists.
daneel_w
Daily user of XMPP as well since over a decade. I still call it Jabber out of habit. Prosody on server, Profanity on desktop (terminal), Monal on mobile.
johnisgood
Prosody vs. ejabberd?
daneel_w
I have no experience with ejabberd. As for Prosody, it does everything I/we want it to do, is very easy to configure and runs incredibly light - the host is a single-core virtual machine running OpenBSD on 256 MiB of RAM, and we've yet to face resource shortages.
johnisgood
Sounds neat. I may self-host it then on my OpenBSD server with 512 MB RAM. I assume it supports OMEMO and all the modern extensions of XMPP, right?
johnisgood
Oh, I got another question and I cannot edit my comment. How many concurrently online people are there on the server that you can tell?
wahern
> Moving to XMPP - using prosody - worked really well for messaging, but the lack of real-time notifications on Sandra’s iPhone was sub-optimal
Were they using Monal on the iPhone? I use XMPP (Prosody) with some friends. Conversations.im works really well on Android, including push notifications. But the one iPhone user, using Monal, has said notifications don't work, and I don't know how to debug. The Monal website and commit log suggests they should be working. (macOS desktop Monal works fine for me, but it's using a normal live TCP stream to receive notifications, not cell network push notifications.)
AceJohnny2
AIUI (but actual iOS developers can correct me), for Push Notifications to work on iPhones requires the system to route through the Apple-hosted Apple Push Notification (APN)
https://developer.apple.com/notifications/
This is fairly at odds with the goal of XMPP, where the device listens to the server. But of course that model doesn't really work when the device is sleeping most of the time (and I don't know how IP or TCP connections are handled in an LTE or 5G world, but I'm sure there's a consideration there).
All this to say: iOS is hostile to XMPP.
jauntywundrkind
Apple's implementation of Web Push Protocol is also viciously inconsistent. Battery efficient yes but notifications just go missing or show up days after they were sent. Apple really has a way with keeping their own special native apps and their own services locked in.
sssilver
Another way to say it would be: XMPP is hostile to power efficiency.
zaik
Conversations is one of the most battery efficient IM clients out there despite maintaining it's own TCP connection. This is possible because Conversations can tell the server to shut up unless it's important, which reduces radio usage a lot. This extension (CSI) is quite mature and found on most servers by now.
vetrom
It's not that XMPP is hostile to power efficiency, its that Apple (and Google) gateway power-efficient edge triggering behind vendor-restricted cryptographic feature locks.
They have arguably correct reasons for doing this, but it's a false comparison to say that the software is inefficient when its just as efficient that anything else at that privilege level on the phone can do.
gsich
Wrong. Apple (or Google) also use the same TCP based approach to maintain connectivity to allow notifications. No way is an extra connection responsible for bad power efficiency, with that small payloads. This is propaganda.
msgodel
Nope. You can do push with XMPP just like everything else. The problem is that Apple demands open source client maintainers also personally maintain infrastructure with high availability to handle the push notifications rather than allowing them to delegate that to service operators where it belongs.
Apple is aggressively hostile to open source is the problem. IMO their behavior is why we don't have any nice open source chat apps like we did before the iPhone became popular.
WhyNotHugo
Somewhat fuzzy on the details right now, but:
You need to enable a plugin in prosody for notifications to get routed via Apple’s servers. The plugin is disabled by default, but included in the default installation.
grodriguez100
Can’t help reading that as “Skynet” every time.
ColinWright
Seen here:
https://mathstodon.xyz/@neil@mastodon.neilzone.co.uk/1149374...
Usage continues two years later ...
riedel
What are the actual security concerns when using OMEMO mentioned in the post? Most criticism I find is on implementations.
null
digianarchist
Wish there were more library implementations that clients could leverage.
haunter
Am I understanding right that they (two people) only talk with each other? Or at least they only talk with each other through XMPP?
rdm_blackhole
I am making notes of this for if/when Chat Control gets the green light from the EU parliament.
rlpb
I've been a big XMPP fan, having deployed it at customer sites more than a decade ago, running my own self-hosted service for friends and family, and so forth.
I'm disappointed that the experience is still not at feature parity with proprietary solutions. For example, Conversations.im is a great Android client for XMPP, but it still does not support live location.
There's so much potential to be better than the proprietary solutions, too, for example with OsmAnd integration (https://codeberg.org/iNPUTmice/Conversations/issues/11).
zie
Interesting. I would have never thought of using XMPP to share location info like that.
I use Overland[0] and a custom server implementation that lets people I care about see where my phone is(and presumably me).
We were living in the future. Around ~2010 we could use Jabber/XMPP to chat with people on various community services, Google Talk, LiveJournal talk, etc. Besides great Linux clients, macOS had iChat which supported XMPP, etc.