Communications/IM Technologies

One of the things that’s come up recently is the topic of conversation technologies on the internet - and, specifically, centralized vs decentralized messaging protocols.

With the exception of IRC, pretty much all the common legacy protocols are dead. The common ones of AIM and Yahoo are gone (either completely or practically), and while Facebook Messenger has taken over, and Google Hangouts, GroupMe, etc, have taken up some of the slack, a lot of those are very centralized, which is (IMO) increasingly a concern on the modern internet.

I’ve been experimenting lately with Matrix, which is a federated chat system, and I host a homeserver at, if you want to create an account there and play around - I’m, should you wish to ping me. I won’t claim setup is easy, and I’m a bit unsure as to how some of the bridges work if you’ve got multiple users, but it’s at least an interesting system that seems more or less reliable.

I know a lot has been moving to Telegram, Discord, etc, but I’m just not sure centralized systems are the right option going forward - as others have expressed here as well.

What are you using? And what should one be using?

Matrix is a good federated chat protocol. You can run your server instance and talk to other server instances, somewhat.

TG is just another 3rd party stystem, though one that promises privacy via their (proprietary) end to end encyrption. Discord is basically a gamer centric slack-ish clone.

I do some sort of ARG which means I’m on all /sorts/ of chats. TG, GM, Hangouts, discord, slack… yeah, all of them.

What /I/ miss is for all of those to have an open API to interface with them, so that I can pick the client I use to talk to everyone. (eg trillian) Now everyone is in their own bubbles based on chat client, because captive eyeballs or somesuch. Lose/lose for everyone.

What should we be using? Idk. Don’t like any of them all that much. No one is interoperable, it’s all silo’d…

I’m no expert in sysadmin but I can offer my story. It was the early days of owning my first Raspberry Pi, when the model B had first come out (single core, but 4 USB and 40 pin header) and I was looking for things do to with it. I decided a home chat server could be handy to communicate with family over the vast distances of… across the living room.

Ok I know that sounds silly, but it really ended up being a much more streamlined method of sharing links or files across the network. Did I really save time and effort over just copying things into an email? Did I really gain any security or privacy from doing so only over the home network? I’m not sure, but something about using email to do the job offended my sense of efficiency.

So I ended up running an XMPP server called Prosody, and now I also have on on the VPS with OMEMO encryption running for chatting between a few family members across town and country. It’s pretty flexible, the server takes incredibly little computer power, and is easy to install, maintain, and run server-to-server communications.

Have I got gripes? You betcha. The ‘eXtensable’ part of the protocol is its blessing and its curse. Plugins and integrations with some other systems are easier to write and many exist for a lot of tasks already; OTOH it means there are often multiple competing plugins to do the same job that aren’t compatible with each other. For example: Conversations on Android and Pidgin on Linux can’t share pictures, because they use two different plugins (‘XEPs’) to handle image transfers. Still, I think it’s a solid enough protocol if more people were interested in modernizing a couple things.

Offline message handling is also a little hit-n-miss…

Riot/Matrix feels much more modern, at least on the client side, although integrations with DIY bots and such don’t seem to be any easier. Reliability seems good. The fact that they won’t support multi-accounts in the client is a decision I find strange.

Matrix supports bridges to various other protocols. I’ve not spent much time playing with them - I really should spin up a dev server. I’m unclear as to how the bridges work with multiple clients on a particular homeserver.

Is it fair to say xmpp is about passing messages around while matrix is about maintaining a distributed database is messages?
It seems like a difference between which things are built in and which things are built on top.

I think that’s generally fair - Matrix maintains more state, and can support additional services such as web hosting on top of it, though I’ve not experimented with that.

The problem is that the cost of that is a far, far heavier server with more storage requirements. On the other hand, 8GB Pi4s and external SSDs are quite cheap now…

I should consider moving my Matrix hosting to one of my connections for a while and see how that works out.