255points · 9h ago

Parley: Federated, decentralised chat that speaks plain IRC

git.mills.io·by davidcollantes·9h ago

Discussion 129 comments

bestnew
⌘↵ to post · markdown supported
advisedwang·7m ago
> No channel modes and no channel operators, which is a decision rather than a gap: a global channel is owned by nobody, so there is nobody to be an operator of it. Blocking is per person and per instance instead

That's completely unworkable. Lets say I create #some_minority, and people from many different servers join. Some shithead comes and starts screaming slurs at us. Now the admin for every server must block that person. Multiply that by every channel, and every admin is responsible for moderating the entire ecosystem. The only way they can do this is with shared blocklists, which have been a nightmare on mastodon.

0
threecheese·16m ago
Is anyone leveraging IRC/XMPP/etc for agents or A2A communication? It seems like a natural fit; all the "human agents communicating" abstractions and underlying technology pieces are in place and mature, as are methods for dealing with unruly actors.

I've wondered why I haven't seen this everywhere.

0
ciaranmca·11m ago
Oh my pi does it, not sure if that’s something from upstream or just a fork feature but from my experience it seems to work well
0
xena·6h ago
How do you plan to handle bad actors creating biblical amounts of servers dynamically and then spamming at line rate from all of those servers?
0
arm32·4h ago
That sounds pretty load-bearing.
0
y-curious·3h ago
Actually it’s a footgun gate
0
malcolmxxx·4h ago
And then, all galaxies move away from us.
0
cromka·6h ago
This is why we can no longer have nice things...
0
singpolyma3·7h ago
So rooms are "global" between whatever hosts your host happens to know about? So it's one giant netsplit party forever and only your server admin can ban someone?
0
davidcollantes·7h ago
Bans are per server (for what I have seeing). Federated rooms continue to exist if a server drops off, as no server "owns" them.
0
esseph·6h ago
> Federated rooms continue to exist if a server drops off

That doesn't answer the question.

How are you resolving things like... user name collisions when the servers reconnect?

0
davidcollantes·9h ago
Parley is a chat network with no centre.

Every person (or team) runs a small instance for their own domain. Instances find each other through DNS and well-known identity documents, exchange signed messages over HTTPS, and present the whole federated network to ordinary IRC clients such as Lurker, Mango, mIRC, WeeChat, Textual, etc., without the need of any plugins.

0
someonebaggy·7h ago
This is an AI-generated summary of TFA?
0
BonerWiener·7h ago
It's a copy paste of the readme intro. Don't know why it's left as a comment here
0
altilunium·9h ago
can any layman user simply use it without running their own instance?
0
davidcollantes·9h ago
Yes, you will need to know someone running an instance to create an account for you.
0
grim_io·8h ago
So... no? :)
0
NoboruWataya·8h ago
Presumably if the protocol becomes popular you will have public instances that anyone* can sign up to, the same way other federated services work now.

(It's approximately as hard for a layman user to sign up to a Mastodon instance as it is to sign up for X. The fact that most layman users don't do that is a separate issue.)

0
jagged-chisel·8h ago
Yes, you can try it without running your own instance. You will need to use someone else's instance.
0
davidcollantes·8h ago
If you (top and child commentator) want to try without running your own, please send me an email: david dot collantes at gmail dot com.
0
rixed·7h ago
Instead of a separate federated network for a single app, why not implement the app on top of a pre-existing federated network, so that nobody has to create yet another account? Like, on top of atproto or activitypods or...?
0
RobotToaster·6h ago
Or matrix
0
flymasterv·2h ago
I'm searching for a simple, self-hosted chat system that allows me to host unlimited bots and send messages (with notifications) to my iPhone easily.

I currently have an XMPP server running, which is fine, I guess. I've looked into chatMail. I have considered hosting an IRC server.

At this point, I'm considering just setting up my own NTFY server and writing a chat client for it.

Does anyone have any ideas for what the lightest weight, simplest solution might be?

0
mxuribe·2h ago
Curious, why the interest in building your own ntfy client (instead of using the one already built/available)?

By the way, for years now, i have used a little python (cli) app to send messages into a private matrix room. This room has 2 people in it: me and a bot. (The bot is simply the matrix account that sends the messages.) I went this route because i did not want to install another app - such as ntfy - on my mobile simply to receive server notifications, etc. And, since i had ben on matrix already chatting with friends, it happened to be a low-effort approach. To clarify, i am no longer self-hosting my own synapse home server...so i'm simply piggybacking on the matrix.org one...but that has helped at least unify my notifications and comms to a good degree.

Now, if you were to aske me to implement my "notifications system" via a different approach, funny enough, i would gauge between XMPP and ntfy to see which is lighterweight....because i believe them to both be quite light on the need for resources. I don't know which is lighter (sorry, i know i'm not answering your question). however, i *think* the ntfy server is less hasle....Only because xmpp takes a little more work to setup...at least that was my experience a couple of years ago. I cast no shade on either xmpp nor ntfy - because to me boh are awesome...i' m merely saying that resources needs aside, i wonder if ntfy might need less time from YOU.

0
flymasterv·1h ago
I'd build my own NTFY client to enable two-way chat. It's not something I'm seriously considering, because it's obviously a bad idea, but that's about where I am.
0
stackghost·23m ago
>I'm searching for a simple, self-hosted chat system that allows me to host unlimited bots and send messages (with notifications) to my iPhone easily.

I do this with IRC. I used to have a blog post up about it, back when blogs weren't just training data providers for LLMs, but I'm afraid it's been deleted.

tl;dr IRC works great, but you need to wire up push notifications. For android I used pushbullet, for iOS I am still evaluating the alternatives but pushover looks okay. IRC itself is nice because the protocol is shit simple, to the point that if you can type fast enough to respond to the pingpongs you can cosplay as a bot using nothing but telnet. As a text protocol it's easy to inspect and doesn't require binary decoding of packets for debugging.

I recommend the Ergo ircd. It ships as a single binary (golang), can support tens of thousands of clients, is at the forefront of the ircv3 modernization initiative, and is under active development.

0
rough-sea·2h ago
you should look at celld
0
Conlectus·7h ago
There’s a specific downside to LLM-based development that people can get neck deep in a new project without interfacing with the existing work in the field.

In this case, this is basically a poorly specified implementation of half of XMPP. Of course, I half expect the LLM would have mentioned that at some point, but the repository does not.

0
dewey·6h ago
That is currently still the differentiator between people producing code and shipping something and people who care and actually have years of experience shipping. At the current state how well you steer the LLM and which questions you ask still matters, maybe in the future "build me an app" will give amazing results, but right now you still need to know what you are doing.

In this case, it's just a waste of tokens as something not very unique was generated that doesn't have a real use case, or solves anyone's problem. As with many AI generated projects, I'm willing to bet that OP themselves will not using it any more in a month.

0
RGS1811·6h ago
I've done this a few times. If I had to gesture at the root cause I'd say: LLMs lack curiosity and are trained to complete assignments, not to question their validity, so both the research phase and the questioning of intent tend to get short shrift prior to building anything.
0
segmondy·6h ago
or maybe they know about XMPP and prefer IRC. I have always wanted to build one of these on top of IRC. I grew up on IRC and sometimes just the nostalgia of familiar tech is what drives us to build towards it not how good it is.
0
aunderscored·8h ago
Interesting. Why not use an open link network? These will result in around the same state. Spam _will_ be an issue here, in general. And with a different backend you're going to struggle to use preexisting tooling to handle it.

Using & channels is fun, I'd be interested to see how many bots and clients fall over dead when faced with that particular bit of IRC history.

0
someonebaggy·7h ago
IRC linking is a mess, in part due to the spanning tree requirement. Also the server to server protocol in the RFC is spoken by zero servers so you have to pick which unofficial protocol you like best. May as well invent your own that actually fits your use case.
0
user2722·7h ago
I had a pseudo-plan for something like this but for reasons related to privacy I had two types of chatrooms:

* regular chats, existing only on the server, no leaking the chat transcript except via users, but never via server to server.

* chambers: a global chatroom, located at a server, maybe with a MQTT anyone could subscribe to.

This never left the early planning stages though, but I thought the segregation between federated chatrooms and regular chatrooms was of interest to keep in sync with IRC open but closed nature of chats.

0
Fastidious·7h ago
That seems to be similar on this one. &room is local, while #room is federated.
0
myaccountonhn·8h ago
I quite like this, but it feels like spam could quickly become a concern.
0
davidcollantes·8h ago
That is always a concern, yes. You can block users, and entire instances, that spam.
0
ad_fontes·2h ago
This is pretty much just a reinvented Matrix protocol. Nearly identical.
0
mxuribe·1h ago
To be fair, if i recall correctly, some of the folks who started up matrix protocol (and associated project) came from/and loved the IRC world (e.g. the rooms concept, etc.)...so it stands to reason that matrix and irc have at least some *conceptual* similarities, and hence other stuff that spins off from or leverages IRC may also appear similar to matrix.
0
Klonoar·1h ago
> "Scrollback that follows you rather than your client"

This form of LLM speak annoys the absolute shit out of me. It's a bot trying to emulate the worst reassuring sales copy you could imagine.

0
someonebaggy·7h ago
Vibecoded?
0
bigfishrunning·7h ago
clearly.
0
mococa·6h ago
Besides not having C runtime linked (which is great for scratch/distroless Docker images) - any other advantage of using a pure Go SQLite instead of the C binding?
0
Marlinski·8h ago
Give me a day and I'll implement it in my agent-oriented IRC server https://github.com/marlinski/airc !
0
padolsey·8h ago
Both cool and worryingly convenient for the botswarms we've been warned of...
0
shreddit·8h ago
This is exactly what i was thinking about for the last few weeks (but am too stupid to implement myself).

It’s like email just for IM…

0
zaik·7h ago
You're in luck: Some people already thought of this, submitted an RFC to the IETF and implemented it. It goes by the name XMPP.
0
yvdriess·8h ago
Many earth rotations ago, I was IMing through an mIRC bot because I refused to install MSN. This kind of reminds me of that too.
0
Athas·8h ago
I used Bitlbee until not that many earth rotations ago - it's an IRC daemon that provides bridging of various other chat protocols. It worked way better than you would expect, especially back in the day when you could use XMPP to connect to the various proprietary chat services.

I didn't stop using it until I stopped caring about those chat services.

0
doubled112·7h ago
These days I run a Matrix home server with bridges to Slack and WhatsApp so I can use fewer chat clients.

I do wish the Matrix client situation was less messy.

0
jagermo·6h ago
is there a list of public instances one could join somewhere? I kind of want to dip into irc again. it was peaceful.
0
davidcollantes·6h ago
The idea (what's encouraged) is that's so simple you can run it yourself. If you email me (email on profile), I can create an account for you on mine.
0
sailfast·3h ago
Parlay?
0
tonymet·4h ago
IRC is popular because it’s bad. I don’t believe there will ever be a replacement for this reason.
0
lnxg33k1·5h ago
But isn't IRC already federated?
0
davidcollantes·5h ago
You can link servers (Libera, for example, has many), but they are not federated, nor decentralised (services are used for registration, etc.).
0
ptman·4h ago
Closed federations. Only trusted servers
0
pixel_popping·7h ago
The connection to git.mills.io was interrupted while the page was loading.
0
davidcollantes·7h ago
Sorry, I am sure it is the HN effect.
0
okwhateverdude·8h ago
lol, so XMPP, but instead of XML, it is IRC. Alright, I dig it.
0
singpolyma3·7h ago
Instead of TCP+XML it's HTTP+JSON

The IRC is just a front end. Could use any front end

0
calvinmorrison·7h ago
I recall this bait and switch. It was called Slack
0
bigfishrunning·7h ago
Slack is pretty centralized, and also closed. You can't self-host at all.

Slack is a *different* bait and switch.

0