11 ms·
IRCv3
- sneak 5y agoI really want the IRC protocol to decouple its sessions from the TCP connection and move to using HTTP as a transport, even if the only api verb is "send" and the only response is "receive output buffer". I used to really love IRC, and think it could undergo a resurgence given the right upgrades.
- tastyfreeze 5y agoWhat upgrades do you think should be added? I miss the environment of IRC 25 years ago. Its something that no messenging application has really been able to replicate for me.
- SilverRed 5y agoAt a bare minimum it needs to be redesigned for modern computers. We have left the days where user all use desktops which sit online always and hold an open connection. IRC needs to support something HTTP like with history.
- petre 5y agoMQTT or another pubsub queue protocol is probably a better choice than HTTP for disconnected operation. Use it over websockets if you want it to go through proxies.
- pantalaimon 5y agoWhat's the advantage of using HTTP?
- sneak 5y agoI can reverse proxy it, I can dockerize it, I don't have to modify my firewall, I can TLS-SNI vhost it, I can decouple the TLS keys from the daemon process by terminating TLS on a different container, I can connect to it from weird LANs that filter non-HTTP, I can drop the TCP connections from my mobile device without dropping my whole login session, et c.
- swiley 5y agoI don't know what makes http important for reverse proxy or docker. I've reveres proxied and dockerized apps that listen on normal TCP port.
- sneak 5y agoReverse proxying non-http protocols and preserving the client ip back to the backing service involves a terrible hack called Proxy Protocol that IIRC haproxy invented to work around the fact that TCP-directly protocols don't normally allow you to carry metadata (like HTTP does in headers). https://www.haproxy.com/blog/haproxy/proxy-protocol/ https://www.haproxy.com/blog/haproxy/proxy-protocol/ It's messy. The tooling around TLS and reverse proxying for HTTP is much more common and easy.
- Karrot_Kream 5y agoIndeed, and it's because TCP is not meant to deal with that sort of proxy-ing and framing. HTTP is specifically an L7 protocol and that makes it a good spot to do things like framing and signalling (through headers and such).
- toast0 5y agoIs proxy protocol really a terrible hack? (Ok the part where it expects the header to be in a single packet and have no other data kind of is, but that usually works out ok) It's a way to pass some meta data at the beginning of the session and you can configure it. Alternatively, if your proxy and origin are on the same ethernet broadcast domain, you could just change the destination ethernet address and resend the packet as-is, or stick it in an IPIP tunnel.
- progval 5y ago> preserving the client ip back to the backing service involves a terrible hack called Proxy Protocol No need for that, there's an IRC extension to indicate the source IP to the backend: https://ircv3.net/specs/extensions/webirc https://ircv3.net/specs/extensions/webirc It's supported by all the major IRCd implementations these days.
- threeseed 5y agoWhether you are in an enterprise, university, airport, internet cafe, restrictive country etc. HTTP traffic just works. No one is going to open up non-standard ports especially not for IRC which most people aren't familiar with.
- metroholografix 5y agoNot everything has to run on top of HTTP or use json. IRCv3 gets a lot more right than wrong.
- threeseed 5y agoIf you want adoption within the enterprise then you really need to use HTTP. And these days even most SMBs are taking network security seriously and blocking non HTTP ports.
- metroholografix 5y agoSo let those who need it use existing HTTP <-> IRC gateways or write their own. IRC is flexible enough to accommodate this which is testament to how resilient and extensible the protocol has proven to be over the decades. I see no reason whatsoever to make HTTP a core requirement.
- threeseed 5y agoWhich is why everyone uses Slack, Teams etc and IRC is irrelevant. Because there wasn't enough focus on end user experience.
- metroholografix 5y ago"Everyone". Obviously not. Having used IRC for 25 years, I'll take excellent SNR over the sort of focus on end user experience you're talking about.
- Karrot_Kream 5y ago> I'll take excellent SNR over the sort of focus on end user experience you're talking about The kind of SNR that causes an attempted takeover? As IRC has depopulated it's been increasingly inhabited by a particular type of person and has a particular culture. That's fine, but ascribing some technical superiority to it because of your cultural preferences doesn't make sense. IRC attracts a certain type of user who persists despite its UX; it's not technologically superior. The rest of us who aren't in that culture go elsewhere, to a network that fulfills our needs. Like Matrix (or even XMPP for some).
- otherflavors 5y agoMany modern IRCDs expose a websocket connection, if that's HTTP enough
- SilverRed 5y agoDoes the web socket let you see the history while your device was sleeping?
- carlhjerpe 5y agoirccloud allows this
- SilverRed 5y agoNot familiar with the service but is irccloud one of those services that sits in the middle and converts IRC to a modern http protocol for your device to consume?
- carlhjerpe 5y agoYes but not only. If you pay for their service It's also an IRC bouncer, meaning you can bring your own IRC client. It'll replay messages for you.
- secure 5y agoRobustIRC does this: https://robustirc.net/docs/robustsession.html https://robustirc.net/docs/robustsession.html (Disclaimer: I’m a developer of RobustIRC)
- sneak 5y agoThis is super cool! Where do you irc?
- danieloaks 5y agoFor what it's worth, we've been throwing around a websocket standard that should be supported across a range of servers. On the decoupling sessions from the TCP connection side, the server that I work on (Oragono https://oragono.io https://oragono.io ) does this by default, and I've heard that InspIRCd has plans to do work on this issue as well. Definitely a lotta fun stuff in this area.
- sneak 5y agoWebsockets over http over sockets is silly. There's no point in moving a socket based protocol to a websocket; if you're going to change it, make it just use HTTP and skip the terrible hack that is websockets in the first place. I like oragono and also wrote an ircd in go, and was inspired a bit by some of the project's code.
- deleted 5y ago[deleted]
- zokier 5y ago> Oh nice it appears to be the active version now As far as I know, none of the big classic IRC networks (IRCnet, EFnet, Undernet, OFTC) have transitioned to ircv3
- danieloaks 5y agoI can't speak for their possible ircd transition plans but OFTC's been working on https://solanum.chat https://solanum.chat which has a wide range of IRCv3 support.
- xeeeeeeeeeeenu 5y agoLibera (de facto successor of freenode) is already using it: 21:43 [libera] -!- Your host is zirconium.libera.chat[46.16.175.175/6667], running version solanum-1.0-dev Also, I'm not sure how up to date it is, but here's the list of networks that support at least some subset of IRCv3: https://ircv3.net/support/networks https://ircv3.net/support/networks
- Macha 5y agoHowever, many of them support independently some of the features that IRCv3 is merging in, such as SASL, SNI, capability negotiation, etc.
- dang 5y agoA couple of past threads: IRC v3 - https://news.ycombinator.com/item?id=12671063 https://news.ycombinator.com/item?id=12671063 - Oct 2016 (217 comments) IRCv3 - https://news.ycombinator.com/item?id=11005999 https://news.ycombinator.com/item?id=11005999 - Jan 2016 (77 comments)
- disposekinetics 5y agoOne of the things I really appreciate about IRC is the raw simplicity of the protocol. I hope that does not get lost in an effort to modernize.
- Karrot_Kream 5y agoI don't really care much about the protocol myself. I'm never going to be speaking "raw IRC" at any point, so why does it matter? I understand that you want to keep protocol simplicity high to make it easier on implementers, but other than just enough to encourage implementation, I don't see the need. We're talking about human chat applications here. Machine chat can use simpler protocols of course, like a light layer atop MQTT, or the existing base XMPP spec.
- t-writescode 5y agoWriting bots from scratch in a new language is more fun when parsing is easy.
- Karrot_Kream 5y agoYeah but this is such a niche usecase. Also, Matrix uses an HTTP API and almost every language at least has a binding to libcurl, so it's trivial to get something up for Matrix as well. If you're not into the ascetic appeal of writing bytes raw onto a socket, then IRC just seems silly these days.
- grammarnazzzi 5y ago>> Writing bots from scratch in a new language is more fun when parsing is easy > Yeah but this is such a niche usecase. I think the point is that writing anything for anything is simpler, faster, and has fewer dependencies when parsing is easy. > Also, Matrix uses an HTTP API and almost every language at least has a binding to libcurl. Certainly there are advantages of using Matrix and it's HTTP compatibility to implement some solutions. However, I can also imagine some projects are best served with a simple protocol with lean libraries that don't incur unnecessary dependencies on HTTP and the related bloat and complexity.
- Yoric 5y agoGiven that Matrix seems to be quite successful these days, and afaict is basically a next-gen IRC, is there any compelling reason to push IRC?
- floren 5y agoBecause Matrix basically has one decent server implementation and one decent client, both provided by the same company, and even that client is some godawful Element thing. I run a Matrix homeserver and use it daily but frankly, I prefer IRC.
- Kudos 5y agoI use Fluffychat on mobile and Fractal on Gnome. Fluffychat is excellent, but Fractal is still lacking e2ee support (there's a rewrite on the way with support already in place).
- gpanders 5y ago> Because Matrix basically has one decent server implementation and one decent client, both provided by the same company, and even that client is some godawful Element thing This is a fair criticism, but IRC is decades old while Matrix is what, 3-5 years old? Give it time and choice of clients and servers will only improve.
- badsectoracula 5y agoAnd by "improve" everyone understands "get more complicated and bloated" :-P
- azinman2 5y agoYes, by innovating and giving people the user experiences they want. IRC is a joke once you’re used to Slack, especially in an organization that uses it well.
- 5y ago