Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add draft/oper-tag spec #494

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

Conversation

examknow
Copy link

@examknow examknow commented Apr 2, 2022

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

extensions/oper-tag.md Outdated Show resolved Hide resolved
@emersion
Copy link
Contributor

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?

@awfulcooking
Copy link

@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.


This is a work-in-progress specification.

Software implementing this work-in-progress specification MUST NOT use the

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given the simplicity of this tag, ircv3/ircv3-ideas#78, and the time spent already in production as solanum.chat/oper, I propose we save everyone time and just call this the oper tag.

It can still be refined in future with CAP or tag values.

@emersion
Copy link
Contributor

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
Copy link
Contributor

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.

extensions/oper-tag.md Outdated Show resolved Hide resolved
@ValwareIRC
Copy link
Contributor

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

@ValwareIRC
Copy link
Contributor

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 😃

@SadieCat
Copy link
Contributor

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
Copy link
Contributor

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

@jwheare
Copy link
Member

jwheare commented Feb 20, 2024

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

@ValwareIRC
Copy link
Contributor

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

@jesopo
Copy link

jesopo commented Feb 20, 2024

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

@jesopo
Copy link

jesopo commented Feb 20, 2024

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

@spb
Copy link

spb commented Feb 20, 2024

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.

@jesopo
Copy link

jesopo commented Feb 20, 2024

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

@spb
Copy link

spb commented Feb 20, 2024

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

@jesopo
Copy link

jesopo commented Feb 20, 2024

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

@SadieCat
Copy link
Contributor

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.

@jesopo
Copy link

jesopo commented Feb 22, 2024

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

@spb
Copy link

spb commented Feb 22, 2024

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.

@emersion
Copy link
Contributor

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

@spb
Copy link

spb commented Feb 22, 2024

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.

@jwheare jwheare added this to the Roadmap milestone Sep 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants