Help:Wikifunctions/User rights

From Linux Web Expert

File:PD-icon.svg Note: When you edit this page, you agree to release your contribution under the CC0. See Public Domain Help Pages for more info. File:PD-icon.svg

To balance the needs of the Wikifunctions community for ease of use and stability, there are a number of different actions that are only available to some users. These are set out below. For a summary, see also user groups on Wikifunctions.

User rights

Access is subject to rate limiting, like all Wikimedia sites.

The description here describes what we are aiming for. The table below lists the current state of affairs, as well as the planned changes.

  • Everyone can …
    1. … run functions.
      • Why: We want everyone to be able to use our library of functions.
    2. … make normal wiki edits to talk pages, project discussions, etc.
      • Why: Like other Wikimedia wikis, we want editing to be as open as possible.
  • Everyone with an account can …
    1. … add, adjust, and remove labels and aliases for any object, even pre-defined system ones and their arguments.
      • Why: We want everyone to be able to participate to build and improve our library of functions, in every language.
    2. … create new functions, testers, and implementations, and maintain them until they are connected.
      • Why: We welcome proposed new functions and their uses from anyone.
  • Only community-approved users, 'functioneers', can …
    1. … connect and disconnect implementations and testers from a user-written function.
      • Why: Connecting or disconnecting implementations and testers from functions can have widespread effects, and could break the wiki for lots of people.
    2. … create new types.
      • Why: Types are very powerful, and should be created following a community discussion.
  • Only community-approved expert users, 'function maintainers', can …
    1. … connect and disconnect implementations and testers from a pre-defined system function.
      • Why: Connecting or disconnecting implementations and testers from system functions could break the wiki for everyone.
    2. … adjust the definition of a running function.
      • Why: Adjusting a function will immediately break it for anyone calling it.
    3. … adjust the definition of a type.
      • Why: Adjusting a type once it has been created will almost certainly break any function that uses it.
    4. … add or adjust the definition of a special system type, such as a programming language or a natural language.
      • Why: Special system types will occasionally need to be extended, but could break the wiki for everyone if a mistake is made.
    5. … adjust implementations and testers which are 'live' and connected to a function.
      • Why: Adjusting a connected implementation or tester might break the associated function for anyone calling it.
  • Only community-approved administrator users, 'sysops', can …
    1. … change the type of a object.
      • Why: Adjusting the nature of an object once it has been created is a very unusual step and will break any reference to it across the wiki.
    2. … add new values for ultra-special system types like boolean and unit.
      • Why: Special system types will occasionally need to be extended, but could break the wiki for everyone if a mistake is made.
    3. … add and remove users from the 'functioneers' group.
      • Why: We want our community to self-manage as much as possible, rather than relying on the Wikimedia-wide stewards.
    4. … use all the normal kinds of sysop tool familiar from other wikis – blocking users, rolling back vandalism, managing abuse filters, etc.
      • Why: Like other Wikimedia wikis, the sysops of Wikifunctions are the core of the community's curation and management processes.
  • Only community-approved super-administrator users, 'bureaucrats', can …
    1. … add and remove users from the 'function maintainers' group.
      • Why: We want our community to self-manage as much as possible, rather than relying on the Wikimedia-wide stewards.
    2. … use the normal bureaucrat user rights tool familiar from other wikis – promoting users to +sysop, adding +bot rights, etc.
      • Why: Like other Wikimedia wikis, the sysops of Wikifunctions are the core of the community's curation and management process.

Detailed table

While reading the following table, you must consider the following:

  • The row order is important: one change might match with two different rows, which describe rights that are given to different user groups. For example, the action "add a label in Spanish for the Boolean object 'true'" both fulfills the rule "any user can edit labels", as well as "only a sysop user can edit a boolean".
  • Rules are configured as to not be cumulative; they are terminal. This means that the rules are checked in a particular order, and as soon as there is a match, the process exits with the required right. Going back to our example: the rule "any user can edit labels" comes first, so when this is matched the process terminates and concludes that the action "add a label in Spanish for the Boolean object 'true'" can be performed by any logged in user.

For a more detailed understanding of what specific rights are needed for each action, how the authorization process works for edits or how to develop or edit the granular authorization rules, go to Granular Edit Authorization.

Comprehensive listing of user rights as configured in Wikifunctions production as of 2023-10-18
Action Logged out users Logged in users Functioneer Function maintainer SysOp Staff
Execution
Run published functions File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Run unsaved code - on implementation edit page File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed

File:Yellowpin.svg <translate> To do</translate> split out right (T349057)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Object creation
Create a boolean File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Create a unit File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Create predefined objects[1] File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Create a language File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Create a programming language File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Create a type File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg Coming later (T349080)

File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg Coming later (T349080)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Create an implementation File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg General Availability to allow (T349061)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Create a test File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg General Availability to allow (T349061)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Create a function File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg General Availability to allow (T349061)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Create any other object[2] File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg General Availability to allow (T349061)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Object editing
The following rules apply to all objects, predefined and user-contributed
Edit any labels, aliases and descriptions File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit function input labels File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg General Availability to allow (T349063)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit type key labels File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg General Availability to allow (T349063)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit error key labels File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg Coming later (T348997)

File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg Coming later (T348997)

File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg Coming later (T348997)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit the object type of any object File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit a boolean File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit a unit File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit a language File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit a programming language File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit a type File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit any other predefined object[1] File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
The following rules only apply to user-contributed objects
Edit user-contributed Function objects
Edit inputs/output of a running function[3][4] File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit tests of a running function (connect/disconnect a test) File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit tests of a not-running function (connect/disconnect a test) File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg Maybe later (T349136)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit implementations of a running function (connect/disconnect an implementation) File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit implementations of a not-running function (connect the first implementation) File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg Maybe later (T349136)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit a function

(fallback rule, all other function edits)

File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg General Availability to allow (T349080)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit user-contributed Implementation objects
Edit an implementation connected to a user-contributed function[5] File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed

File:Yellowpin.svg Maybe prohibit (T349081)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit an implementation connected to a predefined function[5] File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed

File:Yellowpin.svg Maybe prohibit (T349081)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit an implementation[6]

(fallback rule, all other implementations, which are not connected)

File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg General Availability to allow (T349082)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit user-contributed Test objects
Edit a test connected to a user-contributed function[7] File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed

File:Yellowpin.svg Maybe prohibit (T349081)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit a test connected to a predefined function[7] File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon check-constructive.svg Allowed

File:Yellowpin.svg Maybe prohibit (T349081)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit a test[8]

(fallback rule, all other tests, which are not connected)

File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg General Availability to allow (T349082)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed
Edit other user-contributed objects
Edit any other object[2] (fallback rule, all other types) File:OOjs UI icon close-ltr-destructive.svgN Not allowed File:OOjs UI icon close-ltr-destructive.svgN Not allowed

File:Yellowpin.svg General Availability to allow (T349082)

File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed File:OOjs UI icon check-constructive.svg Allowed


Notes:

  1. 1.0 1.1 Predefined objects: Objects in the Zid range from Z1 to Z9999. Also referred to as built-in objects.
  2. 2.0 2.1 Objects of any type excluding the types with special restrictions (function, test, implementation, unit, boolean, language, programming language or type)
  3. Running function: Any function that has, at least, one connected implementation.
  4. This operation will also automatically disconnect from this function all its connected testers and implementations.
  5. 5.0 5.1 Connected implementation: An implementation that is active or connected to a function.
  6. Any other implementation that does not fall on the specific groups detailed above: Must be a not-connected and user-contributed implementation.
  7. 7.0 7.1 Connected test: A test that is active or connected to a function.
  8. Any other test that does not fall on the specific groups detailed above: Must be a not-connected and user-contributed test.