You can pretty reasonably use IRC just by writing to a socket - by hand. It's all human readable and understandable. It's incredible. It's what an open protocol should be.
Writing a simple IRC client is a breeze!
You can pretty reasonably use IRC just by writing to a socket - by hand. It's all human readable and understandable. It's incredible. It's what an open protocol should be.
Writing a simple IRC client is a breeze!
I'm not sure you need any of these for communicating via telnet or writing a small bot that will answer back.
To have a modern irc client, it is far from a clean protocol. If you just want the basics, it will still connect and send messages.
There have been widely implemented improvements (eg RPL_ISUPPORT / 005) which succeeded by discussion and consensus rather than trying to lay down a new standard by fiat.
Hardly anyone uses the DCC file transfer stuff anymore, so other than encryption, all you really need to handle is channel messages and private messages, plus the management commands (ops, voice, mute etc).
Now everything you touch has dozens of layers of junk on it -- and it's all mostly http.
It was a lot more fun when you were free to do your own thing without having to carry around 40 tons of tooling.
I have found Matrix to be easier to interact with. You need a HTTP client instead of netcat but it's super simple to send JSON from a program or terminal.
> It's what an open protocol should be.
I'm not sure how I feel about this. I agree, but I also want to welcome things like gRPC/Protobuffs over HTTP/2 which introduce really fast comms between clients and servers, sacrificing the visibility of the stream's contents.
Protobufs and similar serialization protocols are great for complex data. It is worth pointing out that we've had ASN.1 for a while and it's pretty fast too, at least for limited subsets of OIDs/types, in certain encodings, though XER or JER would probably not compete with BER.
HTTP/2 is a complex protocol designed to fix problems with the way people build websites today. A lot of its features does not make sense/is not needed for simple message passing.
e.g., some HTTP/2 implementations will probably see HPACK DoS bugs/vulns because HPACK is stateful, whereas if HTTP/2 wouldn't have HPACK that problem would not have existed, but the reason why HTTP/2 has HPACK is because people bloat headers with tons of stuff.
IRC works and works well for its use case. Apart from newline-delimited strings - netstrings and TLV are other examples of formats that can build great, simple and introspectable/open formats.
I'd venture a guess and say that an RFC1459 PRIVMSG message parses faster than a protobuf message carrying the same information - due to parsing an RFC1459 PRIVMSG message is so simple. Of course, if you want arbitrarily sized messages, or messages with an arbitrary number of nested messages inside it you need more complexity.
Look at "modern" chat protocols (like XMPP...): it's a nightmare in comparison!
It's downright dangerous to use it,but then again people still use email.
I am a fan of simplicity,but it needs to be safe to use and friendly to users.
There are ways to fix this, I think. And I make no claims that common chat systems have fixed this. Just pointing out that having your own IRCd server is not at all solving it.