Release checklist

This page provides a unified view of the release process. To determine if a step is needed, check the column of corresponding column for the sort of release you're making. The release script is make-release.py in the mediawiki/tools/release repository.

Glossary

 * WMF: Wikimedia Foundation
 * RMT: Release Management Team
 * Devs: Developers
 * R-X: Release date minus X weeks

Release process kickoff
{| class="wikitable" !|Status !|Timeline !|Major !|Patch !|Security !|Who !|Process step !|Outcome !|Comments
 * colspan="9"|
 * colspan="9"|

Decision
Example sources R-1 week
 * RMT, WMF
 * Set release date
 * Release date. Process starts
 * For major releases: coordinate with WMF
 * RMT
 * Set up release checklist
 * See Boilerplate
 * R-1 week
 * RMT
 * Check if release is necessary
 * Decision
 * Are there any merged commits since the last release? This will be automated.
 * RMT
 * Set up release checklist
 * See Boilerplate
 * R-1 week
 * RMT
 * Check if release is necessary
 * Decision
 * Are there any merged commits since the last release? This will be automated.
 * R-1 week
 * RMT
 * Check if release is necessary
 * Decision
 * Are there any merged commits since the last release? This will be automated.
 * RMT
 * Check if release is necessary
 * Decision
 * Are there any merged commits since the last release? This will be automated.
 * Are there any merged commits since the last release? This will be automated.
 * Unmerged open commits for REL1_24: https://gerrit.wikimedia.org/r/#/q/status:open+project:mediawiki/core+branch:REL1_24,n,z
 * Open issues for 1.23.x release: https://phabricator.wikimedia.org/tag/1.23.x_release/


 * RMT
 * Check if there are any security fixes
 * Decision
 * Check in Phabricator and ask Security team
 * colspan="9"|
 * Decision
 * Check in Phabricator and ask Security team
 * colspan="9"|
 * colspan="9"|

Setup and announcements

 * R-6 week
 * RMT
 * Announce creation of release branch on wikitech-l
 * one week prior to branching
 * R-6 week
 * RMT
 * Run  on master branch and upload changes to   for review.
 * Easiest to deal with if patch is merged before branching.
 * R-5 week
 * RMT
 * Create release branch (REL1_XX) for core
 * R-5 week
 * RMT
 * Create release branch (REL1_XX) for extensions
 * make-extension-branches script
 * R-5 week
 * RMT
 * Update MediaWiki: Branch_points, Template:MWReleases, current release pages, e.g. MediaWiki 1.23
 * R-1 week
 * RMT
 * Announce upcoming release on wikitech-l
 * See announcement template
 * R-1 week
 * RMT
 * Announce end of lifetime for legacy and LTS releases
 * R-1 week
 * RMT
 * Create release branch (REL1_XX) for core
 * R-5 week
 * RMT
 * Create release branch (REL1_XX) for extensions
 * make-extension-branches script
 * R-5 week
 * RMT
 * Update MediaWiki: Branch_points, Template:MWReleases, current release pages, e.g. MediaWiki 1.23
 * R-1 week
 * RMT
 * Announce upcoming release on wikitech-l
 * See announcement template
 * R-1 week
 * RMT
 * Announce end of lifetime for legacy and LTS releases
 * R-1 week
 * RMT
 * Update MediaWiki: Branch_points, Template:MWReleases, current release pages, e.g. MediaWiki 1.23
 * R-1 week
 * RMT
 * Announce upcoming release on wikitech-l
 * See announcement template
 * R-1 week
 * RMT
 * Announce end of lifetime for legacy and LTS releases
 * R-1 week
 * RMT
 * Announce upcoming release on wikitech-l
 * See announcement template
 * R-1 week
 * RMT
 * Announce end of lifetime for legacy and LTS releases
 * R-1 week
 * R-1 week
 * RMT
 * Announce end of lifetime for legacy and LTS releases
 * R-1 week
 * RMT
 * Announce end of lifetime for legacy and LTS releases
 * R-1 week
 * Announce end of lifetime for legacy and LTS releases
 * R-1 week
 * R-1 week
 * R-1 week
 * R-1 week
 * R-1 week




 * RMT
 * Announce upcoming end of lifetime of this is the last maintenance version
 * colspan="9"|
 * colspan="9"|
 * colspan="9"|
 * colspan="9"|

Pre release checks and announcements

 * R-1 day
 * WMF
 * Cluster has been patched for every security fix that will be made public
 * R-1 day
 * RMT
 * send pre-release announcement to mediawiki-announce
 * See announcement template
 * R-1 day
 * R-1 day
 * RMT
 * send pre-release announcement to mediawiki-announce
 * See announcement template
 * R-1 day
 * RMT
 * send pre-release announcement to mediawiki-announce
 * See announcement template
 * R-1 day
 * send pre-release announcement to mediawiki-announce
 * See announcement template
 * R-1 day
 * R-1 day
 * R-1 day
 * R-1 day


 * RMT
 * give early access to security fixes
 * add them in cc in Phabricator (cf. T518)
 * List is tbd. currently wikia, debian and gamepedia wiki
 * }

Prepare release
{| class="wikitable" !|Status !|Timeline !|Major !|Patch !|Security !|Who !|Process step !|Outcome !|Comments
 * colspan="9"|
 * colspan="9"|

Publish Release Candidates

 * RMT
 * release initial RC
 * RMT
 * release RC1
 * RMT
 * release RC2
 * RMT
 * release RC-final
 * colspan="9"|
 * RMT
 * release RC1
 * RMT
 * release RC2
 * RMT
 * release RC-final
 * colspan="9"|
 * RMT
 * release RC1
 * RMT
 * release RC2
 * RMT
 * release RC-final
 * colspan="9"|
 * RMT
 * release RC2
 * RMT
 * release RC-final
 * colspan="9"|
 * RMT
 * release RC-final
 * colspan="9"|
 * RMT
 * release RC-final
 * colspan="9"|
 * RMT
 * release RC-final
 * colspan="9"|
 * release RC-final
 * colspan="9"|
 * colspan="9"|
 * colspan="9"|
 * colspan="9"|

Fix bugs and review changes

 * RMT, Bug wrangler
 * File blocking bugs in Phabricator with “MW-1.XX-release“ project associated
 * Devs
 * Fix blocking bugs
 * Make sure all commits also include updates to RELEASE-NOTES-1.XX
 * Reviewers
 * Review all changes tagged for that release
 * Reviewers
 * Merge changes in master, submit to REL 1_XX branch
 * RMT
 * Backport security fixes from Phabricator
 * RMT
 * Upload backports to Phabricator and seek confirmation
 * }
 * Devs
 * Fix blocking bugs
 * Make sure all commits also include updates to RELEASE-NOTES-1.XX
 * Reviewers
 * Review all changes tagged for that release
 * Reviewers
 * Merge changes in master, submit to REL 1_XX branch
 * RMT
 * Backport security fixes from Phabricator
 * RMT
 * Upload backports to Phabricator and seek confirmation
 * }
 * Reviewers
 * Review all changes tagged for that release
 * Reviewers
 * Merge changes in master, submit to REL 1_XX branch
 * RMT
 * Backport security fixes from Phabricator
 * RMT
 * Upload backports to Phabricator and seek confirmation
 * }
 * Reviewers
 * Merge changes in master, submit to REL 1_XX branch
 * RMT
 * Backport security fixes from Phabricator
 * RMT
 * Upload backports to Phabricator and seek confirmation
 * }
 * RMT
 * Backport security fixes from Phabricator
 * RMT
 * Upload backports to Phabricator and seek confirmation
 * }
 * Backport security fixes from Phabricator
 * RMT
 * Upload backports to Phabricator and seek confirmation
 * }
 * RMT
 * Upload backports to Phabricator and seek confirmation
 * }
 * RMT
 * Upload backports to Phabricator and seek confirmation
 * }
 * Upload backports to Phabricator and seek confirmation
 * }
 * }
 * }

Release
N.B. it's best to have one checkout for each release branch.

{| class="wikitable" !|Status !|Timeline !|Major !|Patch !|Security !|Who !|Process step !|Outcome !|Comments
 * colspan="9"|
 * colspan="9"|

Prepare local system

 * RMT
 * Prepare security backports
 * RMT
 * Update HISTORY and CREDITS
 * With the release of a new major version, move all CHANGELOG entries that refer to the previous version to the HISTORY file.
 * RMT
 * Prepare release notes
 * Remember to remove the THIS IS NOT A RELEASE YET! text on releases, and to add it back to the tracking branch for future commits.
 * RMT
 * Update version number
 * includes/DefaultSettings.php -> $wgVersion
 * RMT
 * Prepare announcement
 * colspan="9"|
 * RMT
 * Update HISTORY and CREDITS
 * With the release of a new major version, move all CHANGELOG entries that refer to the previous version to the HISTORY file.
 * RMT
 * Prepare release notes
 * Remember to remove the THIS IS NOT A RELEASE YET! text on releases, and to add it back to the tracking branch for future commits.
 * RMT
 * Update version number
 * includes/DefaultSettings.php -> $wgVersion
 * RMT
 * Prepare announcement
 * colspan="9"|
 * RMT
 * Prepare release notes
 * Remember to remove the THIS IS NOT A RELEASE YET! text on releases, and to add it back to the tracking branch for future commits.
 * RMT
 * Update version number
 * includes/DefaultSettings.php -> $wgVersion
 * RMT
 * Prepare announcement
 * colspan="9"|
 * RMT
 * Update version number
 * includes/DefaultSettings.php -> $wgVersion
 * RMT
 * Prepare announcement
 * colspan="9"|
 * RMT
 * Prepare announcement
 * colspan="9"|
 * RMT
 * Prepare announcement
 * colspan="9"|
 * Prepare announcement
 * colspan="9"|
 * colspan="9"|
 * colspan="9"|
 * colspan="9"|

Produce tarball
git tag -sa 1.19.20 -m "Security release 1.19.20" git push --tags
 * colspan="9"|(time critical when security fix is involved)
 * RMT
 * Merge all outstanding commits to the release branch
 * Wait for commits to pass through Jenkins.
 * RMT
 * Tag versions in branches
 * RMT
 * Merge all outstanding commits to the release branch
 * Wait for commits to pass through Jenkins.
 * RMT
 * Tag versions in branches
 * Wait for commits to pass through Jenkins.
 * RMT
 * Tag versions in branches
 * RMT
 * Tag versions in branches
 * RMT
 * Tag versions in branches
 * RMT
 * Tag versions in branches


 * RMT
 * Produce tarballs using make-release
 * RMT
 * Final manual checks
 * Extract all archives.
 * Install MW locally.
 * Test patch files to make sure the apply to a freshly extracted tarball of the old version.
 * RMT
 * Upload to DL server
 * bromine:/srv/org/wikimedia/releases/mediawiki/X.XX
 * RMT
 * Send out announcement (template)
 * mediawiki-announce, wikitech-l, mediawiki-l, mediawiki-enterprise-l
 * colspan="9"|(no longer time critical from here on)
 * }
 * RMT
 * Final manual checks
 * Extract all archives.
 * Install MW locally.
 * Test patch files to make sure the apply to a freshly extracted tarball of the old version.
 * RMT
 * Upload to DL server
 * bromine:/srv/org/wikimedia/releases/mediawiki/X.XX
 * RMT
 * Send out announcement (template)
 * mediawiki-announce, wikitech-l, mediawiki-l, mediawiki-enterprise-l
 * colspan="9"|(no longer time critical from here on)
 * }
 * RMT
 * Upload to DL server
 * bromine:/srv/org/wikimedia/releases/mediawiki/X.XX
 * RMT
 * Send out announcement (template)
 * mediawiki-announce, wikitech-l, mediawiki-l, mediawiki-enterprise-l
 * colspan="9"|(no longer time critical from here on)
 * }
 * RMT
 * Send out announcement (template)
 * mediawiki-announce, wikitech-l, mediawiki-l, mediawiki-enterprise-l
 * colspan="9"|(no longer time critical from here on)
 * }
 * mediawiki-announce, wikitech-l, mediawiki-l, mediawiki-enterprise-l
 * colspan="9"|(no longer time critical from here on)
 * }
 * colspan="9"|(no longer time critical from here on)
 * }

Post release
{| class="wikitable" !|Status !|Timeline !|Major !|Patch !|Security !|Who !|Process step !|How / Where !|Comments
 * RMT
 * Make security tasks public
 * Edit tasks to change security dropdown to none, change visibility policy to public, change edit policy to all users
 * colspan="9"|
 * RMT
 * Make security tasks public
 * Edit tasks to change security dropdown to none, change visibility policy to public, change edit policy to all users
 * colspan="9"|
 * Edit tasks to change security dropdown to none, change visibility policy to public, change edit policy to all users
 * colspan="9"|
 * colspan="9"|
 * colspan="9"|

Update MediaWiki.org
Template:MediaWiki News
 * RMT
 * Announce new version
 * RMT
 * Announce new version
 * RMT
 * Announce new version
 * RMT
 * Announce new version


 * RMT
 * Update versions as appropriate
 * Module:Version
 * RMT
 * Update branches
 * Module:Version, Template:DownloadMediaWiki ("To MediaWiki x.yy users" part)
 * RMT
 * Update versions as appropriate
 * Module:Version
 * RMT
 * Update branches
 * Module:Version, Template:DownloadMediaWiki ("To MediaWiki x.yy users" part)
 * RMT
 * Update branches
 * Module:Version, Template:DownloadMediaWiki ("To MediaWiki x.yy users" part)
 * RMT
 * Update branches
 * Module:Version, Template:DownloadMediaWiki ("To MediaWiki x.yy users" part)
 * Update branches
 * Module:Version, Template:DownloadMediaWiki ("To MediaWiki x.yy users" part)


 * RMT
 * Check automatically generated content
 * Template:MWReleases, Template:MW_release_status, Template:MW_version/status
 * RMT
 * Check automatically generated content
 * Template:MWReleases, Template:MW_release_status, Template:MW_version/status
 * RMT
 * Check automatically generated content
 * Template:MWReleases, Template:MW_release_status, Template:MW_version/status
 * Template:MWReleases, Template:MW_release_status, Template:MW_version/status
 * Template:MWReleases, Template:MW_release_status, Template:MW_version/status

Remove all  from pages that are in Category:Due in v1.XX and delete that category.
 * RMT
 * Update release notes
 * Update Release notes of all affected versions
 * Need to be wikified, e.g. bug 234 becomes
 * RMT
 * Update release notes
 * Update Release notes of all affected versions
 * Need to be wikified, e.g. bug 234 becomes
 * Update release notes
 * Update Release notes of all affected versions
 * Need to be wikified, e.g. bug 234 becomes
 * RMT
 * Remove outdated future tags
 * RMT
 * Remove outdated future tags
 * RMT
 * Remove outdated future tags
 * RMT
 * Remove outdated future tags


 * RMT
 * Update versions of requirements as appropriate
 * Template:MW stable php requirement, Template:MW stable mysql requirement, Template:MW stable postgresql requirement
 * colspan="9"|
 * RMT
 * Update versions of requirements as appropriate
 * Template:MW stable php requirement, Template:MW stable mysql requirement, Template:MW stable postgresql requirement
 * colspan="9"|
 * Update versions of requirements as appropriate
 * Template:MW stable php requirement, Template:MW stable mysql requirement, Template:MW stable postgresql requirement
 * colspan="9"|
 * colspan="9"|
 * colspan="9"|
 * colspan="9"|

Update other platforms

 * RMT
 * Update versions on Wikidata
 * update wikidata:Q83
 * Update IRC
 * irc://irc.freenode.net/mediawiki
 * colspan="9"|
 * RMT
 * Update versions on Wikidata
 * update wikidata:Q83
 * Update IRC
 * irc://irc.freenode.net/mediawiki
 * colspan="9"|
 * Update IRC
 * irc://irc.freenode.net/mediawiki
 * colspan="9"|
 * Update IRC
 * irc://irc.freenode.net/mediawiki
 * colspan="9"|
 * irc://irc.freenode.net/mediawiki
 * colspan="9"|
 * colspan="9"|
 * colspan="9"|

Extension distributor



 * Update extension distributor
 * Update $wgExtDistSnapshotRefs in CommonSettings.php
 * Update relevant 'extdist-branch-' keys in WikimediaMessages.i18n.php
 * Create branches in each extensions for the new release (this should already be done)
 * Update extension distributor
 * Update $wgExtDistSnapshotRefs in CommonSettings.php
 * Update relevant 'extdist-branch-' keys in WikimediaMessages.i18n.php
 * Create branches in each extensions for the new release (this should already be done)
 * Update relevant 'extdist-branch-' keys in WikimediaMessages.i18n.php
 * Create branches in each extensions for the new release (this should already be done)


 * Process unclear
 * colspan="9"|
 * colspan="9"|

Marketing



 * RMT
 * Release a Tech Blog entry
 * https://blog.wikimedia.org/c/technology/
 * }
 * RMT
 * Release a Tech Blog entry
 * https://blog.wikimedia.org/c/technology/
 * }
 * }

Ongoing development and planning
(after the release is before the release)