Parley: Federated, decentralised chat that speaks plain IRC
Thread
Loading the complete thread in the background. This saved snapshot is available now. Refresh
Unofficial Hacker News client; not affiliated with Y Combinator.
Parley: Federated, decentralised chat that speaks plain IRC
Loading the complete thread in the background. This saved snapshot is available now. Refresh
Unofficial Hacker News client; not affiliated with Y Combinator.
davidcollantes · · focus · HN ↗
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.
altilunium · · focus · HN ↗
davidcollantes · · focus · HN ↗
grim_io · · focus · HN ↗
jagged-chisel · · focus · HN ↗
NoboruWataya · · focus · HN ↗
(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.)
davidcollantes · · focus · HN ↗
someonebaggy · · focus · HN ↗
BonerWiener · · focus · HN ↗
xena · · focus · HN ↗
theandrewbailey · · focus · HN ↗
[deleted] · · focus · HN ↗
[deleted]
myaccountonhn · · focus · HN ↗
davidcollantes · · focus · HN ↗
shreddit · · focus · HN ↗
It’s like email just for IM…
yvdriess · · focus · HN ↗
Athas · · focus · HN ↗
I didn't stop using it until I stopped caring about those chat services.
doubled112 · · focus · HN ↗
I do wish the Matrix client situation was less messy.
zaik · · focus · HN ↗
someonebaggy · · focus · HN ↗
padolsey · · focus · HN ↗
okwhateverdude · · focus · HN ↗
singpolyma3 · · focus · HN ↗
The IRC is just a front end. Could use any front end
okwhateverdude · · focus · HN ↗
I wish them the best of luck. Federated systems struggle to achieve critical mass, and if they do, large corporations tend to snuff it out. I distinctly remember Google committing to The Microsoft EEE strategy with XMPP. We've left behind lots of great ideas in the last 20 years
singpolyma3 · · focus · HN ↗
nahid-fahh · · focus · HN ↗
[dead]
aunderscored · · focus · HN ↗
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.
someonebaggy · · focus · HN ↗
aunderscored · · focus · HN ↗
someonebaggy · · focus · HN ↗
Marlinski · · focus · HN ↗
itomato · · focus · HN ↗
Put the issue context in a #channel and invite external parties/entities, bring the results back to the work.
I have tested it but the complexity didn't justify the results in my experiment. I couldn't get it accepted into Atlassian Marketplace, either.
someonebaggy · · focus · HN ↗
bigfishrunning · · focus · HN ↗
nateb2022 · · focus · HN ↗
dgl · · focus · HN ↗
[dead]
user2722 · · focus · HN ↗
* 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.
Fastidious · · focus · HN ↗
user2722 · · focus · HN ↗
calvinmorrison · · focus · HN ↗
bigfishrunning · · focus · HN ↗
Slack is a *different* bait and switch.
0x1bparty · · focus · HN ↗
singpolyma3 · · focus · HN ↗
davidcollantes · · focus · HN ↗
esseph · · focus · HN ↗
That doesn't answer the question.
How are you resolving things like... user name collisions when the servers reconnect?
davidcollantes · · focus · HN ↗
pferde · · focus · HN ↗
With Parley, where anyone can bring their own instance, and they are not guaranteed to not to be malicious, that could be an interesting issue to solve.
wang_li · · focus · HN ↗
someonebaggy · · focus · HN ↗
pferde · · focus · HN ↗
Although it must wreak havoc on many IRC clients, since the @ sign has a very specific meaning in the IRC protocol. :)
davidcollantes · · focus · HN ↗
_flux · · focus · HN ↗
stackghost · · focus · HN ↗
Conlectus · · focus · HN ↗
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.
RGS1811 · · focus · HN ↗
jeremyjh · · focus · HN ↗
j45 · · focus · HN ↗
orangedog · · focus · HN ↗
What exactly are we criticizing?
sugarkjube · · focus · HN ↗
If you tell it to "build me an application X to do Y using programming language Z", it will comply.
If you interactively ask "I need X, can you suggest some options? use an existing product ? or build something using a library ? or build entirely myself ? can you suggest alternatives with pro's and con's ? Anything I should think of before deciding ?" then you will get an entirely different answer.
Maybe we need additional modes, aside from thinking mode, agentic mode etc. we need e.g. "sparring mode" ? or does such a thing already exist ?
chrisweekly · · focus · HN ↗
dewey · · focus · HN ↗
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.
orangedog · · focus · HN ↗
How you went from seeing somebody's post to deciding they don't care is a pretty big jump, one that isn't warranted. This kind of post seems like the old but now more elaborated form of hating on something that you don't even know what it is.
It just isn't fair to the work that has been put in.
dlkasajiewo · · focus · HN ↗
Brian_K_White · · focus · HN ↗
MisterMunchkin · · focus · HN ↗
segmondy · · focus · HN ↗
jeremyjh · · focus · HN ↗
aidenn0 · · focus · HN ↗
PunchyHamster · · focus · HN ↗
edhelas · · focus · HN ↗
nextaccountic · · focus · HN ↗
F3nd0 · · focus · HN ↗
TJSomething · · focus · HN ↗
WD-42 · · focus · HN ↗
someonebaggy · · focus · HN ↗
IRC (real IRC) solves this by not solving it, and accepting that message order can differ between servers. If two operators kick each other on two different servers at the same time, usually both get kicked - the command is validated on the origin server and the rest of the network takes it as gospel, even if it doesn't make much sense in their own local state.
dale_glass · · focus · HN ↗
I don't know how it just happens that sending text messages to people can manage to result in specs that are painful to implement.
edhelas · · focus · HN ↗
monkeywork · · focus · HN ↗
Can you provide more details here? I've never seen an issue with the protocol at all, more issues with feature difference between servers depending on what they have decided to implement or not.
packetlost · · focus · HN ↗
dale_glass · · focus · HN ↗
For instance, it works as a constant, uninterrupted stream. You never close the document until the disconnection. Which means you absolutely have to parse it with a stream parser.
It could have been something sensible, like a document per message: "Here's 300 characters of XML document: <xml>....". But nope.
And what's up with this? <a href="https://xmpp.org/extensions/xep-0394.html" rel="nofollow">https://xmpp.org/extensions/xep-0394.html
tecleandor · · focus · HN ↗
That made me remember IBM JSONx... <a href="https://www.ibm.com/docs/en/datapower-gateway/10.6.x?topic=20-jsonx" rel="nofollow">https://www.ibm.com/docs/en/datapower-gateway/10.6.x?topic=2...
F3nd0 · · focus · HN ↗
Are there more elegant or natural ways to do it? Probably. But when you say ‘extremely complex’, saying ‘codepoints 7 to 15 should be bold’ is not what comes to my mind.
amenghra · · focus · HN ↗
dale_glass · · focus · HN ↗
* It's not standard. You can't plug in some normal formatting library there and be done with it.
* You'll probably end up having to write conversions back and forth.
* It's fragile -- if anything gets misaligned it'll break
* It's tooling unfriendly. Think things like Nagios, Grafana, etc sending formatted notifications. Everything can do this or <b>this</b>, but practically nothing is set up to accommodate this format.
* It leaks into other subsystems. You can't eg, just search/replace/insert/delete words if you need to for any reason without breaking this.
Is it the worst thing ever? No, but it seems to go with the pattern that nothing in XMPP is normal or comfortable. Everything has this weird particular flavor to it and more complexity than necessary.
If it were up to me, my option would be to support 2 things: Markdown for simple cases, and embedded HTML for when you really have to get fancy. Each of those can be handed out to existing code and you don't ever have to keep adding extensions because what if people want colors or something now.
Groxx · · focus · HN ↗
someonebaggy · · focus · HN ↗
GoblinSlayer · · focus · HN ↗
someonebaggy · · focus · HN ↗
someonebaggy · · focus · HN ↗
kees99 · · focus · HN ↗
mcv · · focus · HN ↗
dale_glass · · focus · HN ↗
<a href="https://news.ycombinator.com/item?id=9772968">https://news.ycombinator.com/item?id=9772968
<a href="https://news.ycombinator.com/item?id=31133082">https://news.ycombinator.com/item?id=31133082 (article and discussion)
But TL;DR:
* It's hard to even parse, XMPP uses an uninterrupted XML stream. * The contents are often baroque and complex * Standards are a mess, and stuff that should be in core isn't * Data loss is possible * Protocol wasn't made for mobile devices * Multiple devices are terribly supported * Data loss is possible
From my attempts long ago, and other testimonials, writing an XMPP client is a full time job of solving weird problems that shouldn't exist in something better designed.
fishgoesblub · · focus · HN ↗
dale_glass · · focus · HN ↗
p2detar · · focus · HN ↗
I can't take this write-up seriously if it starts like that. I still read the whole thing though and I couldn't find any solid argument as to why someone would prefer XML to JSON for XMPP.
> This is especially true in browser environments, where XMPP streams run over WebSockets, which naturally frames the XMPP protocol. That’s why you are never actually working with XML trees consuming large chunks of memory. Modern implementations like XMPP.js go further and use LTX—a lightweight parser built specifically for XMPP’s streaming model—rather than the browser’s DOM parser. The result: developers work with JSON-like objects anyway. The wire format becomes invisible to your application code.
That to me, is an argument for using JSON, not XML. XML is strong when you have elements referencing other elements in your document structure or DOCTYPE for grammar defs. I might be missing something but I don't get how streaming XML is to be preferred over JSON for XMPP.
Dylan16807 · · focus · HN ↗
>> XML remains the best format for representing trees—deep hierarchies of nested data. JSON handles flatter structures well, but good messaging protocols are extensible: extensions can be embedded at different levels and composed together, like Lego bricks. That’s where XML shines.
Anything reasonable you'd be doing with messaging protocol is pretty flat.
someonebaggy · · focus · HN ↗
GoblinSlayer · · focus · HN ↗
p2detar · · focus · HN ↗
nunobrito · · focus · HN ↗
My own preference goes to NOSTR, just a set of public/private keys as identity and nothing else needed.
sellmesoap · · focus · HN ↗
nunobrito · · focus · HN ↗
Thank you for the reference to that project called anproto, never had heard of it and I'm still without understanding what problem it really solves. Seems to encrypt texts but then contains zero outside metadata to route it somewhere. The website is very scarce on details for someone unfamiliar the scuttle-something they mention.
someonebaggy · · focus · HN ↗
nunobrito · · focus · HN ↗
There are dedicated profile notes which define which relays that account/identity prefers to send their messages but everything is flexible. It does forego much of the routing metadata, which in my opinion is an obstacle when you don't know which stations/relays are placed on a given geography but you want the message to "navigate" (sometimes quite literally) to a place/region.
For that type of things I'm a biased fan of <a href="https://xprs.dev" rel="nofollow">https://xprs.dev because it bridges NOSTR identities/signing/encryption with APRS that can use store/forward and the routing follows any possible method include USB drives.
sellmesoap · · focus · HN ↗
There's an example ANproto in use at <a href="https://wiredove.net" rel="nofollow">https://wiredove.net it's pretty clean but not very active, yet another experimental social network playground!
throwawayffffas · · focus · HN ↗
Good protocols are opinionated and make concrete choices.
Extensibility typically leads to compatibility issues like the ones you are describing.
rtpg · · focus · HN ↗
I think the protocol itself is... I mean it's fine, I guess? Protocols are tricky because a lot of stuff is bolted on and it's not really super stateless as a protocol. But like all the Python XMPP client libs (for example) are all real janky.
The protocol is complex enough to where the "simple and easy" client libs require way more up front design.
alwaysthiserror · · focus · HN ↗
Considering I'd never hosted an XMPP daemon and didn't know anything about the protocol (I'd used XMPP clients a little bit, but had never looked at the protocol) and got a server (that part, I didn't write), an auth connector for our website's authentication system (so the daemon would authenticate against that instead), prod-ready and the features I wanted all working smoothly and reliably in maybe three weeks of very part-time work (this'd be, like, 3-4 part-time days with LLMs now, tops, from the same starting point)... seems decent to me? I mean I did direct work with the protocol, didn't just glue together libraries, and it was pretty damn good. Also (and I know browsers seem to be retreating on this front, which sucks) being XML made it very nice to work with in a Web context, since you can just ask the browser to turn ~any XML into a DOM for you, and get a bunch of functionality for free.
What's wrong with it?
pmlnr · · focus · HN ↗
hnlmorg · · focus · HN ↗
ryandrake · · focus · HN ↗
This is what boggles my mind. We're talking: Text. Over the Internet. It should not be a complex, difficult problem! We've been sending text over the Internet from the moment the Internet went online. So how is it that 10 companies have managed to find 30 different ways to do it, which are all incompatible with each other? You have to TRY to fail this badly.
jodrellblank · · focus · HN ↗
Come on, try! Start listing some of the core features of the different protocols/clients and answer your own question as to why it isn't simple! Presence. Chat history while offline. Threading. Mobile devices. Intermittent/mobile/cellular/wifi/CGNAT connectivity. Multiple clients on the same identity and presence. Identity establishing and confirming. Encryption. End-to-end encryption. Backing up and restoring chats, encrypted chats, group chats. Federation. Friends/groups/permissions/trust boundaries. Markup, markdown, formatting, images, emoji, unicode, code blocks. Audio, video, broadcast, multicast. Discovery. Extensibility. Federation. Store-and-forward.
> "We've been sending text over the Internet from the moment the Internet went online"
And IRC has RFC 1459, RFC 2810, RFC 2811, RFC 2812, RFC 2813, RFC 7194 and it does almost none of those things.
And you can still use IRC. But IRC is not good. At this point it's either wilfull ignorance of what people use computers for, or it's indistinguishable from deliberate trolling.
NoMoreNicksLeft · · focus · HN ↗
hnlmorg · · focus · HN ↗
- opening threads in a new window is in some hard to find and hard to remember location
- threads can’t be inlined (like you’ve described). I actually like how they’re in a pane to the right but sometimes that causes issues (as you’ve described). Sometimes it’s just that the view is too narrow.
- there’s no way to shift non-threaded comments into the thread. I’ve lost count of the number of times conversations have happened over multiple threads and/or non-threaded replies.
The way they implemented it is a complete clusterfuck.
exogenousdata · · focus · HN ↗
Ultimately the tech is only as good as the humans that use it. If you're chatting with folks that can't understand the difference between a thread or not, that's a meat-bag issue and not anything an RFC can fix.
bityard · · focus · HN ↗
ezst · · focus · HN ↗
oooyay · · focus · HN ↗
I briefly entertained building a modern chat experience on top of IRC when I came to this realization.
thinkmassive · · focus · HN ↗
radlad · · focus · HN ↗
bilekas · · focus · HN ↗
j45 · · focus · HN ↗
It's valid that someone just wanted to build something only on top of IRC and not everything XMPP does.
Forgeties79 · · focus · HN ↗
j45 · · focus · HN ↗
In this case, someone shipped something that works for their use case, which is a great deal more than talking.
Forgeties79 · · focus · HN ↗
j45 · · focus · HN ↗
There's lots of approaches out there that say if you don't ship something embarrassing, it's too late.
I think this is the main point I was trying to make and our exchange helped me bring it forward, thanks.
RunSet · · focus · HN ↗
The repository does not even mention this software is LLM-generated.
I wonder when/if the collective realization will land that LLM's failure to retain provenance during training means the code it generates exists in an indeterminate state of public domain / IP trap.
Revanche1367 · · focus · HN ↗
someonebaggy · · focus · HN ↗
acedTrex · · focus · HN ↗
The system has broken under the noise.
general_reveal · · focus · HN ↗
That’s because it’s a paradigm shift not meant to be planned or organized by humans. The prior paradigm was there was subject matter experts who are humans. The new paradigm is that the only authors of all code is to be a machine. This new paradigm requires removing all prior authors (which happens to be human , and removing them simply requires overcrowding their output such that it’s not locatable or trustable).
Sit back, grab some popcorn.
pixel_popping · · focus · HN ↗
davidcollantes · · focus · HN ↗
rixed · · focus · HN ↗
RobotToaster · · focus · HN ↗
WorldMaker · · focus · HN ↗
mococa · · focus · HN ↗
yudumnet · · focus · HN ↗
[dead]
jagermo · · focus · HN ↗
davidcollantes · · focus · HN ↗
thomasreiminger · · focus · HN ↗
[dead]
xena · · focus · HN ↗
cromka · · focus · HN ↗
warkdarrior · · focus · HN ↗
arm32 · · focus · HN ↗
y-curious · · focus · HN ↗
Retr0id · · focus · HN ↗
malcolmxxx · · focus · HN ↗
someonebaggy · · focus · HN ↗
Retr0id · · focus · HN ↗
someonebaggy · · focus · HN ↗
Retr0id · · focus · HN ↗
someonebaggy · · focus · HN ↗
Retr0id · · focus · HN ↗
GoblinSlayer · · focus · HN ↗
lnxg33k1 · · focus · HN ↗
davidcollantes · · focus · HN ↗
ptman · · focus · HN ↗
swozey · · focus · HN ↗
Half of that job was de-escalating real life abusers from abusing their victims who would constantly track them down through irc.
Whats the average age on there efnet and dalnet now? 50-70ss? Or did that cohort move on?
corbinvachal · · focus · HN ↗
[dead]
MMTlover · · focus · HN ↗
[dead]
tonymet · · focus · HN ↗
yudumnet · · focus · HN ↗
[dead]
elkamiliyoussef · · focus · HN ↗
[dead]
sailfast · · focus · HN ↗
flymasterv · · focus · HN ↗
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?
rough-sea · · focus · HN ↗
mxuribe · · focus · HN ↗
flymasterv · · focus · HN ↗
mxuribe · · focus · HN ↗
stackghost · · focus · HN ↗
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.
someonebaggy · · focus · HN ↗
ad_fontes · · focus · HN ↗
mxuribe · · focus · HN ↗
someonebaggy · · focus · HN ↗
Klonoar · · focus · HN ↗
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.
threecheese · · focus · HN ↗
I've wondered why I haven't seen this everywhere.
ciaranmca · · focus · HN ↗
onlyrealcuzzo · · focus · HN ↗
pavo-etc · · focus · HN ↗
The agents run on my NixOS server in their own unix account, this is the real secret sauce. This lets me use unix perms to limit their access to things, and it allows them to handle server administration. I've given them access to a cli mail and calendar client[1], github, and they have the ability to deploy updates whitelisted services. NixOS lets them install whatever they want in ephemeral shells, and it's not possible for them to break the server in a way I can't trivially roll back.
They can modify the caddy config, so there have been times I've entirely built and deployed new services on a new domain from my phone on the bus.
The harness is called pi-msg, I've done a writeup of my machine's setup on my site.[2]
[0]: <a href="https://github.com/zachpmanson/pi-msg" rel="nofollow">https://github.com/zachpmanson/pi-msg [1]: <a href="https://github.com/zachpmanson/docket" rel="nofollow">https://github.com/zachpmanson/docket [2]: <a href="https://notes.zachmanson.com/the-fleet/" rel="nofollow">https://notes.zachmanson.com/the-fleet/
JadedBlueEyes · · focus · HN ↗
advisedwang · · focus · HN ↗
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.
edflsafoiewq · · focus · HN ↗
Why?
conorcleary · · focus · HN ↗
advisedwang · · focus · HN ↗
GoblinSlayer · · focus · HN ↗
advisedwang · · focus · HN ↗
But it's not good if a blocklist admin adds somebody who, say, said that admin's music taste was bad. Likely none of the people downstream of that blocklist will realize that happened or that their blocklist is being misused.
someonebaggy · · focus · HN ↗
stackghost · · focus · HN ↗
conorcleary · · focus · HN ↗
blamestross · · focus · HN ↗
Working in the p2p space, scalable namespace ownership that doesn't get instantly ruined by perverse incentives is the holy grail. I don't think it is actually tractable in any "central authority free" system. Don't get me started on blockchains that tether names to the most perverse systems available and call it victory.
advisedwang · · focus · HN ↗
blamestross · · focus · HN ↗
The real problem is that DNS essentially "outs you" as interacting with a particular user. Literally advertises it to your DNS server. It's a very unsafe name management solution in a privacy centric system.
xingped · · focus · HN ↗
esseph · · focus · HN ↗
xingped · · focus · HN ↗
esseph · · focus · HN ↗
advisedwang · · focus · HN ↗
plq · · focus · HN ↗
stinkys · · focus · HN ↗
anramon · · focus · HN ↗
numpad0 · · focus · HN ↗
8eye · · focus · HN ↗