CINXE.COM
Backport windows - Wikitech
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Backport windows - Wikitech</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )labswikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":true,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat": "dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"49330a15-c326-4236-832f-55d6412cac6a","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Backport_windows","wgTitle":"Backport windows","wgCurRevisionId":2245909,"wgRevisionId":2245909,"wgArticleId":12858,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Deployment"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Backport_windows","wgRelevantArticleId":12858,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikitech","wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr", "pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":10000,"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgDiscussionToolsFeaturesEnabled":{"replytool":true,"newtopictool":true,"sourcemodetoolbar":true,"topicsubscription":false,"autotopicsub":false,"visualenhancements":false,"visualenhancements_reply":false,"visualenhancements_pageframe":false},"wgDiscussionToolsFallbackEditMode":"visual","wgULSPosition":"personal","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"wgSiteNoticeId":"2.0"};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready", "user.options":"loading","ext.pygments":"ready","mediawiki.special":"ready","oojs-ui-core.styles":"ready","oojs-ui.styles.indicators":"ready","mediawiki.widgets.styles":"ready","oojs-ui-core.icons":"ready","mediawiki.htmlform.ooui.styles":"ready","ext.discussionTools.init.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","mediawiki.ui.button":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.pt":"ready","ext.dismissableSiteNotice.styles":"ready"};RLPAGEMODULES=["ext.pygments.view","mediawiki.page.media","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.site","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.discussionTools.init","ext.eventLogging", "ext.wikimediaEvents","ext.uls.interface","ext.checkUser.clientHints","ext.dismissableSiteNotice"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.discussionTools.init.styles%7Cext.dismissableSiteNotice.styles%7Cext.pygments%7Cext.uls.pt%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cmediawiki.htmlform.ooui.styles%7Cmediawiki.special%7Cmediawiki.ui.button%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Backport windows - Wikitech"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="icon" href="/static/favicon/wikitech.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikitech (en)"> <link rel="EditURI" type="application/rsd+xml" href="//wikitech.wikimedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://wikitech.wikimedia.org/wiki/Backport_windows"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"> <link rel="alternate" type="application/atom+xml" title="Wikitech Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="ext-discussiontools-replytool-enabled ext-discussiontools-newtopictool-enabled ext-discussiontools-sourcemodetoolbar-enabled skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Backport_windows rootpage-Backport_windows skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-Server-admin-log:-Prod" class="mw-list-item"><a href="/wiki/Server_Admin_Log"><span>Server admin log: Prod</span></a></li><li id="n-Admin-log:-RelEng" class="mw-list-item"><a href="/wiki/Release_Engineering/SAL"><span>Admin log: RelEng</span></a></li><li id="n-Incident-status" class="mw-list-item"><a href="/wiki/Incident_status"><span>Incident status</span></a></li><li id="n-Deployments" class="mw-list-item"><a href="/wiki/Deployments"><span>Deployments</span></a></li><li id="n-SRE-Team-Help" class="mw-list-item"><a href="/wiki/SRE/SRE_Team_requests"><span>SRE Team Help</span></a></li> </ul> </div> </div> <div id="p-Cloud_VPS_&_Toolforge" class="vector-menu mw-portlet mw-portlet-Cloud_VPS_Toolforge" > <div class="vector-menu-heading"> Cloud VPS & Toolforge </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-Cloud-VPS-portal" class="mw-list-item"><a href="/wiki/Portal:Cloud_VPS"><span>Cloud VPS portal</span></a></li><li id="n-Toolforge-portal" class="mw-list-item"><a href="/wiki/Portal:Toolforge"><span>Toolforge portal</span></a></li><li id="n-Request-VPS-project" class="mw-list-item"><a href="https://phabricator.wikimedia.org/project/view/2875/"><span>Request VPS project</span></a></li><li id="n-Admin-log:-Cloud-VPS" class="mw-list-item"><a href="/wiki/Cloud_VPS_Server_Admin_Log"><span>Admin log: Cloud VPS</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikitech.svg" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikitech" src="/static/images/mobile/copyright/wikitech-wordmark.svg" style="width: 8.75em; height: 1.6875em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikitech [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikitech" aria-label="Search Wikitech" autocapitalize="sentences" title="Search Wikitech [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-uls" class="mw-list-item active user-links-collapsible-item"><a data-mw="interface" href="#" class="uls-trigger cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>English</span></a> </li> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?utm_source=donate&utm_medium=sidebar&utm_campaign=spontaneous&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Backport+windows" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out user-links-collapsible-item" title="More options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/?utm_source=donate&utm_medium=sidebar&utm_campaign=spontaneous&uselang=en"><span>Donate</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Backport+windows" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><div id="mw-dismissablenotice-anonplace"></div><script>(function(){var node=document.getElementById("mw-dismissablenotice-anonplace");if(node){node.outerHTML="\u003Cdiv class=\"mw-dismissable-notice\"\u003E\u003Cdiv class=\"mw-dismissable-notice-close\"\u003E[\u003Ca tabindex=\"0\" role=\"button\"\u003Edismiss\u003C/a\u003E]\u003C/div\u003E\u003Cdiv class=\"mw-dismissable-notice-body\"\u003E\u003C!-- CentralNotice --\u003E\u003Cdiv id=\"localNotice\" data-nosnippet=\"\"\u003E\u003Cdiv class=\"sitenotice\" lang=\"en\" dir=\"ltr\"\u003E\u003Ctable style=\"width: 75%; background-color: var(--background-color-warning-subtle, #fdf2d5); border: var(--border-subtle, 1px solid #987027); color: var(--color-base, #202122); border-radius: 10px; padding: 5px; margin: 0 auto;\"\u003E\n\u003Ctbody\u003E\u003Ctr\u003E\n\u003Ctd style=\"width:40px; height:40px; text-align:center; vertical-align:middle; padding: 2px;\"\u003E\u003Cspan typeof=\"mw:File\"\u003E\u003Ca href=\"/wiki/File:OOjs_UI_icon_alert-warning.svg\" class=\"mw-file-description\"\u003E\u003Cimg src=\"//upload.wikimedia.org/wikipedia/commons/thumb/3/3b/OOjs_UI_icon_alert-warning.svg/30px-OOjs_UI_icon_alert-warning.svg.png\" decoding=\"async\" width=\"30\" height=\"30\" class=\"mw-file-element\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/3/3b/OOjs_UI_icon_alert-warning.svg/45px-OOjs_UI_icon_alert-warning.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/3/3b/OOjs_UI_icon_alert-warning.svg/60px-OOjs_UI_icon_alert-warning.svg.png 2x\" data-file-width=\"20\" data-file-height=\"20\" /\u003E\u003C/a\u003E\u003C/span\u003E\n\u003C/td\u003E\n\u003Ctd style=\"text-align:center; vertical-align: middle; padding: 4px; max-height: 60px;\"\u003E\u003Cb\u003EWe are migrating Wikitech to \u003Ca href=\"/wiki/Wikitech/SUL-migration\" title=\"Wikitech/SUL-migration\"\u003ESUL\u003C/a\u003E!\u003C/b\u003E\n\u003Cp\u003E\u003Cb\u003EAction may be required for your \u003Ca href=\"/wiki/Wikitech/SUL-migration#What_You_Should_Do\" title=\"Wikitech/SUL-migration\"\u003E account\u003C/a\u003E!\u003C/b\u003E\n\u003C/p\u003E\u003Cp\u003E\u003Cb\u003ETrouble logging in? Please visit \u003Ca href=\"https://phabricator.wikimedia.org/T376267\" class=\"extiw\" title=\"phab:T376267\"\u003ET376267\u003C/a\u003E\u003C/b\u003E\n\u003C/p\u003E\n\u003C/td\u003E\u003C/tr\u003E\u003C/tbody\u003E\u003C/table\u003E\u003C/div\u003E\u003C/div\u003E\u003C/div\u003E\u003C/div\u003E";}}());</script></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Beginning</div> </a> </li> <li id="toc-Guidelines" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Guidelines"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Guidelines</span> </div> </a> <ul id="toc-Guidelines-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-How_to_submit_a_patch_for_backport" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#How_to_submit_a_patch_for_backport"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>How to submit a patch for backport</span> </div> </a> <button aria-controls="toc-How_to_submit_a_patch_for_backport-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle How to submit a patch for backport subsection</span> </button> <ul id="toc-How_to_submit_a_patch_for_backport-sublist" class="vector-toc-list"> <li id="toc-Submitting_a_manual_cherry-pick" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Submitting_a_manual_cherry-pick"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Submitting a manual cherry-pick</span> </div> </a> <ul id="toc-Submitting_a_manual_cherry-pick-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Doing_the_deploy" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Doing_the_deploy"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Doing the deploy</span> </div> </a> <ul id="toc-Doing_the_deploy-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Backport_Team_members'_roles,_responsibilities,_and_tips" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Backport_Team_members'_roles,_responsibilities,_and_tips"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Backport Team members' roles, responsibilities, and tips</span> </div> </a> <button aria-controls="toc-Backport_Team_members'_roles,_responsibilities,_and_tips-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Backport Team members' roles, responsibilities, and tips subsection</span> </button> <ul id="toc-Backport_Team_members'_roles,_responsibilities,_and_tips-sublist" class="vector-toc-list"> <li id="toc-Trust" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Trust"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Trust</span> </div> </a> <ul id="toc-Trust-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Knowledge" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Knowledge"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span> <span>Knowledge</span> </div> </a> <ul id="toc-Knowledge-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Decisiveness" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Decisiveness"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.3</span> <span>Decisiveness</span> </div> </a> <ul id="toc-Decisiveness-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-New_Backport_Team_member_check-list" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#New_Backport_Team_member_check-list"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>New Backport Team member check-list</span> </div> </a> <ul id="toc-New_Backport_Team_member_check-list-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Subpages" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Subpages"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Subpages</span> </div> </a> <ul id="toc-Subpages-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Backport windows</span></h1> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Backport_windows" title="View the content page [c]" accesskey="c"><span>Page</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Backport_windows" rel="discussion" title="Discussion about the content page [t]" accesskey="t"><span>Discussion</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Backport_windows"><span>Read</span></a></li><li id="ca-viewsource" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Backport_windows&action=edit" title="This page is protected. You can view its source [e]" accesskey="e"><span>View source</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Backport_windows&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Backport_windows"><span>Read</span></a></li><li id="ca-more-viewsource" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Backport_windows&action=edit"><span>View source</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Backport_windows&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Backport_windows" title="A list of all wiki pages that link here [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Backport_windows" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Backport_windows&oldid=2245909" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Backport_windows&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Backport_windows&id=2245909&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fwikitech.wikimedia.org%2Fwiki%2FBackport_windows"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fwikitech.wikimedia.org%2Fwiki%2FBackport_windows"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Special:Book&bookcmd=book_creator&referer=Backport+windows"><span>Create a book</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Backport_windows&action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Backport_windows&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikitech</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r2241375">.mw-parser-output .tpl-navsidebar{max-width:22em;background:var(--background-color-base,#fff);color:var(--color-base,#202122);border:1px solid var(--border-color-base,#a2a9b1);float:right;clear:right;margin:.5em 0 1em 1em}.mw-parser-output .tpl-navsidebar-floatright{float:right;clear:right;margin:.5em 0 1em 1em}.mw-parser-output .tpl-navsidebar-floatleft{float:left;clear:left;margin:.5em 1em 1em 0}.mw-parser-output .tpl-navsidebar-floatnone{float:none;clear:both;margin:.5em 0}.mw-parser-output .tpl-navsidebar-topimage{margin:0 0 16px 0}.mw-parser-output .tpl-navsidebar-title{margin:8px 16px;border-bottom:3px solid var(--border-color-muted,#eaecf0);font-size:20px;text-align:center}.mw-parser-output .tpl-navsidebar-image{margin:0 0 8px}.mw-parser-output .tpl-navsidebar-content{margin:0 0 16px 0;padding:0 8px}.mw-parser-output .tpl-navsidebar-heading{margin:8px 0;font-weight:bold}.mw-parser-output .tpl-navsidebar-foot{padding:0 8px;margin:0;text-align:right;font-size:smaller}@media not (min-width:720px){.mw-parser-output .tpl-navsidebar{float:none;clear:both;margin:.5em 0;max-width:none}}</style><div role="navigation" class="navigation-not-searchable tpl-navsidebar" style=""><p class="tpl-navsidebar-title">Deployments</p><div class="tpl-navsidebar-contents"><div class="tpl-navsidebar-content"> <div class="deploycal-jump"><span class="mw-ui-button"><a href="/wiki/Deployments#!/deploycal/current" title="Deployments">Jump to current event</a></span></div> <ul><li><a href="/wiki/Deployments" title="Deployments">Deployment calendar</a> <ul><li><a href="/wiki/Deployments/Yearly_calendar" title="Deployments/Yearly calendar">Long-term calendar</a></li> <li><a href="https://www.mediawiki.org/wiki/MediaWiki_1.44/Roadmap" class="extiw" title="mw:MediaWiki 1.44/Roadmap">1.44 Roadmap</a></li> <li><a href="/wiki/Deployments/Train" title="Deployments/Train">Train overview</a></li> <li><a href="/wiki/Deployments/Archive" title="Deployments/Archive">Archive</a></li></ul></li> <li><a href="/wiki/Deployments/Blocking_tasks" title="Deployments/Blocking tasks">Blocking tasks</a> (<a class="external text" href="https://train-blockers.toolforge.org">Current task</a>)</li> <li><a href="/wiki/MediaWiki_Engineering/Guides/Monitor_production_errors" title="MediaWiki Engineering/Guides/Monitor production errors">How to monitor errors</a></li> <li><a href="/wiki/Deployments/Holding_the_train" title="Deployments/Holding the train">Holding the train</a></li> <li><a href="/wiki/Deployments/Emergencies#step-by-step" title="Deployments/Emergencies">🚨 Emergencies</a></li> <li><a href="/wiki/How_to_deploy_code" title="How to deploy code">How to deploy code</a> <ul><li><a href="/wiki/Heterogeneous_deployment" title="Heterogeneous deployment">Heterogeneous deployment</a></li> <li><a href="/wiki/Heterogeneous_deployment/Train_deploys" title="Heterogeneous deployment/Train deploys">Train deploys</a></li></ul></li> <li><a class="mw-selflink selflink">Backport windows</a> <ul><li><a href="/wiki/Backport_windows/Deployers" title="Backport windows/Deployers">How to deploy backports</a></li></ul></li> <li>Backport vs Train vs Special Window <ul><li><a href="/wiki/Deployments/Train_vs_backport" title="Deployments/Train vs backport">Train vs Backport</a></li> <li><a href="/wiki/Deployments/Inclusion_criteria" title="Deployments/Inclusion criteria">Special Windows</a></li> <li><a class="mw-selflink-fragment" href="#Guidelines">Backport windows</a></li></ul></li> <li><a href="/wiki/Deployments/Risky_change_template" title="Deployments/Risky change template">Risky change notification</a></li></ul> </div></div><p class="tpl-navsidebar-foot">[<span class="noprint plainlinks"><a class="external text" href="https://wikitech.wikimedia.org/w/index.php?title=Template:Navigation_MediaWiki_deployment&action=edit"><span title="Edit this template">edit</span></a></span>]</p></div> <p><b>Backport windows</b> are set times for Wikimedia production <a href="/wiki/Deployments" title="Deployments">deployments</a>, are done by a member(s) of the backport deploy team (see below). Despite the name, they are used for <b>configuration changes to production wikis</b> as well as <b>backports</b>. </p><p>The purpose is to provide a known window for people to get bug fixes deployed ahead of the normal cadence (currently, weekly) without having to beg people to do the deployment for them; the team is there to do the deployment part. Similarly, it is usually advantageous to make configuration changes separate from train deploys so that effects of the reconfiguration can be distinguished from regressions caused by the train; the backport deploy team provides the expertise to safely deploy configuration changes. </p><p>They were historically known as <b>SWAT deploy windows</b>. </p><p>The words MUST, CAN, MAY, etc. are to be interpreted in conformity with <a href="//tools.ietf.org/html/rfc2119" class="extiw" title="rfc:2119">RFC:2119</a>. </p> <meta property="mw:PageProp/toc"/> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Guidelines" data-mw-thread-id="h-Guidelines"><span data-mw-comment-start="" id="h-Guidelines"></span>Guidelines<span data-mw-comment-end="h-Guidelines"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Guidelines","replies":[]}}--></div> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Putting_the_prod_in_production._Production_Drive_Committee_-_NARA_-_534919.jpg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/1/16/Putting_the_prod_in_production._Production_Drive_Committee_-_NARA_-_534919.jpg/220px-Putting_the_prod_in_production._Production_Drive_Committee_-_NARA_-_534919.jpg" decoding="async" width="220" height="318" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/16/Putting_the_prod_in_production._Production_Drive_Committee_-_NARA_-_534919.jpg/330px-Putting_the_prod_in_production._Production_Drive_Committee_-_NARA_-_534919.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/16/Putting_the_prod_in_production._Production_Drive_Committee_-_NARA_-_534919.jpg/440px-Putting_the_prod_in_production._Production_Drive_Committee_-_NARA_-_534919.jpg 2x" data-file-width="2073" data-file-height="3000"/></a><figcaption></figcaption></figure> <ul><li>There will be <b>at least one</b> backport window deployer available and active during the window. <ul><li>If no backport team member is around and available to do the deploys the window will be skipped. Please reschedule your patches.</li></ul></li> <li>All those submitting patches for deployment <b>MUST</b> be in <b><span style="font-family: monospace,Courier; white-space: pre-wrap !important; word-wrap: break-word; max-width: 1200px; overflow: auto;"><a href="ircs://irc.libera.chat/wikimedia-operations" class="extiw" title="liberachat:wikimedia-operations">#wikimedia-operations</a></span> <sup class="plainlinks"><a rel="nofollow" class="external text" href="https://web.libera.chat/?#wikimedia-operations"><span style="color:green;">connect</span></a></sup></b> on libera.chat to communicate with the backport team member. <ul><li>The backport team will ping the relevant developers at the start of the window and when theirs is up; they <b>MUST</b> be available. If they are not available the patch will NOT be deployed.</li></ul></li> <li>All communication <b>MUST</b> happen in <b><span style="font-family: monospace,Courier; white-space: pre-wrap !important; word-wrap: break-word; max-width: 1200px; overflow: auto;"><a href="ircs://irc.libera.chat/wikimedia-operations" class="extiw" title="liberachat:wikimedia-operations">#wikimedia-operations</a></span> <sup class="plainlinks"><a rel="nofollow" class="external text" href="https://web.libera.chat/?#wikimedia-operations"><span style="color:green;">connect</span></a></sup></b> on libera.chat (not in separate team or area-specific channels)</li> <li><b>Allowed types of patches</b> <i>Things not fitting these criteria should instead use the standard deploy window process</i> <ul><li>For <code>mediawiki/core</code> and <code>mediawiki/extensions</code>: <ul><li>Fixes of regressions</li> <li>Backports only (In other words, everything should already be committed into master and tested on <a href="https://www.mediawiki.org/wiki/Beta_Cluster" class="extiw" title="mw:Beta Cluster">mw:Beta Cluster</a> and then "backported" to the relevant release branch)</li></ul></li> <li>For <code>operations/mediawiki-config</code> <ul><li>Config changes (including enabling/disabling features, refactoring, etc)</li> <li>Some changes may require their own <a href="/wiki/Deployments/Inclusion_criteria" title="Deployments/Inclusion criteria">Deployment Window</a>.</li></ul></li></ul></li></ul> <ul><li><b>Forbidden types of patches</b> <ul><li>Single patches that require more than one sync <ul><li>Every sync restarts PHP, so cross-file PHP dependencies are fine</li> <li>Be careful with changes for <code>extension.json</code>—it is loaded dynamically, outside the PHP restart</li></ul></li> <li>No new extensions <ul><li>Please synchronize with the <a href="/wiki/Deployments/One_week" class="mw-redirect" title="Deployments/One week">weekly train</a>.</li></ul></li> <li>Nothing that still needs prior public communication with affected wikis (this is subjective at times, and the backport team reserves the right to not deploy if they feel uncomfortable)</li></ul></li> <li>The backport team may ask questions regarding the patches to understand the implications and assess risk. The relevant developers <b>should</b> ideally be on IRC in the hour prior to the backport window.</li> <li>The backport team <b>MUST</b> be comfortable with the patch going out and <b>CAN</b> veto any proposed patch they are not comfortable with for ANY reason.</li> <li>Our windows have a <b>limit of 6 patches</b>. <ul><li>NOTE: Cherry-picking a patch to both release branches counts as 2 as they will be separate deployments.</li></ul></li></ul> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="How_to_submit_a_patch_for_backport" data-mw-thread-id="h-How_to_submit_a_patch_for_backport"><span data-mw-comment-start="" id="h-How_to_submit_a_patch_for_backport"></span>How to submit a patch for backport<span data-mw-comment-end="h-How_to_submit_a_patch_for_backport"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-How_to_submit_a_patch_for_backport","replies":["h-Submitting_a_manual_cherry-pick-How_to_submit_a_patch_for_backport"]}}--></div> <ol><li>Prepare the patch in Gerrit. <ul><li>If it is a backport to a branch: <ol><li>Commit the fix in master first, and get it reviewed and merged.</li> <li>Test that the issue is truly fixed on the <a href="https://www.mediawiki.org/wiki/Beta_Cluster" class="extiw" title="mw:Beta Cluster">mw:Beta Cluster</a> (if possible)</li> <li><a class="external text" href="https://versions.toolforge.org/">Identify what branch is rolling out</a> (the leftmost branch).</li> <li>Prepare patches in Gerrit against the current live branches (named wmf.<i>NN</i>) (or a subset if the bug is limited). You can let Gerrit create the cherry-pick, using the “Cherry pick” option under the <b>⋮</b> menu on the original patch. Enter the target branch, and leave the commit message as it is. (If that doesn't work, see <a href="#Submitting_a_manual_cherry-pick">#Submitting a manual cherry-pick</a> below.)</li></ol></li> <li>If it is a config change: <ol><li>Prepare patches against the master branch of the operations/mediawiki-config repo.</li></ol></li></ul></li> <li>Add the gerrit URL and your IRC name to <a href="/wiki/Deployments" title="Deployments">Deployments</a> calendar page in the correct <b>backport deploy</b> slot. <ul><li>You can use the <span class="plainlinks"><a class="external text" href="https://schedule-deployment.toolforge.org/"><span class="mw-ui-button" role="button">backport scheduling tool</span></a></span> to more easily edit this page.</li> <li>Alternatively, if you are manually editing the page, double check the time, that the slot says "backport", your IRC handle, and the patch number.</li></ul></li> <li>Double check that you have the <a href="/wiki/WikimediaDebug" title="WikimediaDebug">WikimediaDebug</a> extension installed. You'll need this to verify the change after its been deployed. (As of April 2024, this means you will have to use a desktop browser.)</li> <li>Be sure that the person whose name appears on the <a href="/wiki/Deployments" title="Deployments">Deployments</a> calendar page will be present on the <span style="font-family: monospace,Courier; white-space: pre-wrap !important; word-wrap: break-word; max-width: 1200px; overflow: auto;"><a href="ircs://irc.libera.chat/wikimedia-operations" class="extiw" title="liberachat:wikimedia-operations">#wikimedia-operations</a></span> <sup class="plainlinks"><a rel="nofollow" class="external text" href="https://web.libera.chat/?#wikimedia-operations"><span style="color:green;">connect</span></a></sup> IRC channel for the deployment and able to test the patch, especially if it is a different person from the author of the patch. Now is a good time to double check your IRC nick and connection. If you've done everything right, jouncebot will ping you when your backport window opens. This is a good time to ping the scheduled deployers directly.</li></ol><p> Example entry:</p><div class="mw-highlight mw-highlight-lang-wikitext mw-content-ltr" dir="ltr"><pre><span></span><span class="p">{{</span><span class="nt">ircnick</span><span class="p">|</span>legoktm<span class="p">}}</span> <span class="p">{{</span><span class="nt">deploy</span><span class="p">|</span><span class="nl">type</span><span class="o">=</span>1.28.0-wmf.8<span class="p">|</span><span class="nl">gerrit</span><span class="o">=</span>297697<span class="p">|</span><span class="nl">title</span><span class="o">=</span>Make LocalRename jobs run sequentially<span class="p">|</span><span class="nl">status</span><span class="o">=</span><span class="p">}}</span> <span class="p">{{</span><span class="nt">deploy</span><span class="p">|</span><span class="nl">type</span><span class="o">=</span>1.28.0-wmf.9<span class="p">|</span><span class="nl">gerrit</span><span class="o">=</span>297698<span class="p">|</span><span class="nl">title</span><span class="o">=</span>Make LocalRename jobs run sequentially<span class="p">|</span><span class="nl">status</span><span class="o">=</span><span class="p">}}</span> <span class="p">{{</span><span class="nt">deploy</span><span class="p">|</span><span class="nl">type</span><span class="o">=</span>config<span class="p">|</span><span class="nl">gerrit</span><span class="o">=</span>431759<span class="p">|</span><span class="nl">title</span><span class="o">=</span>Remove unused PopupsAnonsExperimentalGroupSize config variable<span class="p">|</span><span class="nl">status</span><span class="o">=</span><span class="p">}}</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Submitting_a_manual_cherry-pick" data-mw-thread-id="h-Submitting_a_manual_cherry-pick-How_to_submit_a_patch_for_backport"><span data-mw-comment-start="" id="h-Submitting_a_manual_cherry-pick-How_to_submit_a_patch_for_backport"></span>Submitting a manual cherry-pick<span data-mw-comment-end="h-Submitting_a_manual_cherry-pick-How_to_submit_a_patch_for_backport"></span></h3></div> <p>If you need to backport a chain of patches, or the Gerrit cherry-pick doesn’t work for some reason, you can do it manually: </p> <ul><li>For example, if the branch is <code>1.35.0-wmf.11</code> and the patch's Git hash is <code>ec56a606</code>, execute <code>git fetch origin wmf/1.35.0-wmf.11 && git checkout wmf/1.35.0-wmf.11 && git cherry-pick ec56a606</code>. The latter cherry-pick command can also be found in the Gerrit old UI under the download menu. E.g., <code>git fetch "https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue" refs/changes/23/559223/1 && git cherry-pick FETCH_HEAD</code>.</li> <li>Now push the patch up. Assuming the branch is <code>1.35.0-wmf.11</code>, <code>git push origin HEAD:refs/for/wmf/1.35.0-wmf.11</code>. If Git wants a password, it's your HTTP password found in the Gerrit settings.</li></ul> <p><span id="Doing_the_deploy"></span> </p> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Doing_the_deploy" data-mw-thread-id="h-Doing_the_deploy"><span data-mw-comment-start="" id="h-Doing_the_deploy"></span>Doing the deploy<span data-mw-comment-end="h-Doing_the_deploy"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Doing_the_deploy","replies":[]}}--></div> <p>Generally: </p> <ul><li>The backport team coordinates the merging and deploying of the patches. The order to deploy the patches is decided by them.</li> <li>The relevant developers should have their test cases ready to run as soon as their patches are deployed.</li></ul> <p>The process: </p> <ol><li>The deploy IRC bot (<span class="ircnick-container"><span class="ircnick" style="font-family: monospace,Courier;">jouncebot</span></span>) will announce the start of the window and ping the backport team along with anyone who has submitted a patch to deploy.</li> <li>The backport team member reviews the patches and picks the ordering.</li> <li>The backport team member identifies the patch to merge, asks if the submitter is ready to test, and merges the backport(s)</li> <li>After merge, the backport team member fetches the patch(es) to <code>deploy1002.eqiad.wmnet</code> and then runs <code>scap pull</code> on a <a href="/wiki/Debug_servers" class="mw-redirect" title="Debug servers">mwdebug host</a> (typically <code>mwdebug#002</code>)</li> <li>The submitter tests the change by using the instructions at <a href="/wiki/X-Wikimedia-Debug#Staging_changes" class="mw-redirect" title="X-Wikimedia-Debug">X-Wikimedia-Debug#Staging_changes</a> AND the backport team member checks the error logs</li> <li>If there are no errors and the fix seems to work (if testable in that manner), then the backport team member deploys the patch to the entire fleet</li> <li>The submitter tests again (without X-Wikimedia-Debug) AND the backport team member checks the logs again.</li> <li>If everything is good, the next patch is selected and the process starts again.</li></ol> <style data-mw-deduplicate="TemplateStyles:r2211903">.mw-parser-output .note{background-position:left 7px top 50%;padding:0.5em 0.5em 0.5em 40px;margin:0.5em 0;overflow:hidden;background-color:#f8f9fa;color:#333;background-repeat:no-repeat;border:1px solid #ddd}.mw-parser-output .note-inline{display:inline-block;vertical-align:middle}.mw-parser-output .note-info{background-color:#eaf3ff;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/e/ec/OOjs_UI_icon_information-progressive.svg");background-size:25px;border-color:#a3caff;padding-left:40px;min-height:25px}.mw-parser-output .note-reminder{background-color:#fff9ea;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/a/a8/OOjs_UI_icon_lightbulb-yellow.svg");background-size:25px;border-color:#fc3;min-height:25px}.mw-parser-output .note-warn{background-color:#fff9ea;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/3/3b/OOjs_UI_icon_alert-warning.svg");background-size:25px;border-color:#fc3;min-height:25px}.mw-parser-output .note-error{background-color:#fee7e6;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/b/bf/OOjs_UI_icon_notice-destructive.svg");background-size:25px;border-color:#c33;min-height:25px}@media screen{html.skin-theme-clientpref-night .mw-parser-output .note{background-color:transparent;color:inherit}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .note{background-color:transparent;color:inherit}}</style><div role="note" class="note note-info">For a more detailed outline of the steps above refer to the <a href="/wiki/Backport_windows/Deployers" title="Backport windows/Deployers">Backport deployers'</a>-specific documentation.</div> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Backport_Team_members'_roles,_responsibilities,_and_tips" data-mw-thread-id="h-Backport_Team_members'_roles,_responsibilities,_and_tips"><span id="Backport_Team_members.27_roles.2C_responsibilities.2C_and_tips"></span><span data-mw-comment-start="" id="h-Backport_Team_members'_roles,_responsibilities,_and_tips"></span>Backport Team members' roles, responsibilities, and tips<span data-mw-comment-end="h-Backport_Team_members'_roles,_responsibilities,_and_tips"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Backport_Team_members'_roles,_responsibilities,_and_tips","replies":["h-Trust-Backport_Team_members'_roles,_responsibilities,_and_tips","h-Knowledge-Backport_Team_members'_roles,_responsibilities,_and_tips","h-Decisiveness-Backport_Team_members'_roles,_responsibilities,_and_tips"]}}--></div> <div class="mw-heading mw-heading3"><h3 id="Trust" data-mw-thread-id="h-Trust-Backport_Team_members'_roles,_responsibilities,_and_tips"><span data-mw-comment-start="" id="h-Trust-Backport_Team_members'_roles,_responsibilities,_and_tips"></span>Trust<span data-mw-comment-end="h-Trust-Backport_Team_members'_roles,_responsibilities,_and_tips"></span></h3></div> <ul><li>Being a member of the backport team imparts a large amount of trust on the person. In some ways more trust that simply access to deploying on the Wikimedia cluster as others are encouraged to ask you to deploy things on their behalf and you must be willing to say "No" when you are uncomfortable. Making mistakes is to be human, but not learning from them will cause backport deployers to lose their deployment access.</li></ul> <div class="mw-heading mw-heading3"><h3 id="Knowledge" data-mw-thread-id="h-Knowledge-Backport_Team_members'_roles,_responsibilities,_and_tips"><span data-mw-comment-start="" id="h-Knowledge-Backport_Team_members'_roles,_responsibilities,_and_tips"></span>Knowledge<span data-mw-comment-end="h-Knowledge-Backport_Team_members'_roles,_responsibilities,_and_tips"></span></h3></div> <ul><li>Backport deployers need not be experts in all parts of our infrastructure, but they must be comfortable with assessing the general risk of a given patch. If needed, they should ask probing questions to the developer submitting the patch to learn more. <ul><li>Experience with MediaWiki and MediaWiki config changes a plus as that is the vast majority of changes that come through the backport process.</li></ul></li> <li>Some unintuitive situations include: <ul><li>a "simple" config change causing a load spike in a dependent system that the deployer or developer is not familiar with</li> <li>a "simple" config change being against "the community's", the Wikimedia Foundation's, or both's desires <ul><li>controversial changes can easily be skipped and referred to the WMF Release Manager for next steps, there is no need to rush these</li></ul></li></ul></li> <li>If a backport deployer is uncomfortable with a certain area of the code-base they are free to skip that backport at their own discretion (or have another backport deployer review and/or deploy it).</li></ul> <div class="mw-heading mw-heading3"><h3 id="Decisiveness" data-mw-thread-id="h-Decisiveness-Backport_Team_members'_roles,_responsibilities,_and_tips"><span data-mw-comment-start="" id="h-Decisiveness-Backport_Team_members'_roles,_responsibilities,_and_tips"></span>Decisiveness<span data-mw-comment-end="h-Decisiveness-Backport_Team_members'_roles,_responsibilities,_and_tips"></span></h3></div> <ul><li>Backport deployers should not feel obligated to help a developer debug a situation, especially if there is a user-facing issue or outage.</li> <li>When in doubt: <b>Revert and ask questions later</b></li></ul> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="New_Backport_Team_member_check-list" data-mw-thread-id="h-New_Backport_Team_member_check-list"><span data-mw-comment-start="" id="h-New_Backport_Team_member_check-list"></span>New Backport Team member check-list<span data-mw-comment-end="h-New_Backport_Team_member_check-list"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-New_Backport_Team_member_check-list","replies":[]}}--></div> <ul><li>Read and be comfortable with the above roles, responsibilities and tips</li> <li>Shell and deploy access in production, see <ul><li><a href="/wiki/Requesting_shell_access" class="mw-redirect" title="Requesting shell access">Requesting shell access</a> (Note: This requires signing the <a href="/wiki/Volunteer_NDA" title="Volunteer NDA">Volunteer NDA</a> or being a WMF staff member/contractor)</li> <li>See <i>e.g.</i>: <a href="https://phabricator.wikimedia.org/T104546" class="extiw" title="phabricator:T104546">task T104546</a></li></ul></li> <li>Access to merge changes in wmf deploy branches by being added to the <a href="https://gerrit.wikimedia.org/r/#/admin/groups/21,members" class="extiw" title="gerrit:">wmf-deployments</a> gerrit group <ul><li>Ask any existing wmf-deployments group member to do this.</li></ul></li> <li>Join (and read) the <a href="https://lists.wikimedia.org/postorius/lists/ops.lists.wikimedia.org/" class="extiw" title="mail:ops">operations mailing list</a> (<code>ops@lists.wikimedia.org</code>) <ul><li>This is because announcements that could impact how and/or when to deploy things are primarily sent there.</li></ul></li> <li>Read the docs: <ul><li>The short backport-specific version <a class="mw-selflink-fragment" href="#Doing_the_deploy">above</a>,</li> <li><a href="/wiki/Backport_windows/Deployers" title="Backport windows/Deployers">The longer backport specific version</a>, and</li> <li>For when you might need it, the longer <a href="/wiki/How_to_deploy_code" title="How to deploy code">How to deploy code</a>.</li></ul></li></ul> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Subpages" data-mw-thread-id="h-Subpages"><span data-mw-comment-start="" id="h-Subpages"></span>Subpages<span data-mw-comment-end="h-Subpages"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Subpages","replies":[]}}--></div> <ul class="mw-prefixindex-list"><li><a href="/wiki/Backport_windows/Deployers" title="Backport windows/Deployers">Deployers</a></li> <li><a href="/wiki/Backport_windows/Deployers/Script" title="Backport windows/Deployers/Script">Deployers/Script</a></li> </ul> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐mzm7s Cached time: 20241123201111 Cache expiry: 142 Reduced expiry: true Complications: [show‐toc] DiscussionTools time usage: 0.014 seconds CPU time usage: 0.095 seconds Real time usage: 0.121 seconds Preprocessor visited node count: 339/1000000 Post‐expand include size: 7243/2097152 bytes Template argument size: 2868/2097152 bytes Highest expansion depth: 7/100 Expensive parser function count: 2/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 4687/5000000 bytes Lua time usage: 0.005/10.000 seconds Lua memory usage: 513524/52428800 bytes --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 77.809 1 -total 27.15% 21.128 1 Template:Clickable_button_2 26.88% 20.914 1 Template:Navigation_MediaWiki_deployment 24.40% 18.985 1 Template:Navigation_sidebar 17.68% 13.757 1 Template:Note 9.87% 7.681 1 Special:PrefixIndex/Backport_windows/ 4.40% 3.424 3 Template:Irc 4.22% 3.281 1 Template:Phabricator 4.11% 3.199 1 Template:Anchor 3.43% 2.666 1 Template:Ircnick --> <!-- Saved in parser cache with key labswiki:pcache:idhash:12858-0!canonical and timestamp 20241123201111 and revision id 2245909. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://wikitech.wikimedia.org/w/index.php?title=Backport_windows&oldid=2245909">https://wikitech.wikimedia.org/w/index.php?title=Backport_windows&oldid=2245909</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Category</a>: <ul><li><a href="/wiki/Category:Deployment" title="Category:Deployment">Deployment</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 20 November 2024, at 09:33.</li> <li id="footer-info-copyright">Text is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-ShareAlike License</a>; additional terms may apply. See <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> for details.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Main_Page">About Wikitech</a></li> <li id="footer-places-disclaimers"><a href="https://foundation.wikimedia.org/wiki/General_disclaimer">Disclaimers</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/wikitech.wikimedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//wikitech.wikimedia.org/w/index.php?title=Backport_windows&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.log.warn("This page is using the deprecated ResourceLoader module \"mediawiki.ui.button\".\n[1.41] Please use Codex. See migration guidelines: https://www.mediawiki.org/wiki/Codex/Migrating_from_MediaWiki_UI");mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-mzm7s","wgBackendResponseTime":244,"wgDiscussionToolsPageThreads":[{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Guidelines","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-How_to_submit_a_patch_for_backport","replies":[{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Submitting_a_manual_cherry-pick-How_to_submit_a_patch_for_backport","replies":[]}]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Doing_the_deploy","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Backport_Team_members'_roles,_responsibilities,_and_tips","replies":[{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Trust-Backport_Team_members'_roles,_responsibilities,_and_tips","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Knowledge-Backport_Team_members'_roles,_responsibilities,_and_tips","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Decisiveness-Backport_Team_members'_roles,_responsibilities,_and_tips","replies":[]}]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-New_Backport_Team_member_check-list","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Subpages","replies":[]}],"wgPageParseReport":{"discussiontools":{"limitreport-timeusage":"0.014"},"limitreport":{"cputime":"0.095","walltime":"0.121","ppvisitednodes":{"value":339,"limit":1000000},"postexpandincludesize":{"value":7243,"limit":2097152},"templateargumentsize":{"value":2868,"limit":2097152},"expansiondepth":{"value":7,"limit":100},"expensivefunctioncount":{"value":2,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":4687,"limit":5000000},"timingprofile":["100.00% 77.809 1 -total"," 27.15% 21.128 1 Template:Clickable_button_2"," 26.88% 20.914 1 Template:Navigation_MediaWiki_deployment"," 24.40% 18.985 1 Template:Navigation_sidebar"," 17.68% 13.757 1 Template:Note"," 9.87% 7.681 1 Special:PrefixIndex/Backport_windows/"," 4.40% 3.424 3 Template:Irc"," 4.22% 3.281 1 Template:Phabricator"," 4.11% 3.199 1 Template:Anchor"," 3.43% 2.666 1 Template:Ircnick"]},"scribunto":{"limitreport-timeusage":{"value":"0.005","limit":"10.000"},"limitreport-memusage":{"value":513524,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-mzm7s","timestamp":"20241123201111","ttl":142,"transientcontent":true}}});});</script> </body> </html>