Wikibooks:FlaggedRevs Extension/Unstable

Note:
This text reflects this version.

Proposal

edit

Wikibooks uses the FlaggedRevs extension (also known as flagged revisions or pending changes) so that reviewers can review page revisions. With the proposed changes:

Readers will not be impacted by reviews, unless administrators are asked by book contributors to have readers shown the latest reviewed revision of a specific quality.

Contributors can become reviewers one of two ways: by fulfilling the auto-promotion criteria or by a direct request at Wikibooks:Requests for permissions. Auto-promotion will take into consideration work done in the main, Cookbook and Wikijunior namespaces.

Reviewers may classify page revisions for quality as minimal, average, or good. Reviewed pages are said to be stable. None of the quality classifications will be accompanied by any type of comment. Any new page created by a reviewer will automatically get a quality classification of minimal.

Reviewers will also be granted rollback capability (able to revert large number of alterations by a single user).

No previous work done under the flagged revisions extension will be lost, as a developer will ensure that previous reviews on composition apply to quality instead.

Quality criteria levels
  • minimal - Proofread for spelling, punctuation, grammar, paragraph structure, and paragraph consistency.
  • average - Checked that typography and language is consistent with the book's local manual of style.
  • good - Thoroughly examined to ensure ideas/concepts are consistent, neutral, accurate, and cited.
Reviewer auto-promotion criteria
  • Pages in the main, Cookbook, and Wikijunior namespaces count as content pages, instead of just those in the main space. As a side effect more edits will count towards auto promotion for Reviewers and statistics will be more accurate.
  • Have a registered account that is at least 30 days old, with an email set and confirmed in Special:Preferences.
  • Have never been blocked, and have never had the Reviewer tools removed (you can request the tools in this case).
  • Have at least 100 edits since registration (excluding deleted edits), in which:
    • 50 or more edits are to pages other than discussion pages, including edits to the main space, Cookbook, and Wikijunior.
    • 50 or more edit summaries are used.
    • 10 or more unique pages are edited at least once.
    • 8 edits are spaced 2 or more days apart from each other (which takes at least 18 days, if you edit every 2 days).
    • 5 or more edits are in recent changes at the time automatic Reviewer promotion is checked (this works out to be anytime in the past week).
  • People sharing the same IP address can now be auto-promoted.

The proposed adoption of this extension will allow for anyone to provide a rating of a page, without having to be a reviewer or even logging in. To view it in use, visit en.labs.wikimedia.org and at the bottom of the page you will see the interface for the extension. This interface uses a menu system, but one using star graphics has been implemented at Wikinews.

Reader feedback will be enabled for pages in the main space, the Cookbook, and Wikijunior, where anyone (even unregistered users) may provide feedback at five levels for reliability, completeness, neutrality, and presentation.

Feedback totals are presented to the reader after submitting feedback, but a page will not be a member of the overall list of reader-rated pages until it receives feedback from at least five people. Graphs are generated for each page showing feedback over the past 180 days.

Flagged revisions replaces the new page patrol system in any namespace it is implemented in. As it is enabled in all namespaces that use new page patrol, there is no longer any need for the Patroller group.

Those using the flagged revisions system are often required to handle vandalism and so, whether auto-promoted or assigned, reviewers will have the ability to roll back all of the last editor's edits to a page. If this is abused, the tools will be removed and reviewer group membership will have to be requested at Wikibooks:Requests for permissions. This will eliminate the need for a dedicated Rollbacker group. To avoid confusion, the former Editor group will be what has been referred to up to this point as Reviewer and administrators will be able to continue to add or remove members from that group.

Additional user groups that have not been used up to this point will be made available for use. An Importer group will be enabled that allows members of the community that need it to bring in pages from other Wikimedia sites (such as Wikipedia) should an administrator add them to the group following discussion at Wikibooks:Requests for permissions. For trusted members of the community that need to perform high-volume, non-controversial work for a short period of time, bureaucrats will be able to assign them the Pseudo-bot flag to hide their edits from recent changes. For long-term work, a separate account and full discussion at WB:RFP will be needed for the Bot flag instead. To simplify things, the former Transwiki importer group will become the Importer group already mentioned.

Because the flagged revisions extension removes new page patrol, and with this proposal allowing the most recent revision to be shown to readers by default (reviewed or not), an alternative is needed to limit the amount of vandalism shown to readers. The adoption of the edit filter extension will permit some level of automation in protecting the project from clear-cut vandalism.

Specific situations that are set by administrators will determine whether an action is performed to prevent damage to the project, known as a filter. A filter can result in one of the following: tagging of the edit in WB:PH/recent changes, slowing the rate at which a user can edit for a period of time, displaying a warning to the user that their edit is undesired, or preventing a user from being auto-promoted to reviewer for a period of time. This system should not obstruct good-faith contributors and the filters will be transparently available for view by registered users who have had an account for four days, to prevent prospective vandals from getting around the system.

Configuration

edit

Proposed

edit
############## Flaggedrevs.php ###############
// Sets the recent version as shown
$wgFlaggedRevsOverride = false;

// Main, Template, File, Cookbook, Wikijunior
$wgFlaggedRevsNamespaces = array(
  NS_MAIN, NS_FILE, NS_TEMPLATE, 102, 110);

// Three levels: minimal (checked), average (quality)
//  good (pristine)
$wgFlaggedRevTags = array(
  'quality' => array('levels' => 3, 'quality' => 2, 'pristine' => 3) );

$wgSimpleFlaggedRevsUI = false; // unchanged
$wgFlaggedRevComments = false;

// Edit intervals dropped from 10 to 8; RC edits from 10 to 5; uniqueIP false
$wgFlaggedRevsAutopromote = array(
  'days' => 30, # days since registration
  'edits' => 100, # total edit count
  'excludeDeleted' => true, # exclude deleted edits from 'edits' count above?
  'spacing' => 2, # spacing of edit intervals
  'benchmarks' => 8, # how many edit intervals are needed?
  'recentContentEdits' => 5, # $wgContentNamespaces edits in recent changes
  'totalContentEdits' => 50,  # $wgContentNamespaces edits
  'uniqueContentPages' => 10, # $wgContentNamespaces unique pages edited
  'editComments' => 50, # how many edit comments used?
  'email' => true, # user must be emailconfirmed?
  'userpage' => false, # user must have a userpage?
  'uniqueIPAddress' => false, # If $wgPutIPinRC is true, users sharing IPs won't be promoted
  'neverBlocked' => true, # Can users that were blocked be promoted?
) + $wgFlaggedRevsAutopromote;

$wgGroupPermissions['editor']['rollback'] = true;
$wgGroupPermissions['sysop']['review'] = true;
$wgGroupPermissions['sysop']['stablesettings'] = true;
$wgGroupPermissions['sysop']['validate'] = true;

// Restrict viewing of edit filter settings/logs to autoconfirmed users
// to discourage lazy vandals from gaming the system
$wgGroupPermissions['*']['abusefilter-view'] = false;
$wgGroupPermissions['*']['abusefilter-log'] = false;
$wgGroupPermissions['autoconfirmed']['abusefilter-view'] = true;
$wgGroupPermissions['autoconfirmed']['abusefilter-log'] = true;

// Remove 'reviewer' group
// (Rename editor to "reviewer" in interface)
unset($wgGroupPermissions['reviewer']);

// Remove distinction between unused 'importer' group
// and rename 'transwiki importer' to 'importer
unset($wgGroupPermissions['importupload']);

// Namespaces for reader feedback
$wgFeedbackNamespaces = array(NS_MAIN, 102, 110);

// Calculate rating based on past 180 days
$wgFeedbackAge = 180 * 24 * 3600;

// 5 ratings are needed before average calculated
$wgFeedbackSizeThreshhold = 5;


############# InitialiseSettings.php ################
'wmgUseReaderFeedback' => array(
  'enwikibooks' => true )

'wmgUseAbuseFilter' => array(
   'enwikibooks' => true,)

$wgAbuseFilterAvailableActions	= array(
  'flag', 'throttle', 'warn', 'disallow', 'blockautopromote', 'tag');

// Wikibooks has 3 content namespaces
$wgContentNamespaces = array(NS_MAIN, 102, 110);

// Eliminate rollback group and patroller group
// Rollback no different than reviewer
// Page patrol replaced by flagged revisions
'groupOverrides' => array( 
  enwikibooks' => array(
 #  'rollbacker' => array( 'rollback' => true ),
 #  'patroller' => array( 'patrol' => true, 'autopatrol' => true),
    'flood' => array( 'bot' => true ),
    'uploader'      => array( 'upload' => true, 'reupload' => true),
    'autoconfirmed' => array( 'upload' => false, 'reupload' => false),
) )

// Remove rollback/patrol groups from grant list; add transwiki importer
'wgAddGroups' => array(
  '+enwikibooks' => array(
 #   'sysop' => array('rollbacker', 'patroller', 'uploader'),
     'sysop' => array('transwiki', 'uploader'),
     'bureaucrat' => array('flood'),
) )

// Remove rollback/patrol groups from remove list; add transwiki importer
'wgRemoveGroups' => array(
  '+enwikibooks' => array(
 #  'sysop' => array('rollbacker', 'patroller', 'ipblock-exempt', 'uploader'),
    'sysop' => array('ipblock-exempt', 'transwiki', 'uploader'),
    ) )

Current

edit
This is the cumulative effect of bugzilla:14618 (consensus below), bugzilla:18421 (consensus here), and bugzilla:20034 (consensus here).
$wgFlaggedRevsNamespaces = array(NS_MAIN, NS_IMAGE, NS_TEMPLATE, 102, 110); // Cookbook, WikiJunior

// what can pages be flagged with, and what minimal rating for each flag makes for a quality page?
$wgFlaggedRevTags = array('composition' => 3, 'accuracy' => 2, 'coverage' => 2 );

// what is the maximum flag level that can be set by users with certain permissions?
$wgFlagRestrictions = array(
  'composition' => array( 'review' => 3 ),
  'accuracy'    => array( 'review' => 3 ),
  'coverage'    => array( 'review' => 3 ),
);

$wgSimpleFlaggedRevsUI = false;  // show a small icon to distinguish between "sighted", "quality", and unflagged pages?
$wgFlaggedRevTabs = false; // add stable/draft revision tabs
$wgFlaggedRevComments = true; // can users make comments that will show up below flagged revisions?

$wgFlaggedRevsAutoReviewNew = false; // automatically review new pages by editors to the basic minimal level?

// Requirements for auto-promoting users to editor status
$wgFlaggedRevsAutopromote = array(
  'days' => 30, # days since registration
  'edits' => 100, # total edit count
  'excludeDeleted' => true, # exclude deleted edits from 'edits' count above?
  'spacing' => 2, # spacing of edit intervals
  'benchmarks' => 10, # how many edit intervals are needed?
  'recentContentEdits' => 10, # $wgContentNamespaces edits in recent changes
  'totalContentEdits' => 50,  # $wgContentNamespaces edits
  'uniqueContentPages' => 10, # $wgContentNamespaces unique pages edited
  'editComments' => 50, # how many edit comments used?
  'email' => true, # user must be emailconfirmed?
  'userpage' => false, # user must have a userpage?
  'userpageBytes' => 1 # 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
);

// So that administrators/bureaucrats have same permissions as editors by default
$wgGroupPermissions['sysop']['review']          = true;
$wgGroupPermissions['sysop']['autoreview']      = true;
$wgGroupPermissions['sysop']['autoconfirmed']   = true;
$wgGroupPermissions['sysop']['patrolmarks']     = true;
$wgGroupPermissions['sysop']['autopatrolother'] = true;
$wgGroupPermissions['sysop']['unreviewedpages'] = true;
$wgGroupPermissions['sysop']['validate']        = true;