This is a technical proposal for the experimental implementation of Flagged Revisions on the English Wikipedia. The main purpose of it is conducting one or several trials in order to define the final configuration. The proposed setup is aimed at achieving the maximal flexibility, while retaining an ability to stop the experiment if trials are unsuccessful.
Main features
edit- Flagged revisions (FLR) are enabled over mainspace and portal space
- FLR are disabled by default. They can be enabled and configured on the article (portal) by article (portal) basis.
- Articles with FLR enabled can be rated on 3 scales: accuracy, comprehensiveness and style. Each scale has 5 levels (0=unrated, 1=acceptable, 2=average, 3=good, 4=featured). Pages that are rated at least (1,1,1) are sighted articles (portals). Those that are rated at least (3,3,3) are called quality articles (portals).
- Two new user groups are introduced: editors and reviewers. Editor can rate (review) pages up to the level 2. Reviewers—up to 4 (validate).
- Editor right is granted to everyone who edited at least 100 days, has at least 500 edits and more than 10 edits in the recent changes, has edited at least 50 different pages and made more than 300 contents edits. Editors are also required to use edits summaries at least 100 times. Reviewer permission can be removed and given by sysops and reviewers.
- Reviewer access is granted and removed by bureaucrats. Reviewers can validate articles and portals and enable/disable/configure FLR on page by page basis.
Trials. Technical guideline
editA trial begins when there is a consensus. A bureaucrat appoints several reviewers who will be largely responsible for conducting the trial. A set of articles/portals is chosen and FLR are enabled over them. Unregistered readers will see either the last sight revision or last quality revision (depending on the nature of the trial). Any revision should be sighted (rated at level 1—acceptable) if does not contain obvious vandalism, libel or copyright violations. Quality revisions can be enabled over a small set of pages to test it as an alternative to semi-protection. In this case unregistered readers will see the last quality revision (rated as at least 3—good). A page should be validated if it is roughly of GA quality.
The trial ends when the trial period expires. A bureaucrat empties 'reviewer' group and then disables FLR over all pages that were part of the trial.
Notes
edit- 1. Automatic assignment to the 'editor' (sighter) group can be disabled. In this case rollbackers should be assigned all 'editors' rights by default.
PHP code
edit# For non-user visitors, only show tags/icons for *unreviewed* pages
$wgFlaggedRevsLowProfile = false;
# Initial trial is restricted to the mainspace
$wgFlaggedRevsNamespaces = array( NS_MAIN, NS_PORTAL);
# Pages display the current version by default
$wgFlaggedRevsOverride = false;
# And only pages where the above setting has been overridden can be reviewed at all
$wgFlaggedRevsReviewForDefault = true;
# "Quality" revisions do not trump "normal" sighted revisions
$wgFlaggedRevsPrecedence = false;
# All logged-in users see the current version in all cases
$wgFlaggedRevsExceptions = array( 'user' );
# We can see if we have any use for the comment functionality
$wgFlaggedRevsComments = true;
# Since we're not sighting the template namespace in the trial, disable these
$wgUseStableTemplates = false;
$wgUseCurrentTemplates = false;
# Or the image namespace
$wgUseStableImages = false;
$wgUseCurrentImages = false;
# WE NEED TO DECIDE WHAT SCALES AND LEVELS TO HAVE HERE
$wgFlaggedRevTags = array( 'accuracy'=>3, 'comprehensiveness'=>3, 'style'=>3 );
$wgFlaggedRevValues = 4;
$wgFlaggedRevPristine = 4;
$wgReviewCodes = array(
'0' => 'unrated',
'1' => 'acceptable',
'2' => 'average',
'3' => 'good',
'4' => 'featured'
);
# Who can set what flags to what level? (use -1 or 0 for not at all)
# Users cannot lower tags from a level they can't set
# Users with 'validate' can do anything regardless
# This is mainly for custom, less experienced, groups
$wgFlagRestrictions = array(
'accuracy' => array( 'review' => 2 ),
'comprehensiveness' => array( 'review' => 2 ),
'style' => array( 'review' => 2 ),
);
# Define our basic reviewer class
$wgGroupPermissions['editor']['review'] = true;
$wgGroupPermissions['editor']['autoreview'] = true;
$wgGroupPermissions['editor']['autoconfirmed'] = true;
$wgGroupPermissions['editor']['patrolmarks'] = true;
$wgGroupPermissions['editor']['autopatrolother'] = true;
$wgGroupPermissions['editor']['unreviewedpages'] = true;
# Defines extra rights for advanced reviewer class
$wgGroupPermissions['reviewer']['review'] = true;
$wgGroupPermissions['reviewer']['autoreview'] = true;
$wgGroupPermissions['reviewer']['autoconfirmed'] = true;
$wgGroupPermissions['reviewer']['patrolmarks'] = true;
$wgGroupPermissions['reviewer']['autopatrolother'] = true;
$wgGroupPermissions['reviewer']['unreviewedpages'] = true;
$wgGroupPermissions['reviewer']['validate'] = true;
# Autoconfirmed can move stable pages
$wgGroupPermissions['autoconfirmed']['movestable'] = true;
# Stable version selection and default page revision selection can be set per page.
# This is granted to sysops in the default settings. We want to instead assign it
# to a separate user group. In the trial this group can be 'reviewers', which can then be assigned to anyone
# we need (including sysops). Another possibility is to add 'stablesettings' right to a speciel 'flagger'
# group.
$wgGroupPermissions['sysop']['stablesettings'] = false;
$wgGroupPermissions['reviewer']['stablesettings'] = true;
# Of course we now need to be able to assign this group: crats can do that. Also trial
# the system whereby sysops grant/revoke 'reviewer' rights just like rollback.
$wgAddGroups['bureaucrat'][] = 'reviewer';
$wgRemoveGroups['bureaucrat'][] = 'reviewer';
# Allow sysops and reviewers to remove of give 'editor' right.
$wgAddGroups['sysop'][] = 'editor';
$wgRemoveGroups['sysop'][] = 'editor';
$wgAddGroups['reviewer'][] = 'editor';
$wgRemoveGroups['reviewer'][] = 'editor';
# WE NEED TO WORK OUT WHAT AUTOPROMOTE SETTINGS TO USE
$wgFlaggedRevsAutopromote = array(
'days' => 100, # days since registration
'edits' => 500, # total edit count
'excludeDeleted' => true, # exclude deleted edits from 'edits' count above?
'spacing' => 0, # spacing of edit intervals
'benchmarks' => 0, # how many edit intervals are needed?
'recentContentEdits' => 10, # $wgContentNamespaces edits in recent changes
'totalContentEdits' => 300, # $wgContentNamespaces edits
'uniqueContentPages' => 50, # $wgContentNamespaces unique pages edited
'editComments' => 100, # how many edit comments used?
'email' => false, # user must be emailconfirmed?
'userpage' => false, # user must have a userpage?
'userpageBytes' => 0, # if userpage is needed, what is the min size?
'uniqueIPAddress' => false, # If $wgPutIPinRC is true, users sharing IPs won't be promoted
'neverBlocked' => true, # Can users that were blocked be promoted?
'noSorbsMatches' => false, # If $wgSorbsUrl is set, do not promote users that match
);