WikiReleaseTeam/Release process

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

Decision
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 neccessary
 * 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 neccessary
 * Decision
 * Are there any merged commits since the last release? This will be automated
 * R-1 week
 * RMT
 * Check if release is neccessary
 * Decision
 * Are there any merged commits since the last release? This will be automated
 * RMT
 * Check if release is neccessary
 * 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


 * RMT
 * Check if there are any security fixes
 * Decision
 * Check in bugzilla and ask Security team (Chris Steipp)
 * colspan="9"|
 * Decision
 * Check in bugzilla and ask Security team (Chris Steipp)
 * colspan="9"|
 * colspan="9"|

Setup and announcements

 * R-6 week
 * RMT, Bug wrangler
 * Create version in bugzilla
 * one week prior to branching
 * R-6 week
 * RMT
 * Announce creation of release branch on wikitech-l
 * one week prior to 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 bugzilla
 * 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 Bugzilla under “MediaWiki 1.XX.0 milestone
 * 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 bugzilla
 * RMT
 * Upload backports to bugzilla 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 bugzilla
 * RMT
 * Upload backports to bugzilla 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 bugzilla
 * RMT
 * Upload backports to bugzilla and seek confirmation
 * }
 * Reviewers
 * Merge changes in master, submit to REL 1_XX branch
 * RMT
 * Backport security fixes from bugzilla
 * RMT
 * Upload backports to bugzilla and seek confirmation
 * }
 * RMT
 * Backport security fixes from bugzilla
 * RMT
 * Upload backports to bugzilla and seek confirmation
 * }
 * Backport security fixes from bugzilla
 * RMT
 * Upload backports to bugzilla and seek confirmation
 * }
 * RMT
 * Upload backports to bugzilla and seek confirmation
 * }
 * RMT
 * Upload backports to bugzilla and seek confirmation
 * }
 * Upload backports to bugzilla 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
 * Reset local branches
 * git remote update and git reset --hard origin/master rsp. branch
 * RMT
 * Prepare security backports
 * RMT
 * Update HISTORY and CREDITS
 * RMT
 * Prepare release notes
 * RMT
 * Update version number
 * includes/DefaultSettings.php -> $wgVersion
 * RMT
 * Prepare announcement
 * RMT
 * "Load" local git master and alpha branch
 * RMT
 * "Load" local git release branches
 * Check for vulnerabilities
 * run rg-vuln-check
 * colspan="9"|
 * RMT
 * Update HISTORY and CREDITS
 * RMT
 * Prepare release notes
 * RMT
 * Update version number
 * includes/DefaultSettings.php -> $wgVersion
 * RMT
 * Prepare announcement
 * RMT
 * "Load" local git master and alpha branch
 * RMT
 * "Load" local git release branches
 * Check for vulnerabilities
 * run rg-vuln-check
 * colspan="9"|
 * Prepare release notes
 * RMT
 * Update version number
 * includes/DefaultSettings.php -> $wgVersion
 * RMT
 * Prepare announcement
 * RMT
 * "Load" local git master and alpha branch
 * RMT
 * "Load" local git release branches
 * Check for vulnerabilities
 * run rg-vuln-check
 * colspan="9"|
 * RMT
 * Prepare announcement
 * RMT
 * "Load" local git master and alpha branch
 * RMT
 * "Load" local git release branches
 * Check for vulnerabilities
 * run rg-vuln-check
 * colspan="9"|
 * RMT
 * "Load" local git master and alpha branch
 * RMT
 * "Load" local git release branches
 * Check for vulnerabilities
 * run rg-vuln-check
 * colspan="9"|
 * RMT
 * "Load" local git master and alpha branch
 * RMT
 * "Load" local git release branches
 * Check for vulnerabilities
 * run rg-vuln-check
 * colspan="9"|
 * RMT
 * "Load" local git release branches
 * Check for vulnerabilities
 * run rg-vuln-check
 * colspan="9"|
 * Check for vulnerabilities
 * run rg-vuln-check
 * colspan="9"|
 * Check for vulnerabilities
 * run rg-vuln-check
 * colspan="9"|
 * Check for vulnerabilities
 * run rg-vuln-check
 * colspan="9"|
 * Check for vulnerabilities
 * run rg-vuln-check
 * colspan="9"|
 * colspan="9"|
 * colspan="9"|

Produce tarball
git tag -a 1.19.20 -m "Security release 1.19.20" git push --tags
 * colspan="9"|(time critical when security fix is involved)
 * RMT
 * Push all release branches to gerrit
 * RMT
 * Merge all commits
 * Security fixes can be self-merged if they have been reviewed in bugzilla before. For RELEASE-NOTES-X.XX, get another RMT member to merge. Check if all blocking tests pass. If test doesn't pass for unclear reason, write "recheck" as a comment in gerrit.
 * RMT
 * Pull merged commits
 * Wait for commits to pass through Jenkins.
 * RMT
 * Tag versions in branches
 * RMT
 * Merge all commits
 * Security fixes can be self-merged if they have been reviewed in bugzilla before. For RELEASE-NOTES-X.XX, get another RMT member to merge. Check if all blocking tests pass. If test doesn't pass for unclear reason, write "recheck" as a comment in gerrit.
 * RMT
 * Pull merged commits
 * Wait for commits to pass through Jenkins.
 * RMT
 * Tag versions in branches
 * Merge all commits
 * Security fixes can be self-merged if they have been reviewed in bugzilla before. For RELEASE-NOTES-X.XX, get another RMT member to merge. Check if all blocking tests pass. If test doesn't pass for unclear reason, write "recheck" as a comment in gerrit.
 * RMT
 * Pull merged commits
 * Wait for commits to pass through Jenkins.
 * RMT
 * Tag versions in branches
 * RMT
 * Pull merged commits
 * 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

When Jenkins sees the tags, it runs make-release and creates tarballs and other downloads (e.g. patches). https://integration.wikimedia.org/ci/view/MediaWiki/job/mediawiki-core-release/
 * RMT
 * Watch Jenkins
 * RMT
 * Watch Jenkins
 * RMT
 * Watch Jenkins
 * RMT
 * Watch Jenkins

Tarball script should be started for each tag


 * RMT
 * Download tarballs and patch files
 * 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.
 * Download tarballs and patch files
 * 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
 * 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.
 * Extract all archives.
 * Install MW locally.
 * Test patch files to make sure the apply to a freshly extracted tarball of the old version.
 * Install MW locally.
 * Test patch files to make sure the apply to a freshly extracted tarball of the old version.


 * RMT
 * Sign tarballs and patch files
 * for i in *.gz; do gpg --detach-sign $i; done
 * RMT
 * Upload to DL server
 * caesium:/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
 * caesium:/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)
 * }
 * caesium:/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)
 * }
 * 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 bugs public
 * Change product from security to other appropriate product
 * colspan="9"|
 * RMT
 * Make security bugs public
 * Change product from security to other appropriate product
 * colspan="9"|
 * Change product from security to other appropriate product
 * 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

Template:MW legacy release git, Template:MW legacy branch number
 * RMT
 * Update current version
 * Template:MW stable release number, Template:MW stable release date, Template:MW stable release git
 * RMT
 * Update legacy version
 * Template:MW legacy release number, Template:MW legacy release date
 * RMT
 * Update LTS version
 * Template:MW legacy lts release number, Template:MW legacy lts release date
 * RMT
 * Update branches
 * Template:MW stable branch number, Template:MW stable branch git,
 * RMT
 * Update legacy version
 * Template:MW legacy release number, Template:MW legacy release date
 * RMT
 * Update LTS version
 * Template:MW legacy lts release number, Template:MW legacy lts release date
 * RMT
 * Update branches
 * Template:MW stable branch number, Template:MW stable branch git,
 * RMT
 * Update LTS version
 * Template:MW legacy lts release number, Template:MW legacy lts release date
 * RMT
 * Update branches
 * Template:MW stable branch number, Template:MW stable branch git,
 * RMT
 * Update LTS version
 * Template:MW legacy lts release number, Template:MW legacy lts release date
 * RMT
 * Update branches
 * Template:MW stable branch number, Template:MW stable branch git,
 * RMT
 * Update branches
 * Template:MW stable branch number, Template:MW stable branch git,
 * RMT
 * Update branches
 * Template:MW stable branch number, Template:MW stable branch git,
 * Template:MW stable branch number, Template:MW stable branch git,


 * RMT
 * Check automatically generated content
 * Template:MWReleases, Template:MW release status
 * RMT
 * Check automatically generated content
 * Template:MWReleases, Template:MW release status
 * RMT
 * Check automatically generated content
 * Template:MWReleases, Template:MW release status
 * Template:MWReleases, Template:MW release status
 * Template:MWReleases, Template:MW release status

Remove all  from pages that are in Category:Due in v1.XX and delete that category.
 * RMT
 * Update security release date
 * Template:MW security release date
 * RMT
 * Update release notes
 * Update Release notes of all affected versions
 * Need to be wikified, e.g. bug 234 becomes
 * RMT
 * Update security release date
 * Template:MW security release date
 * 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


 * colspan="9"|
 * colspan="9"|
 * colspan="9"|

Update other platforms

 * RMT
 * Update versions on Wikidata
 * update wikidata:Q83
 * Bug wrangler
 * Add versions to bugzilla
 * https://bugzilla.wikimedia.org/editversions.cgi?action=add&product=MediaWiki
 * Tim
 * Update wikimatrix
 * http://www.wikimatrix.org/show/MediaWiki
 * Tim has to do this
 * Update IRC
 * irc://irc.freenode.net/mediawiki
 * colspan="9"|
 * Bug wrangler
 * Add versions to bugzilla
 * https://bugzilla.wikimedia.org/editversions.cgi?action=add&product=MediaWiki
 * Tim
 * Update wikimatrix
 * http://www.wikimatrix.org/show/MediaWiki
 * Tim has to do this
 * Update IRC
 * irc://irc.freenode.net/mediawiki
 * colspan="9"|
 * Tim
 * Update wikimatrix
 * http://www.wikimatrix.org/show/MediaWiki
 * Tim has to do this
 * 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"|
 * Update IRC
 * irc://irc.freenode.net/mediawiki
 * colspan="9"|
 * 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)


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