You are browsing a read-only backup copy of Wikitech. The live site can be found at wikitech.wikimedia.org

Wikimedia site requests: Difference between revisions

From Wikitech-static
Jump to navigation Jump to search
imported>A2093064
(→‎Process: Now at 515)
imported>Aklapper
(Heavily expand the "Common tasks" section (phab:T126330. Thanks to Krenair and Fisch for helping collecting cases.)
Line 1: Line 1:
Wikimedia site requests are requests to configure a Wikimedia project. This page gives an overview of the process for volunteers handling them, and other concerned parties from operations side.
Wikimedia site requests are requests to configure a Wikimedia project. This page gives an overview of the process for volunteers handling them, and other concerned parties from operations side.
If you want to contribute technically, then this is a good way to get familiar and start contributing to software changes. You need [[mw:How to become a MediaWiki hacker#PHP|very basic knowledge of PHP]] and follow [[mw:Gerrit/Tutorial]] to create your first software change (a so-called "[[:w:en:Patch (computing)|patch]]"). When you work on these types of tasks you can also look at previous similar software changes. Often you do not even have to too much understanding of what is going on exactly. But still you can get familiar with code and especially processes!


== Lifecycle of a request ==
== Lifecycle of a request ==
A request generally follows this workflow:
A request generally follows this workflow:
#  The local project discuss the matter, in the manner the most appropriated for this project.
#  The local project discuss the matter, in the manner the most appropriated for this project.
# A task is filled on Phabricator, in the [https://phabricator.wikimedia.org/project/board/178/query/open/ Wikimedia-Site-requests] project (or [https://phabricator.wikimedia.org/project/profile/188/ Wikimedia-Extension-setup] if the change is about enabling an extension). See [[meta:Requesting wiki configuration changes]].
# A task is filled on Phabricator, in the [[phab:project/board/178/query/open/|Wikimedia-Site-requests]] project (or [[phab:project/profile/188/|Wikimedia-Extension-setup]] if the change is about enabling an extension). See [[meta:Requesting wiki configuration changes]]. Please check [[m:Limits to configuration changes|Limits to configuration changes]] before.
# A volunteer writes a change to edit the relevant files in the [https://phabricator.wikimedia.org/diffusion/OMWC/ operations/mediawiki-config] repository.
# A volunteer writes a change (patch) to change the relevant files in the [[phab:diffusion/OMWC/|operations/mediawiki-config]] repository, and proposes the patch in [[mw:Gerrit/Tutorial|Gerrit]]. (If you follow [[Gerrit/Commit message guidelines]], then the Phabricator task will automatically get updated about your patch in Gerrit.)
#: Note: please check [[m:Limits to configuration changes|Limits to configuration changes]] before.
# Someone else will [[mw:Gerrit/Code review/Getting reviews|review your patch in Gerrit]].
# The same volunteer - or if reluctant/absent/busy, another volunteer - schedules it for [[SWAT deploys|SWAT deployment]] on the [[Deployments]] page.
# If your patch is all good, the same volunteer - or if reluctant/absent/busy, another volunteer - schedules it for [[SWAT deploys|SWAT deployment]] on the [[Deployments]] page.
# The change is merged and [[How to deploy code|deployed]].
# The change is merged and [[How to deploy code|deployed on the Wikimedia servers]], usually within one week but [[SWAT deploys|sometimes also faster]].


== Prioritisation ==
== Prioritisation ==
Line 30: Line 32:
== Common tasks ==
== Common tasks ==


=== IP throttle exception ===
=== Disable throttling of account creations for an IP at events ===
Often requested by editors who are hosting an [[:en:wp:editathon|edit-a-thon]], account creation throttle exception are one of the most common tasks which Wikimedia site requests deals with.


==== Associated configuration file ====
Often requested by editors who are hosting an [[:en:wp:editathon|edit-a-thon]], account creation throttle exception are one of the most common tasks which Wikimedia site requests deals with. Such requests should follow [[meta:Mass account creation#Requesting temporary lift of IP cap]].
* [https://phabricator.wikimedia.org/source/mediawiki-config/history/master/wmf-config/throttle.php wmf-config/throttle.php]


==== Process ====
* Make your changes in the file <code>wmf-config/throttle.php</code> in the repository <code>operations/mediawiki-config</code>
# Follow the [[:mw:Gerrit/Getting_started|normal Gerrit procedure]] to checkout and branch
# Edit throttle.php, adding an exception (example below)
#*<code>from</code> UTC date/time of exception start
#*<code>from</code> UTC date/time of exception start
#*<code>to</code> UTC date/time of exception end
#*<code>to</code> UTC date/time of exception end
#*<code>range</code> [[:en:CIDR|IP range(s)]] the exception applies to
#*<code>range</code> [[:en:CIDR|IP range(s)]] the exception applies to
#*<code>dbname</code> wiki(s) this exception applies to
#*<code>dbname</code> wiki(s) this exception applies to
# [[:mw:Gerrit/Tutorial#Make_and_commit_your_change|Commit]] your changes
* Past example: https://gerrit.wikimedia.org/r/#/c/267186/
 
==== Example ====
<pre>$wmgThrottlingExceptions[] = [ // T184579
<pre>$wmgThrottlingExceptions[] = [ // T184579
'from' => '2018-01-11T09:00 +5:30',
'from' => '2018-01-11T09:00 +5:30',
Line 54: Line 50:
];</pre>
];</pre>


=== Site logo changes ===
=== Change the logo of a Wikimedia wiki ===
==== Associated configuration file and image path ====
 
* [https://phabricator.wikimedia.org/source/mediawiki-config/browse/master/wmf-config/InitialiseSettings.php wmf-config/InitialiseSettings.php]
* Locally run <code>optipng -o7</code> on each PNG file that you touch, to compress the PNG.
* [https://phabricator.wikimedia.org/source/mediawiki-config/browse/master/static/images/project-logos/ static/images/project-logos]
* If you have an SVG/PNG file that is large, also add a HD logo: Create dbname-1.5x.png and dbname-2x.png, which are 1.5x/2x of the original file dbname.png).
* Under <code>wgLogo</code>, edit the file <code>wmf-config/InitialiseSettings.php</code> in the repository <code>operations/mediawiki-config</code>. Check that <code>wgLogo</code> is set correctly (some wikis have files in the logo folder which are unused and duplicates of the one used)
* Add the image file itself to the directory <code>static/images/project-logos/</code> in the repository <code>operations/mediawiki-config</code>.
* If you received an SVG logo, please add the HD logo version as well.
* Note that the [[SWAT deploys|SWAT policy]] requires to have the change in <code>static/images/project-logos</code> in a separate commit than the change in <code>wmf-config/InitialiseSettings.php</code> and having those two patches dependent on each other, in the correct order: See [[mw:Gerrit/Advanced usage#Create a dependency]]
* Past examples: https://gerrit.wikimedia.org/r/#/c/operations/mediawiki-config/+/353012/ https://gerrit.wikimedia.org/r/#/c/operations/mediawiki-config/+/368444/ https://gerrit.wikimedia.org/r/#/c/operations/mediawiki-config/+/423497/
<pre>'avwiki' => '/static/images/project-logos/avwiki.png', // T48589</pre>
 
=== Add a custom namespace ===
 
* Add the new namespace under <code>wgExtraNamespaces</code> in the file <code>wmf-config/InitialiseSettings.php</code> in the repository <code>operations/mediawiki-config</code>.
* Past examples: [[phab:T221697]] and https://gerrit.wikimedia.org/r/#/c/operations/mediawiki-config/+/506134/
* After the change has been deployed (merged), run <code>namespaceDupes.php</code> to ensure no page will be left unaccessible.
* Documentation: [[:mw:Manual:Using custom namespaces]]
 
=== Change a namespace ===
 
* Make your changes in the file <code>wmf-config/InitialiseSettings.php</code> in the repository <code>operations/mediawiki-config</code>
* If necessary, also alias old names under <code>wgNamespaceAliases</code> in the file <code>wmf-config/InitialiseSettings.php</code> in the repository <code>operations/mediawiki-config</code>
* Past example: [[phab:T202347]] and https://gerrit.wikimedia.org/r/#/c/operations/mediawiki-config/+/454213/
* After config change, <code>namespaceDupes.php</code> maintenance script
 
=== Change the translation of a namespace ===
 
* Namespace localization must happen in the extension that the namespace belongs to.
* Namespace localization can require separate patches in quite some repositories. See e.g.
** https://gerrit.wikimedia.org/r/#/c/348112/ in MediaWiki Core.
** https://gerrit.wikimedia.org/r/#/c/348114/ in Gadgets extension.
** https://gerrit.wikimedia.org/r/#/c/348113/ in Scribunto extension (for 'Module:`)
* To deploy a custom namespace only on Wikimedia sites (and not in the MediaWiki software for everybody), the file to change is <code>wmf-config/InitialiseSettings.php</code> in the repository <code>operations/mediawiki-config</code>. This file also allows you to change project namespace (<code>wgMetaNamespace</code>).
 
=== Change the linktrail ===
 
* Make your changes to <code>$linkTrail</code> in the corresponding messages file for that language code in the directory <code>languages/messages/</code> in the repository <code>mediawiki/core</code>. You will need some [[:w:en:Regular expression|regex]] knowledge for this.
* Past examples: https://gerrit.wikimedia.org/r/#/c/mediawiki/core/+/423523/ https://gerrit.wikimedia.org/r/#/c/mediawiki/core/+/384755/
 
=== Update the interwiki cache ===
 
* Process: Run <code>extensions/WikimediaMaintenance/dumpInterwiki.php</code> script. Then upload the resulting file as a proposed patch to Gerrit.
* Past example: https://gerrit.wikimedia.org/r/#/c/mediawiki/core/+/520159/
* Also see [[Update the interwiki cache]]
 
=== Change local group rights ===
 
* Change/define the group's right under <code>GroupOverrides</code> in the file <code>wmf-config/InitialiseSettings.php</code> in the repository <code>operations/mediawiki-config</code>
* Change who can grant the group using <code>(Add|Remove)Groups(Self)</code>, otherwise, only the stewards will be able to grant/remove it.
 
=== Change user groups and restriction levels ===
 
* Make your changes under <code>wgRestrictionLevels</code> in the file <code>wmf-config/InitialiseSettings.php</code> in the repository <code>operations/mediawiki-config</code>
* Past examples: [[phab:T225896]] and its patch in https://gerrit.wikimedia.org/r/#/c/operations/mediawiki-config/+/517371/


==== Process ====
=== Enable or disable extensions on a wiki ===
# Follow the [[:mw:Gerrit/Getting_started|normal Gerrit procedure]] to checkout and branch
# Add the image to static/images/project-logos
# Edit InitialiseSettings.php, and ensure wgLogo (line 515) is set correctly as per the example below (include a commented task number if possible)
# If you recieved a SVG logo, please add HD logo version as well.
# [[:mw:Gerrit/Tutorial#Make_and_commit_your_change|Commit]] your changes (note: [[SWAT deploys|SWAT policy]] requires to have change in static/images/project-logos in another commit than change in IS.php and having those two patches dependent on each other, so syncing in wrong order is almost impossible)


==== Example ====
* Check first that the request followed [[meta:Requesting wiki configuration changes]], that a link to a community consensus is present, that the request is not against [[meta:Limits to configuration changes]], and that the requested extension has a [[mw:Developers/Maintainers|maintainer/steward]]
<pre>'avwiki' => '/static/images/project-logos/avwiki.png', // T48589</pre>
* Check that the extension is already deployed on Wikimedia servers in https://phabricator.wikimedia.org/diffusion/MREL/browse/master/make-wmf-branch/config.json and https://phabricator.wikimedia.org/source/mediawiki-config/browse/master/wmf-config/extension-list. If the extension is not already deployed, then the request is blocked and the extension must first go through [[mw:Review queue]]!
* Make your changes in the file <code>wmf-config/InitialiseSettings.php</code> in the repository <code>operations/mediawiki-config</code>: There must be an array called <code>wmgUseNameOfTheExtension</code> (replace <code>NameOfTheExtension</code> accordingly) and a line <code>'nameOfTheWikiDatabase' => true</code> or <code>false</code>.
* Past examples: [[phab:T230390]] and https://gerrit.wikimedia.org/r/#/c/operations/mediawiki-config/+/530381/
 
=== Change import sources ===
 
* Make your changes to <code>wgImportSources</code> in the file <code>wmf-config/InitialiseSettings.php</code> in the repository <code>operations/mediawiki-config</code>
* Past examples: [[phab:T217104]] and https://gerrit.wikimedia.org/r/#/c/492942/ ; [[phab:T228607]] and https://gerrit.wikimedia.org/r/#/c/operations/mediawiki-config/+/527229/
 
=== Add a website to CopyUploadsDomains (e.g. for [[:mw:Extension:GWToolset|GWToolset]]) ===
 
* Make your changes in the file <code>wmf-config/InitialiseSettings.php</code> in the repository <code>operations/mediawiki-config</code>
* <code>wgCopyUploadsDomains</code>, almost always for Wikimedia Commons (commonswiki)
* Past examples: [[phab:T225917]] and its patch in https://gerrit.wikimedia.org/r/#/c/518278/ ; [[phab:T225852]] and its patch in https://gerrit.wikimedia.org/r/#/c/operations/mediawiki-config/+/517170/
 
=== Convert digits (numbers) into a different script ===
 
* Make your changes to <code>$digitTransformTable</code> in the corresponding messages file for that language code in the directory <code>languages/messages/</code> in the repository <code>mediawiki/core</code>
* Past example: [[phab:T212221]] and its patch in https://gerrit.wikimedia.org/r/#/c/mediawiki/core/+/480589/
 
=== Areas in the MediaWiki code base itself ===
 
These tasks are about the general MediaWiki code base itself, and not about the configuration of MediaWiki on Wikimedia servers like the tasks above.
 
==== Replacing deprecated functions ====
 
These functions could be found by [[:mw:Continuous integration/Phan|phan checks]] or a good [[:w:en:Integrated development environment|IDE]] with static analytic code checks.
* Past examples: https://gerrit.wikimedia.org/r/529092/ ; https://gerrit.wikimedia.org/r/520719/
 
==== Upgrading dev libraries ====
 
This is sometimes done by a bot, but that is not always and not everywhere the case.
* Past examples: https://gerrit.wikimedia.org/r/523697/
 
==== Alphabetize stuff ====
 
* Past examples: https://gerrit.wikimedia.org/r/523215/


== Useful links ==
== Useful links ==
* Current configuration settings for each Wikimedia wiki: https://noc.wikimedia.org/conf/InitialiseSettings.php.txt
* Current configuration settings shared for all Wikimedia wikis: https://noc.wikimedia.org/conf/CommonSettings.php.txt
* [[Configuration files]] - A general `about our configuration files` page
* [[Configuration files]] - A general `about our configuration files` page
* [[:mw:Manual:Using custom namespaces]]
* [[How to deploy code]]
* [[How to deploy code]]
* [[:c:File:Improving MediaWiki what to do, when you're new.pdf]]

Revision as of 13:02, 26 September 2019

Wikimedia site requests are requests to configure a Wikimedia project. This page gives an overview of the process for volunteers handling them, and other concerned parties from operations side.

If you want to contribute technically, then this is a good way to get familiar and start contributing to software changes. You need very basic knowledge of PHP and follow mw:Gerrit/Tutorial to create your first software change (a so-called "patch"). When you work on these types of tasks you can also look at previous similar software changes. Often you do not even have to too much understanding of what is going on exactly. But still you can get familiar with code and especially processes!

Lifecycle of a request

A request generally follows this workflow:

  1. The local project discuss the matter, in the manner the most appropriated for this project.
  2. A task is filled on Phabricator, in the Wikimedia-Site-requests project (or Wikimedia-Extension-setup if the change is about enabling an extension). See meta:Requesting wiki configuration changes. Please check Limits to configuration changes before.
  3. A volunteer writes a change (patch) to change the relevant files in the operations/mediawiki-config repository, and proposes the patch in Gerrit. (If you follow Gerrit/Commit message guidelines, then the Phabricator task will automatically get updated about your patch in Gerrit.)
  4. Someone else will review your patch in Gerrit.
  5. If your patch is all good, the same volunteer - or if reluctant/absent/busy, another volunteer - schedules it for SWAT deployment on the Deployments page.
  6. The change is merged and deployed on the Wikimedia servers, usually within one week but sometimes also faster.

Prioritisation

The requests are handled in a fast pace, using a one week cadence: we can deploy them three times per day between Monday and Thursday. There is no formal sprint.

Priority on Phabricator Description
Unbreak now! The change breaks normal production. You want a deployment right now or in the next hours. That also means you consider this task requests we set other requests aside.
High The change is needed very soon, ideally in the next SWAT, or if not possible, this SWAT week (Monday-Thursday).
Normal The change is helpful, we can do it this SWAT week or the next (so in max. 7-10 days). This is the priority assigned to most simple tasks.
Low The change isn't needed before two weeks.
Lowest The change can take as long as needed, or there is nothing actionable before a long time.

Common tasks

Disable throttling of account creations for an IP at events

Often requested by editors who are hosting an edit-a-thon, account creation throttle exception are one of the most common tasks which Wikimedia site requests deals with. Such requests should follow meta:Mass account creation#Requesting temporary lift of IP cap.

  • Make your changes in the file wmf-config/throttle.php in the repository operations/mediawiki-config
    • from UTC date/time of exception start
    • to UTC date/time of exception end
    • range IP range(s) the exception applies to
    • dbname wiki(s) this exception applies to
$wmgThrottlingExceptions[] = [ // T184579
	'from' => '2018-01-11T09:00 +5:30',
	'to' => '2018-01-11T18:00 +5:30',
	'range' => [ '103.8.192.54', '186.67.125.0/24' ],
	'dbname' => [ 'enwiki', 'mrwiki' ],
	'value' => 45 // 35 expected
];

Change the logo of a Wikimedia wiki

'avwiki' => '/static/images/project-logos/avwiki.png', // T48589

Add a custom namespace

Change a namespace

  • Make your changes in the file wmf-config/InitialiseSettings.php in the repository operations/mediawiki-config
  • If necessary, also alias old names under wgNamespaceAliases in the file wmf-config/InitialiseSettings.php in the repository operations/mediawiki-config
  • Past example: phab:T202347 and https://gerrit.wikimedia.org/r/#/c/operations/mediawiki-config/+/454213/
  • After config change, namespaceDupes.php maintenance script

Change the translation of a namespace

  • Namespace localization must happen in the extension that the namespace belongs to.
  • Namespace localization can require separate patches in quite some repositories. See e.g.
  • To deploy a custom namespace only on Wikimedia sites (and not in the MediaWiki software for everybody), the file to change is wmf-config/InitialiseSettings.php in the repository operations/mediawiki-config. This file also allows you to change project namespace (wgMetaNamespace).

Change the linktrail

Update the interwiki cache

Change local group rights

  • Change/define the group's right under GroupOverrides in the file wmf-config/InitialiseSettings.php in the repository operations/mediawiki-config
  • Change who can grant the group using (Add|Remove)Groups(Self), otherwise, only the stewards will be able to grant/remove it.

Change user groups and restriction levels

Enable or disable extensions on a wiki

Change import sources

Add a website to CopyUploadsDomains (e.g. for GWToolset)

Convert digits (numbers) into a different script

Areas in the MediaWiki code base itself

These tasks are about the general MediaWiki code base itself, and not about the configuration of MediaWiki on Wikimedia servers like the tasks above.

Replacing deprecated functions

These functions could be found by phan checks or a good IDE with static analytic code checks.

Upgrading dev libraries

This is sometimes done by a bot, but that is not always and not everywhere the case.

Alphabetize stuff

Useful links