
Modern IRC Client Protocol - beefhash
https://modern.ircdocs.horse/
======
userbinator
IRC 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.

~~~
feelin_googley
"Also, can we please stop using the word "modern" in everything?"

I am using a text-based browser and so I do not use the upvote/downvote
javascript. Consider this comment an upvote.

The increasingly pervasive attachment of the word "modern" to software
descriptions in recent years is confounding. I thought maybe it was annoying
only me but apparently not.

Sometimes I have thought it could be a manifestation of cognitive dissonance
arising from the realization that in software, in most cases, "there is
nothing new under the sun".

Honestly I do not understand where it comes from or what it means. Is it some
sort of marketing buzzword?

~~~
lultimouomo
> I am using a text-based browser and so I do not use the upvote/downvote
> javascript. Consider this comment an upvote.

I haven't tried, but looking at this page source it looks to me that vote
arrows are divs wrapped in anchors pointing to up- and down vote URLs. They
should definitely be usable without JS; maybe the problem is that the empty
divs are not visible in your text browser?

~~~
feelin_googley
Correct. They are not visible.

I could convert these anchors into visible URLs and they should work.
Nevertheless I will not be doing that.

When I mentioned JS I was thinking of the presence of the onclick attribute
and the vote() function as seen below.

<a id='up_15739117' onclick='return vote(event, this, "up")'
href='vote?id=15739117&amp;how=up&amp;auth=&amp;goto=reply%3Fgoto%3Dedit%3Fid%3D15738201%2315739117%26id%3D15739117#15739117'>

------
danieloaks
Thanks 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
As 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
> 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
Wish I could connect to Hipchat over my Weechat client :)

~~~
nine_k
Hipchat can be configured to offer an IRC gateway.

~~~
spike021
Whoa. I will look into this. Thanks for letting me know! Figured that was only
the case with Slack since Slack is IRC-based (IIRC).

------
enqk
Good initiative. It is of greater value to document established standards
rather than making new ones.

------
gtirloni
If I wanted to modernize IRC today, I would focus on Matrix.

[https://matrix.org/docs/spec/](https://matrix.org/docs/spec/)

~~~
jaequery
i 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
Matrix 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)

------
badrabbit
Just 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
AFAIU 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
Yep, 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)

------
mabynogy
I'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
The server types concept reminds me of the NTP stratum paradigm

------
gpmcadam
A relevant XKCD: [https://xkcd.com/927/](https://xkcd.com/927/)

And also,
[https://en.wikipedia.org/wiki/IRCd#/media/File:IRCd_software...](https://en.wikipedia.org/wiki/IRCd#/media/File:IRCd_software_implementations3.svg)

------
Dowwie
Irc is the merovingian protocol who has outlived many "new" protocols that
were allegedly better than it. Why will this protocol be any different?

~~~
luma
I 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.

