Subject: bug#50908: [PATCH] erc-user-mode: Set "+i" by default

From: "J.P." <[email-masked]>
Date: Mon, 04 Oct 2021 21:09:14 -0700

Before this gets archived, I'd like to highlight what I feel to be a
closely related issue possibly deserving some discussion at some point,
namely, the absence of user modes among ERC's other user-state tracking.

If you take a look at `erc-set-modes' and friends [1], you'll see that
those who came before kicked the can down the road slightly when it came
to this feature. From the placeholders and comments, it's unclear to me
whether they were expressing ("owning") an intent to abstain or whether
plans merely petered out (my guess).

It's also unclear to me to what extent current users just assume this
has already been implemented. (Until very recently, I could have counted
myself among the casualties.) Which is not to say I think user-mode
naivete as a conscious policy choice is the worst thing ever. However,
users who associate featurefulness with user-state omniscience probably
feel otherwise.

In terms of tradeoffs, one less obvious benefit [2] of replacing those
placeholders with the necessary smarts might be a smidge less congestion
early on in the `erc-server-flood-queue' [3]. As far as drawbacks,
there's probably some research required [4] in addition to the usual
added stress of taking on more complexity [5].

I didn't raise any of this earlier for fear of appearing dismissive of
this patch as some kind of half measure (and thereby somehow keen on
forestalling its installation). Thanks.

P.S. Someone should tell Ergo not to fire off a second 221 when a client
issues an early MODE command, as ERC now does (see attached).

Notes
~~~~~

[1] Like `erc-update-modes' and also the response handlers
    `erc-server-MODE' and `erc-server-221'.

[2] Among the traditional benefits would be modes featuring more
    prominently in the UI (see popular standalone clients), possibly
    with a legend/widget thingy to explain the letters. Third party
    packages may also appreciate being able to check modes without
    adding custom handlers.

[3] Which is helpful in testing and maybe also in module/user code
    running on MOTD hooks (and also perhaps for folks stuck using
    NickServ).

[4] That is, assuming we'd even bother keeping up with the various pet
    modes offered by the major networks. Also, the nonstandard ISUPPORT
    param "USERMODES" may be worth a quick look.

[5] For example, going this route would likely introduce at least one
    local variable along with the need to wrangle yet another timer
    (spawned from the same 376/422 handler).