Welcome to Codidact Meta!
Codidact Meta is the meta-discussion site for the Codidact community network and the Codidact software. Whether you have bug reports or feature requests, support questions or rule discussions that touch the whole network – this is the site for you.
Comments on We need to talk about Abilities
Parent
We need to talk about Abilities
The problem
Almost three years ago we introduced Abilities to Codidact as an improved system for granting activity-based permissions, such as allowing users who have made consistently great edit suggestions to edit posts without requiring approval. I'll defer to the linked posts on how Abilities function in detail.
I do still believe that coupling permissions with specific experience in the area of the permission is a good idea and should be kept as the basic premise of the permission system.
However, there are a three major issues I see with how our abilities system works currently:
-
The Ability thresholds are calculated using the Wilson score formula we use for posts. This means, that the minimum number of (positive) actions needed and the minimum percentage of positive actions are directly coupled.
In some cases this coupling can be inappropriate for the intended purposes. For example, a community might want a user to have suggested many edits to demonstrate experience but want to require only an average approved percentage of like 75%. In our current system this would not be possible.
In some cases communities might want the opposite. They would want a high percentage of 95% edits approved, but because they have low activity they only want a small sample of 5 edits (which would of course mean that once one edit is rejected your amount of edits that need to be approved would rise drastically). This would also not be possible with the current system.
-
Currently abilities are directly coupled with permissions. This means, that the system will check whether or not you have a certain ability and will infer your permission from this. This becomes a problem once a permission should be inferred from multiple abilities, because then the every time a permission is checked the code would have to keep in mind how exactly abilities bind to permissions, and if multiple permissions are coupled into one ability, because they are then affixed together as an all-or-nothing thing. However one might want to separate permissions from another for moderation purposes. A user might need to be banned from reviewing edits while their power to edit posts should not be restricted.
-
The current system is based on specific existing abilities hard-coded in the application. However communities might want to change the ability progression to better match their individual needs.
A solution?
Therefore I am proposing some tweaks to how abilities are implemented:
-
There are two factors: "privileges" and "abilities" (or "trust levels").
-
Privileges are technical allowances, such as "may edit other people's posts without review", "may review suggested edits" or "may vote to close". A user can have or not have a privilege at any time.
-
Abilities are steps on the progression ladder. Technically an ability consists of one or multiple privileges and a "win condition". If you earn an ability, you will be granted the privileges it contains.
-
Privileges can be individually suspended by moderators (as abilities can be suspended for time/infinity right now). Abilities cannot be suspended because the only thing that goes beyond suspendable privileges are "bragging rights".
-
Abilities are reached when its win condition is reached. A win condition may consist of multiple requirements, each of which must be completed. Requirements could be, for example,
- minimum user age
- obtaining a specific ability
- minimum post count
- minimum positively received post count
- minimum percentage of posts positively received
- minimum (suggested) edits
- minimum approved/applied edits
- minimum percentage of suggested edits approved
- minimum flag count
- minimum helpful flag count
- minimum percentage of helpful flags
- minimum close/delete votes
- minimum effective close/delete votes
- manual appointment (i.e. this ability can only be awarded manually)
As before, moderators would have all such privileges.
Something similar to the current ability progression should be set as standard, so that we have an ability trees not unlike this:
- everyone (general path)
- established user (general path)
- editing posts (edit path)
- editing tags (edit path)
- closing posts (mod path)
- deleting posts (mod path)
- editing posts (edit path)
- moderators
- established user (general path)
However communities would be free to change this progression as they like.
I think that these tweaks would allow better bootstrapping of communities and would allow it to better react to community size with configuring the ability system.
Discussion
What do you think? Do you have any other ideas on how to improve abilities?
I've been thinking about abilities again lately (and for a while), because they're too hard to earn but just tweaking th …
1mo ago
Considering both timeframe and last N events We could base awarding of an ability on both proportion of events in a t …
1mo ago
My main area of concern would be your "Problem", point 2. You seem to have put a lot of thought into that one as well, b …
1y ago
Testing different approaches When considering what approach to take to awarding abilities, or what specific values to u …
1mo ago
I want moderators to be able to grant or suspend abilities at fairly granular levels, because sometimes that person who' …
1y ago
coupling permissions with specific experience in the area of the permission is a good idea and should be kept as the bas …
1y ago
Post
I want moderators to be able to grant or suspend abilities at fairly granular levels, because sometimes that person who's answered a ton of questions well also has a tendency to make noisy edits or leave rude comments, and I want moderators to be able to take the smallest action that addresses a problem.
As an admin who just yesterday tried to adjust the settings for abilities on a new site... yeah, it's complicated, and I felt like I couldn't express what I wanted. When deciding whether a user should have an ability, I want the system to be able to take into account two things:
- how many times the user has done the related action
- what the "success" proportion was
If somebody has suggested 100 edits and 3 of them were rejected, I probably don't care -- that's an awful lot of good edits, and everyone makes mistakes occasionally. Or maybe the edit shouldn't have been rejected. On the other hand, if someone has suggested 5 edits and 3 of them were rejected, the user probably shouldn't be able to make unreviewed edits just yet.
So we don't want raw numbers, but percentages alone aren't enough. I want to be able to express something like "at least 10 suggested edits, and 75% approval". Pure Wilson scoring doesn't let me express that.
If we had this kind of expressiveness, then I think a lot of the pain points for the current abilities system would decrease or go away. We have higher (default) thresholds on some things that could be disruptive if unfettered, but those higher scores implicitly raise the minimum number of events to overcome a single mistake.
I agree with you (and another answer) that some other factors should contribute too, including age of the account, overall level of activity, and (maybe) activity on other network communities. Abilities can currently depend on three factors: post scores, number of suggested edits, and number of flags. I either suggested or advocated for those factors (I don't remember now) and at the time I thought they would be sufficient, but now I don't think they are.
I think what you're proposing that we group what are currently called "abilities" (to be renamed "privileges") into larger buckets called "abilities" (new meaning), so that you could define something like:
New user:
requires: (nothing)
grants: Daily Posts = 5, Comment on Own Posts
Established user:
requires:
account_age: 30d
non_negative_posts: 10
suggested_edits: 5
grants: Edit, Comment Anywhere, Daily Votes = 30
And also that we could have specific privilege criteria, that don't have to depend on the broad abilities, like:
Edit:
suggested_edits: 10
edit_ acceptance_rate: 75%
Would this be expressive enough to allow moderators to set the limits that make sense for their communities? Would it be uncomplicated enough to use? Would we be able to bake in some sort of validation or advisory feedback if the ability definitions and privilege definitions are inconsistent?
0 comment threads