harmful irc behavior

alternative title: common antipatterns on irc

Table of Contents

1. away nicks

just use /away. the vast majority of people do not want to see that you have gone away. those who do will probably either have a client supporting IRCv3 away-notify, or a client that runs WHO or WHOIS in the background to see people's changing away status.

see also: how to idle on irc

2. using kicks as warning shots

everything that a kick can convey, a normal message can too. kicks only serve to anger the recipient, or give the kicker personal satisfaction, both of which are not productive. if you feel something more than a normal message is necessary, use a quiet or (kick)ban.

of course, this does not mean kicks are never useful by themselves. there are situations like someone pasting a large amount of text, where a kick is needed because they do not know how to get their client to stop sending the queued messages, or a misbehaving bot, however these are few and far between.

3. announcing ignores

announcing ignores serves nothing other than your own ego. if you insist on letting the person being ignored know, use a pm not a public channel.

4. taunting quieted people

taunting quieted people is useless noise, and the person being quieted will be more likely to quiet-evade.

5. TODO automatic rejoins on kicks

this is very annoying, especially when a bot does this.

perhaps this is encouraged by people who use kicks as warning shots?

6. bots responding to unknown commands in channels

having a bot respond every time people use common bot prefix symbols to make faces, such as :3, is annoying.

not responding to unknown commands also allows another bot without conflicting commands to share a prefix, which is quite useful (ie you will run out of prefix characters slower) and makes multiple bots easier to use (ie the user does not have to remember which commands go to which bot with which prefix).

7. muh rfc

people seem to not realize that all of irc's documentation before IRCv3, including the rfcs, are observations of irc, not authoritative specifications.

rfc1459 (and the other rfcs including the one that nobody cares about) are old, outdated, have several mistakes, and are plain wrong in some (admittedly rare) cases.

if you want your irc stuff to behave like everything else expects, your best bet is a living document like ircdocs.horse's modern spec.

8. ignoring existing solutions

i feel like this one is obvious, but irc has a long history, and many problems already have good solutions. if you are going to "throw away historical baggage", you should at least consider what problems it solved and whether said problems still effect your stuff.

∗cough cough ngircd∗

9. being against IRCv3 as a whole

[2022-10-10 Mon]: to be clear, this section is not for client devs. i am not suggesting you implement every single IRCv3 capability into your client, nor should you. this section is also not about people complaining about specific capabilities, such as typing notifications, which have valid criticisms.

i have yet to see anyone that both actually understands what IRCv3 is and be against it as a whole. here are some common points about IRCv3:

9.1. "IRCv3 is not backwards compatible"

but… it is though.

this falsehood seems to have been introduced by mIRC, which released a new buggy version attempting to add support for some IRCv3 capabilities. instead, it crashed whenever said capabilites were supported by the server.

the developer of one client not testing his code before releasing it does not mean 'IRCv3 is not backwards compatible', rather it means mIRC is not backwards compatible.1

9.2. "IRCv3 is new, and new equals bad"

IRCv3 is nothing new, its been around for like 2 decades at the time of writing.

9.3. "IRCv3 is bloat"

i suppose this one is kind of valid and up to interpretation, so this section will be a bit more subjective.

Keep in mind the context for what people usually refer to as "bloat". IRCv3 capability negotiation only adds around 4 lines to your initial registration, maybe a few more for certain capabilities doing extra stuff. on the other hand, take for example google's homepage, which is literally just a blank page with a simple flat logo and text box, yet is large enough to fit several copies of the entire bee movie script and plenty of css, with room to spare. these are not the same.

i suppose allowing vendors to extend the protocol may end badly (see the mess that the web turned into), perhaps even probably end badly, but this seems a bit nihilistic.

10. being against NOTICE usage

a notice is just a normal message, without the risk of bots auto-responding to each other. if your client beeps or highlights on notices, your client is broken.

11. TODO being against statusmsg usage

Footnotes:

1

for those thinking i am being unneededly harsh, such a major flaw would have quickly been found by mIRC's large community if it followed an open-source philosophy, or even just had prereleases. being a "one man operation" is no excuse when it comes to such a popular client whose issues affect other people.