ircv3-specifications icon indicating copy to clipboard operation
ircv3-specifications copied to clipboard

Add `draft/oper-tag` spec

Open examknow opened this issue 3 years ago • 21 comments

This is based on the solanum implementation. The solanum spec can be found here.

examknow avatar Apr 02 '22 00:04 examknow

It would be nice to elaborate on the use-case of this spec. WHO flags (in particular the * flag) already provides a way to check whether someone is an operator.

What is the value-add of this spec?

emersion avatar Apr 12 '22 07:04 emersion

@emersion It's a blessing as a bot author. Instead of maintaining WHO state, and sending one-off WHO requests, we can check for this tag synchronously when processing commands.

awfulcooking avatar Apr 12 '22 11:04 awfulcooking

It's a blessing as a bot author. Instead of maintaining WHO state, and sending one-off WHO requests, we can check for this tag synchronously when processing commands.

Okay, so ease-of-use is the main motivation for this, just like account-tag and bot. Maybe it would be worth including the motivation in the spec description, to make it clear what problem the spec is trying to solve?

emersion avatar Apr 15 '22 12:04 emersion

One value-add from this spec is when a client needs to figure out on JOIN whether a user is an operator or not. Right now the only way is to WHO all users who JOIN, which doesn't work in practice because of rate limits. If an oper tag is attached to JOIN messages clients would be able to properly keep their state up-to-date on JOIN.

emersion avatar Aug 20 '22 09:08 emersion

I really liked the sound of this so I PR'd a sort-of implementation to UnrealIRCd (https://github.com/unrealircd/unrealircd/pull/226), I hope this gets more reach.

ValwareIRC avatar Oct 27 '22 17:10 ValwareIRC

FWIW: I think this could include some additional oper information, like a potential operclass.

draft/oper=bobsmith,netadmin

or something similar. I'm not entirely sure how global operclasses are in the IRC world, but it's probably common enough to include catering for it :smiley:

ValwareIRC avatar Oct 27 '22 17:10 ValwareIRC

Is there any more interest in this? I'd like to add support for this to InspIRCd.

FWIW: I think this could include some additional oper information, like a potential operclass.

I support this but I'd like to bikeshed oper-role as a more generic tag name for this as operclass may have a different meaning depending on your IRCd (e.g. in InspIRCd an oper class is a set of privileges and the equivalent of an Unreal oper class is an oper type).

SadieCat avatar Feb 26 '23 16:02 SadieCat

I've implemented this with the addition of my oper-role proposal: https://github.com/inspircd/inspircd/compare/master...SadieCat:inspircd:master+ircv3-oper-tag

SadieCat avatar Feb 26 '23 18:02 SadieCat

Are we still keen to standardise this? Looks like decent amount of support from server devs. Sensible solutions to any open bikesheds welcome.

jwheare avatar Feb 20 '24 12:02 jwheare

how often are oper "classes" used in IRC servers? if it's a majority, I'd like to see an oper-class tag too

ValwareIRC avatar Feb 20 '24 12:02 ValwareIRC

i think the concept of "oper classes" is so implementation-specific that it shouldn't be part of a protocol-wide standard

jesopo avatar Feb 20 '24 12:02 jesopo

(i understand why it would be helpful, by the way, and maybe having another spec for it would make me feel better)

jesopo avatar Feb 20 '24 12:02 jesopo

The only thing I don't like is the use of 'oper' as a capability name - it's too vague and doesn't describe what's actually being enabled by it.

spb avatar Feb 20 '24 12:02 spb

would you be fine with oper-tag, congruent with account-tag?

jesopo avatar Feb 20 '24 12:02 jesopo

Yes, that's what I'd call it.

spb avatar Feb 20 '24 12:02 spb

@examknow are you still around enough to make changes to this PR? if not i can take it on

jesopo avatar Feb 20 '24 12:02 jesopo

i think the concept of "oper classes" is so implementation-specific that it shouldn't be part of a protocol-wide standard

I would like to see the oper-role proposal I made included but if there's nobody else who is interested I'm fine with including it under a vendor tag.

SadieCat avatar Feb 20 '24 18:02 SadieCat

i think the concept of "oper classes" is so implementation-specific that it shouldn't be part of a protocol-wide standard

I would like to see the oper-role proposal I made included but if there's nobody else who is interested I'm fine with including it under a vendor tag.

could we do it on another spec, so that implementing this spec doesn't require implementing oper-role? i'm not saying a hard no here, but i have a slight preference to doing it this way. more than happy to be outvoted

jesopo avatar Feb 22 '24 17:02 jesopo

oper-role can probably be incorporated with no real negative impact - something like "the server MAY also attach a draft/oper-role tag containing information about the user's role in network operations, such as a privilege class" puts no obligation on anyone to do anything except not crash when they see that tag but standardises the tag name for anyone who does care.

spb avatar Feb 22 '24 17:02 spb

What upside is there to have a standard tag with implementation-defined contents? What would clients do with this information?

emersion avatar Feb 22 '24 18:02 emersion

It doesn't have to have a fixed meaning across ircds to be useful - a bot framework might offer it as a variable that can be matched against when defining custom access controls, for example.

spb avatar Feb 22 '24 18:02 spb