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 for core
 * R-5 week
 * RMT
 * Create release branch 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 for core
 * R-5 week
 * RMT
 * Create release branch 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




 * Announce upcoming end of lifetime of this is the last maintenance version
 * colspan="9"|
 * 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-l
 * See announcement template
 * R-1 day
 * R-1 day
 * RMT
 * send pre-release announcement to mediawiki-announce-l
 * See announcement template
 * R-1 day
 * RMT
 * send pre-release announcement to mediawiki-announce-l
 * See announcement template
 * R-1 day
 * send pre-release announcement to mediawiki-announce-l
 * 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 vor vulnerabilities
 * run rg-vuln-check
 * Shouldn't this be done before?
 * 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 vor vulnerabilities
 * run rg-vuln-check
 * Shouldn't this be done before?
 * colspan="9"|
 * 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 vor vulnerabilities
 * run rg-vuln-check
 * Shouldn't this be done before?
 * colspan="9"|
 * RMT
 * Prepare announcement
 * RMT
 * "Load" local git master and alpha branch
 * RMT
 * "Load" local git release branches
 * Check vor vulnerabilities
 * run rg-vuln-check
 * Shouldn't this be done before?
 * colspan="9"|
 * RMT
 * "Load" local git master and alpha branch
 * RMT
 * "Load" local git release branches
 * Check vor vulnerabilities
 * run rg-vuln-check
 * Shouldn't this be done before?
 * colspan="9"|
 * RMT
 * "Load" local git release branches
 * Check vor vulnerabilities
 * run rg-vuln-check
 * Shouldn't this be done before?
 * colspan="9"|
 * RMT
 * "Load" local git release branches
 * Check vor vulnerabilities
 * run rg-vuln-check
 * Shouldn't this be done before?
 * colspan="9"|
 * Check vor vulnerabilities
 * run rg-vuln-check
 * Shouldn't this be done before?
 * colspan="9"|
 * Check vor vulnerabilities
 * run rg-vuln-check
 * Shouldn't this be done before?
 * colspan="9"|
 * colspan="9"|
 * colspan="9"|

Produce tarball
(time critical when security fix is involved)

git tag -a 1.19.20 -m "Security release 1.19.20" git push --tags
 * 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, get s.o. to merge. Check if all blocking tests pass. If test doen'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, get s.o. to merge. Check if all blocking tests pass. If test doen'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
 * Security fixes can be self-merged if they have been reviewed in bugzilla before. For Release notes, get s.o. to merge. Check if all blocking tests pass. If test doen'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
 * RMT
 * Send out announcement (template)
 * mediawiki-announce-l, wikitech-l, mediawiki-l, mediawiki-enterprise-l
 * colspan="9"|(no longer time critical from here on)
 * }
 * RMT
 * Upload to DL server
 * RMT
 * Send out announcement (template)
 * mediawiki-announce-l, wikitech-l, mediawiki-l, mediawiki-enterprise-l
 * colspan="9"|(no longer time critical from here on)
 * }
 * Upload to DL server
 * RMT
 * Send out announcement (template)
 * mediawiki-announce-l, wikitech-l, mediawiki-l, mediawiki-enterprise-l
 * colspan="9"|(no longer time critical from here on)
 * }
 * RMT
 * Send out announcement (template)
 * mediawiki-announce-l, wikitech-l, mediawiki-l, mediawiki-enterprise-l
 * colspan="9"|(no longer time critical from here on)
 * }
 * mediawiki-announce-l, 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 svn, 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 svn,
 * 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 svn,
 * 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 svn,
 * 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 svn,
 * RMT
 * Update branches
 * Template:MW stable branch number, Template:MW stable branch svn,
 * RMT
 * Update branches
 * Template:MW stable branch number, Template:MW stable branch svn,
 * Template:MW stable branch number, Template:MW stable branch svn,


 * 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


 * 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.
 * 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.
 * RMT
 * Update release notes
 * Update Release notes of all affected versions
 * Need to be wikified, e.g.
 * Update release notes
 * Update Release notes of all affected versions
 * Need to be wikified, e.g.
 * Need to be wikified, e.g.

bug 234 becomes Remove all  from pages that are in Category:Due in v1.23.5 and delete that category.
 * 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 (only if the branch doesn't exist already)
 * 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 (only if the branch doesn't exist already)
 * Update relevant 'extdist-branch-' keys in WikimediaMessages.i18n.php
 * Create branches in each extensions for the new release (only if the branch doesn't exist already)


 * 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