ircv3 / ircv3-specifications

IRCv3 specifications | Roadmap: https://git.io/IRCv3-Roadmap | Code of conduct: http://ircv3.net/conduct.html
http://ircv3.net
784 stars 79 forks source link

Capability for flag changes #252

Open staticfox opened 8 years ago

staticfox commented 8 years ago

From what I've been gathering, it seems most clients poll /WHO on channels to get information on user statuses for example. As IRCv3 has been developing, most of the newer capabilities such as away-notify and account-notify have been more and more alleviating the need to constantly poll.

One aspect that remains a variable are the user flags. e.g. G for away, H for here, * for oper, d for deaf, etc. While most of the flags have been solved in one way or another, perhaps a capability to announce flag changes would be useful to avoid creating a cap for each edge case (e.g. deaf-notify, oper-notify) while also allowing IRCd developers to freely pass in flags to this extension instead of adding/request flag specific extensions.

For example, KVIrc has an event handler called KviEvent_OnIrcOp. Instead of polling the channel or user with a WHO request, and instead of a specific capability (e.g. oper-notify), this can just (super rough idea) be inferred as follows:

:staticfox!bs@blindsight.developer.gamesurge FLAGS H*dwgx

This would introduce my new flag set to clients, in a way similar to account-notify, however in this case there will always be at least one flag (G or H) so a filler parameter for no flags is not needed.

Adding this as an extension would effectively allow client developers to only need to perform /WHO on a channel once as all the additional information thereafter can further be gathered from capabilities. This would also be more beneficial in the fact that performing /WHO only once while letting the IRCd handle the delegation of new information can also (in relative terms, this is still IRC) save bandwidth from the past /WHO constant requests.

kaniini commented 8 years ago

I would prefer a verb other than FLAGS for this, otherwise +1.