7 ms·
Modern IRC Client Protocol
- gtirloni 9y agoIf I wanted to modernize IRC today, I would focus on Matrix. https://matrix.org/docs/spec/ https://matrix.org/docs/spec/
- folknor 9y agoThe link seems to describe IRC as it exists today, and does not appear to be an attempt to modernize IRC. Quoting from https://modern.ircdocs.horse/ https://modern.ircdocs.horse/ This document intends to be a useful overview and reference of the IRC client protocol as it is implemented today.
- throwaway2016a 9y agoThe title is a bit misleading. This is a documentation of current best practices / de factor standards in IRC. It's not a proposal on how to make IRC better. Thanks for the link to matrix.org though.
- danieloaks 9y agoYeah, I admit the title's not great. I'll update it in the next few days, thanks for the feedback :)
- ancarda 9y agoWhat about IRCv3? http://ircv3.net http://ircv3.net
- danieloaks 9y agoThis project (ircdocs) works in tandem with IRCv3. ircdocs tends to focus on currently-implemented stuff (such as the linked Modern docs), where v3 focuses more on establishing rough consensus around new specifications and features.
- jaequery 9y agoi wish matrix was written in something like elixir or go instead of python. matrix/riot is indeed a good attempt but if you are going to modernize it, it makes sense to use a modern stack to keep up with the times.
- voxadam 9y agoMatrix refers to a specification, not an implementation. There is nothing stopping you, or anyone, from implementing a Matrix server in whatever language you'd like. In fact, there is already a server being implemented in Go called Dendrite,[1] another called Ruma[2] that is being implemented in Rust, a "WIP toy" Elixir implementation called Matrex,[3] as well as others.[4] [1] https://github.com/matrix-org/dendrite https://github.com/matrix-org/dendrite [2] https://github.com/ruma/ruma https://github.com/ruma/ruma [3] https://github.com/bismark/matrex https://github.com/bismark/matrex [4] https://matrix.org/docs/projects/try-matrix-now.html#servers https://matrix.org/docs/projects/try-matrix-now.html#servers
- Samis2001 9y agoPython's a modern stack in any reasonable definition of the word. Just because it doesn't use $TRENDY_LANGUAGES doesn't make it 'not modern'.
- zAy0LfpBZLC8mAC 9y agoYeah, let's add more bloat, so much bloat in fact that even the spec is breaking standards, and then let's add a bunch of ambiguity so we are guaranteed a mess of incompatible implementations right from the start, that's just brilliant!
- enqk 9y agoGood initiative. It is of greater value to document established standards rather than making new ones.
- danieloaks 9y agoThanks for posting this here! I will admit, it's hard to know when to start posting it around, but this is already a fair bit more accurate than the traditional RFCs in a lot of ways. It's also lead to an Internet-Draft around CTCP being submitted here: https://tools.ietf.org/html/draft-oakley-irc-ctcp-01 https://tools.ietf.org/html/draft-oakley-irc-ctcp-01 If anyone's interested in contributing or asking questions, just reach out!
- unimpressive 9y agoAs someone who's tried to develop stuff for IRC before, thank you for this. People act like IRC is dead, but it's very much alive in 2017 and severely neglected on the tooling and documentation side.
- app4soft 9y ago> People act like IRC is dead, but it's very much alive in 2017 and severely neglected on the tooling and documentation side. This[1] XKCD ;-) [1] https://xkcd.com/1782/ https://xkcd.com/1782/
- spike021 9y agoWish I could connect to Hipchat over my Weechat client :)
- nine_k 9y agoHipchat can be configured to offer an IRC gateway.
- spike021 9y agoWhoa. I will look into this. Thanks for letting me know! Figured that was only the case with Slack since Slack is IRC-based (IIRC).
- HerrMonnezza 9y ago
- Dowwie 9y agoIrc is the merovingian protocol who has outlived many "new" protocols that were allegedly better than it. Why will this protocol be any different?
- iforgotpassword 9y agoBecause it is irc.
- luma 9y agoI think you've misunderstood the purpose of this site: they are documenting the existing IRC protocol as it is "generally" implemented today, as IRC is now a poorly-specified pile of hacks upon hacks. This project seems like a good idea for that reason.
- badrabbit 9y agoJust like ipv6 they are over complicating things that need simplification. End to end encryption and chat room backlog would be nice. DCC and CTCP need to go away. A simpler protocol that does more with less would in my opinion be optimal.
- AnssiH 9y agoAFAIU the site is just documenting existing practices, so I don't think they are over-complicating anything - things just were already complicated (and poorly documented).
- danieloaks 9y agoYep, pretty much. Unfortunately the protocol's gotten fairly complex without standardisation to keep everyone on the same track. I do my best to simplify the text where I can, but a little more in-depth and correct is better than something simpler that doesn't match real-world implementations. edit: With regards to encryption and backlog, they're being worked on in the IRCv3 WG, worth checking out if you're interested in changing the protocol for the better: http://ircv3.net http://ircv3.net
- badrabbit 9y agoYou are right. My comment was more towards the ircv3 wg.
- danieloaks 9y agoFor what it's worth, there's been a bunch of work around backlogs (to simplify bouncers, though if more niche IRCds wanted to incorporate it natively that'd work too). CTCP isn't great, but the simplified CTCP I-D improves things for clients. DCC I'm documenting, hoping we can replace it with something more appropriate and/or extend DCC as it currently exists in a backwards-compatible way (there's a loooot of debate and discussion on DCC in the v3 WG. once we fix up a bunch of misc protocol stuff it's definitely something we'll approach). For sure, simplicity is better than complexity. A fair amount of the v3 work aims to simplify things that are already done in a bunch of vendor-specific ways and bring them all under one clean, well-specified roof. Always happy for extra help there :)
- userbinator 9y agoIRC is IMHO an example of a good text-based protocol design, along with several of the other early Internet application-layer protocols (POP, SMTP, HTTP); usable manually with nothing more than a netcat terminal, but also by more fully-featured clients. Early versions of MSNP had a similar flavour, before Microsoft decided to bloatedly XML-ify and SOAP-ify it. Also, can we please stop using the word "modern" in everything? It's essentially meaningless. At least the name of the page doesn't have it. Example: I have a book titled "Modern Welding" on my bookshelf (or, as others have called it, "Modem Welding", which partly explains why it's there...), whose copyright date is 1965.
- X-Cubed 9y agoIn regards to your second point, it is a web page rather than a book, and it states that it is intended as a living document. IRC has changed a lot over the years, and this is an attempt to document the subset of the protocol that is currently being used in most implementations (hence the "modern" title).
- chipx86 9y agoMSNP was a neat little protocol. Messages were sent as mime messages. They did have a max message size, but the official client would ignore any headers it didn't know about and any mimetypes it wasn't expecting. This gave third-party clients a lot of ability to extend the protocol. For instance, I hacked in avatar support in Gaim (aka Pidgin) when I was maintaining that support. MSNP8 is when all the terrible MSNSLP (MSN SLP-Like Protocol) stuff began, with the binary packets. Spent a couple months figuring out the content of those packets... And while avatars were part of the protocol at this point, custom content was no longer as viable. I can understand some of the reasons they wanted to change it, but in the end, I think they ruined a decent (if imperfect) protocol.
- beefhash 9y ago>IRC is IMHO an example of a good text-based protocol design Though it would have been nice if there was an actual text encoding specification. Right now, various networks, especially in Asia, have all kinds of funny encodings going on. Meanwhile in US and European contexts, UTF-8 isn't standardized, so you have to expect other encodings as well.
- mabynogy 9y agoI'm part of a team working on a player (a vm) to run small user scripts with voice and vision. We've picked the irc "/" idea for commands as a way to communicate between processes. For example, we have /say and /listen commands. I started a document to describe that this afternoon (very early wip - only to make an idea) https://u.sicp.me/dhSk5.pdf https://u.sicp.me/dhSk5.pdf And, yes! IRC is still alive and some networks (like freenode) are even growing. FYI we are on irc.rizon.net #eva
- linuxliaison 9y agoThe server types concept reminds me of the NTP stratum paradigm
- gpmcadam 9y agoA relevant XKCD: https://xkcd.com/927/ https://xkcd.com/927/ And also, https://en.wikipedia.org/wiki/IRCd#/media/File:IRCd_software_implementations3.svg https://en.wikipedia.org/wiki/IRCd#/media/File:IRCd_software...