CINXE.COM

Talk:Stable interface policy - MediaWiki

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-disabled 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-not-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Talk:Stable interface policy - MediaWiki</title> <script>(function(){var className="client-js vector-feature-language-in-header-disabled 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-not-available";var cookie=document.cookie.match(/(?:^|; )mediawikiwikimwclientpreferences=([^;]+)/);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":"ca524629-32c7-4af9-8972-618aebf6e52d","wgCanonicalNamespace":"Talk","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":1,"wgPageName":"Talk:Stable_interface_policy","wgTitle":"Stable interface policy","wgCurRevisionId":3451465,"wgRevisionId":0,"wgArticleId":990238,"wgIsArticle":false,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"flow-board","wgRelevantPageName":"Talk:Stable_interface_policy","wgRelevantArticleId":990238,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"mediawiki","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":1,"wgFlowData":{"title":"Talk:Stable interface policy","categories":[],"specialCategoryLink":"/wiki/Special:Categories","workflow":"v7uq1wrt12w9ygjd","blocks":{"header":{"type":"header","editToken":null,"revision":{"actions":{"edit":{"url":"//www.mediawiki.org/w/index.php?title=Talk:Stable_interface_policy\u0026action=edit-header","title":"Edit description","text":"Edit description"}},"links":[]},"copyrightMessage":"","submitted":[],"errors":[],"title":"Talk:Stable interface policy","block-action-template":"","editFont":"monospace"},"topiclist":{"submitted":{"action":"view"},"errors":[],"sortby":"updated","roots":["yf7yr7tz4ydt87hv","xnhwqmzsfq6aouno","xasmxgagzbf0mtjj","x4bh4nf3pe2ho5jj","x34wraaili56q6xy","wie8zpaqfzrvs6jd","wat4h7ei3oggv8r5", "w80nioabt7zac76z","wa46yy9k39w4qodc","w80n8ilmvc2k57bp"],"posts":{"yf7yr7tz4ydt87hv":["yf7yr7tz50cuc9gz"],"yf7yr7tz52bvgbg3":["yf7yr7tz52bvgbg3"],"yf84vf1fuu88ui58":["yf84vf1fuu88ui58"],"xasmxgagzbf0mtjj":["xasmxgagzde1qvin"],"xasmxgagzfd2uxhr":["xasmxgagzfd2uxhr"],"xau0s00uzmueg0rm":["xau0s00uzmueg0rm"],"x34wraaili56q6xy":["x34wraailk47u8x2"],"x34wraailm38yaw6":["x34wraailm38yaw6"],"x38na94r252jwen0":["x38na94r252jwen0"],"x3cc9mbj1epiozqo":["x3cc9mbj1epiozqo"],"wie8zpaqfzrvs6jd":["wie8zpaqg1qww8ih"],"wie8zpaqg3py0ahl":["wie8zpaqg3py0ahl"],"w80nioabt7zac76z":["w80nioabt9ybg963"],"w80nioabtbxckb57":["w80nioabtbxckb57"],"wbu10e1fkm4n0qa0":["wbu10e1fkm4n0qa0"],"wa46yy9k39w4qodc":["wbu08q0x3andvp01"],"wa46yy9k3du6ysbk":["wa470geawubjamu4"],"wa48x4dwfjlqr009":["wa48x4dwfjlqr009"],"wafpa22iqknuu49l":["wafpa22iqknuu49l"],"wagwjsqxncy50y9a":["wagwjsqxncy50y9a"],"wam4xbvr58htkj61":["wam4xbvr58htkj61"],"wanshxcm0ulxfan7":["wanshxcm0ulxfan7"],"waocjubkf7jq8h6c":["waocjubkf7jq8h6c"], "wbu08f77j5ggekpu":["wbu08f77j5ggekpu"],"w80n8ilmvc2k57bp":["w80n8ilmve1l99at"],"w80n8ilmvg0mdb9x":["w80n8ilmvg0mdb9x"],"w80rfbcsx6n3a14w":["w80rhmctb3rzjzlz"],"w89rsz5zjhce9qv6":["w89rsz5zjhce9qv6"],"w8bj4d6v283ktpql":["w8bj4d6v283ktpql"],"w8bka8fz0gzk5cep":["w8bka8fz0gzk5cep"],"w8bxo3ob8gnlhals":["w8bxo3ob8gnlhals"],"w8d4ehv59oeby9tz":["w8d4fece3yocqh79"],"w8doxjxi3xecsfym":["w8doxjxi3xecsfym"],"w8dvkd5u46morbm7":["w8dvkd5u46morbm7"],"w8ien826rcztxnrd":["w8ien826rcztxnrd"],"wa44rfbte54rwi6h":["wa44rfbte54rwi6h"],"wat4h7ei3oggv8r5":["wie7ldpi4k9v7ib1"],"wat4h7ei3sej3cpd":["wat4h7ei3sej3cpd"],"wat4rxjcpq34owui":["wat4rxjcpq34owui"],"watelsejyg11ijkz":["watelsejyg11ijkz"],"wau91ueripslcpgw":["wau91ueripslcpgw"],"wauz98as9p4y9b9c":["wauz98as9p4y9b9c"],"wbu0nxco1fy01e1m":["wbu0nxco1fy01e1m"],"x4bh4nf3pe2ho5jj":["x4bh4nf3pg1is7in"],"x4bh4nf3pi0jw9hr":["x4bh4nf3pi0jw9hr"],"x4c8qhpjsq72vb0t":["x4c8qhpjsq72vb0t"],"x4dt6tdt4tl80sbx":["x4dt6tdt4tl80sbx"],"x4dt90rx6uf8x3bc":["x4dt90rx6uf8x3bc"], "x4f9ow90kibydfdo":["x4fyzgvkmljw167e"],"x4fbmnxp8dpfq99w":["x4fbmnxp8dpfq99w"],"x4fyz61ual73unwv":["x4fz3vnu9lz58nte"],"x4hxius37f6g8o4q":["x4hxius37f6g8o4q"],"x4ko1prigqnrrrx8":["x4ko2unv5ynmevne"],"xnhwqmzsfq6aouno":["xnhwqmzsfs5bswms"],"xnhwqmzsfu4cwylw":["xnhwqmzsfu4cwylw"],"xniinbe057yw6q3l":["xniinbe057yw6q3l"]},"revisions":{"yf7yr7tz50cuc9gz":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"yf7yr7tz4ydt87hv","articleTitle":"Topic:Yf7yr7tz4ydt87hv","revisionId":"yf7yr7tz50cuc9gz","timestamp":"20241030174844","changeType":"new-post","dateFormats":[],"properties":{"topic-of-post":{},"topic-of-post-text-from-html":{}},"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Yf7yr7tz4ydt87hv", "title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026topic_showPostId=yf7yr7tz4ydt87hv#flow-post-yf7yr7tz4ydt87hv","title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026topic_revId=yf7yr7tz50cuc9gz\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=reply\u0026topic_postId=yf7yr7tz4ydt87hv#flow-post-yf7yr7tz4ydt87hv-form-content","title":"Reply","text":"Reply"},"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"44"},"author":{"name":"198.27.180.35","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/198.27.180.35","title":"Contributions/198.27.180.35","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:198.27.180.35","title":"198.27.180.35","exists":false,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:198.27.180.35","title":"User talk:198.27.180.35","exists":false,"_BC_bools":["exists"]}},"id":0},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"Hard deprecation, release notes requirements","format":"topic-title-html","plaintext":"Hard deprecation, release notes requirements"},"watchable":false,"replyToId":null,"postId": "yf7yr7tz4ydt87hv","isMaxThreadingDepth":false,"creator":{"name":"198.27.180.35","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/198.27.180.35","title":"Contributions/198.27.180.35","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:198.27.180.35","title":"198.27.180.35","exists":false,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:198.27.180.35","title":"User talk:198.27.180.35","exists":false,"_BC_bools":["exists"]}},"id":0},"isNewPage":false,"replies":["yf7yr7tz52bvgbg3","yf84vf1fuu88ui58"],"reply_count":2,"last_updated_readable":"19:38, 30 October 2024","last_updated":1730317114000},"yf7yr7tz52bvgbg3":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"yf7yr7tz4ydt87hv","articleTitle":"Topic:Yf7yr7tz4ydt87hv","revisionId":"yf7yr7tz52bvgbg3","timestamp":"20241030174844","changeType":"reply","dateFormats":[], "properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Yf7yr7tz4ydt87hv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026topic_showPostId=yf7yr7tz52bvgbg3#flow-post-yf7yr7tz52bvgbg3","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026topic_postId=yf7yr7tz52bvgbg3\u0026topic_revId=yf7yr7tz52bvgbg3\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{ "reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=reply\u0026topic_postId=yf7yr7tz52bvgbg3#flow-post-yf7yr7tz52bvgbg3","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"527"},"author":{"name":"198.27.180.35","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/198.27.180.35","title":"Contributions/198.27.180.35","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:198.27.180.35","title":"198.27.180.35","exists":false,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:198.27.180.35","title":"User talk:198.27.180.35","exists":false,"_BC_bools":["exists"]}},"id":0},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked": false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" id=\"mwAQ\"\u003E\u003Cp id=\"mwAg\"\u003EFor soft deprecation we say:\u003C/p\u003E\n\n\u003Cp id=\"mwAw\"\u003E\"he deprecation MUST be mentioned in the relevant RELEASE-NOTES\"\u003C/p\u003E\n\n\u003Cp id=\"mwBA\"\u003EThere is no requirement for hard deprecation but \u003Cspan about=\"#mwt1\" typeof=\"mw:Transclusion\" data-mw=\"{\u0026quot;parts\u0026quot;:[{\u0026quot;template\u0026quot;:{\u0026quot;target\u0026quot;:{\u0026quot;wt\u0026quot;:\u0026quot;FlowMention\u0026quot;,\u0026quot;href\u0026quot;:\u0026quot;./Template:FlowMention\u0026quot;},\u0026quot;params\u0026quot;:{\u0026quot;1\u0026quot;:{\u0026quot;wt\u0026quot;:\u0026quot;Jdforrester (WMF)\u0026quot;}},\u0026quot;i\u0026quot;:0}}]}\" id=\"mwBQ\"\u003E@\u003C/span\u003E\u003Ca href=\"/wiki/User:Jdforrester_(WMF)\" title=\"User:Jdforrester (WMF)\" rel=\"mw:WikiLink\" about=\"#mwt1\" id=\"mwBg\"\u003EJdforrester (WMF)\u003C/a\u003E pointed out in \u003Ca rel=\"mw:ExtLink\" href=\"https://gerrit.wikimedia.org/r/c/mediawiki/core/+/1081276\" class=\"external free\" id=\"mwBw\"\u003Ehttps://gerrit.wikimedia.org/r/c/mediawiki/core/+/1081276\u003C/a\u003E we often update RELEASE NOTES to emit deprecation warnings.\u003C/p\u003E\n\n\u003Cp id=\"mwCA\"\u003EI propose we add the following text to the hard deprecation section:\u003C/p\u003E\n\n\u003Cp id=\"mwCQ\"\u003E\"When transitioning from a soft to hard deprecation, the RELEASE_NOTES must be updated to reflect the function now emits deprecation warnings.\"\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"yf7yr7tz4ydt87hv","postId":"yf7yr7tz52bvgbg3","isMaxThreadingDepth":false,"creator":{"name":"198.27.180.35","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/198.27.180.35","title":"Contributions/198.27.180.35","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:198.27.180.35","title":"198.27.180.35","exists":false,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:198.27.180.35","title":"User talk:198.27.180.35","exists":false,"_BC_bools":["exists"]}},"id":0},"isNewPage":true,"replies":[]},"yf84vf1fuu88ui58":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"yf7yr7tz4ydt87hv","articleTitle":"Topic:Yf7yr7tz4ydt87hv","revisionId":"yf84vf1fuu88ui58","timestamp":"20241030193834","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true, "isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Yf7yr7tz4ydt87hv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026topic_showPostId=yf84vf1fuu88ui58#flow-post-yf84vf1fuu88ui58","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026topic_postId=yf84vf1fuu88ui58\u0026topic_revId=yf84vf1fuu88ui58\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=reply\u0026topic_postId=yf7yr7tz4ydt87hv#flow-post-yf7yr7tz4ydt87hv","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Yf7yr7tz4ydt87hv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"376"},"author":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false, "isModeratedNotLocked":false,"content":{"content":"\u003Csection data-mw-section-id=\"0\" id=\"mwAQ\"\u003E\u003Cp id=\"mwAg\"\u003EI'd probably recommend instead:\u003C/p\u003E\u003Cblockquote id=\"mwAw\"\u003E\u003Cp id=\"mwBA\"\u003EWhen upgrading a \"soft\" deprecation to also start emitting deprecation warnings in a different release to the original deprecation, the RELEASE_NOTES file SHOULD be updated to reflect this.\u003C/p\u003E\u003C/blockquote\u003E\u003Cp id=\"mwBQ\"\u003EThere are circumstances where it's not strictly needed, and it's only needed if the original deprecation was in a previous release.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"yf7yr7tz4ydt87hv","postId":"yf84vf1fuu88ui58","isMaxThreadingDepth":false,"creator":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true, "_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"isNewPage":false,"replies":[]},"xasmxgagzde1qvin":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"xasmxgagzbf0mtjj","articleTitle":"Topic:Xasmxgagzbf0mtjj","revisionId":"xasmxgagzde1qvin","timestamp":"20230116102051","changeType":"new-post","dateFormats":[],"properties":{"topic-of-post":{},"topic-of-post-text-from-html":{}},"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Xasmxgagzbf0mtjj","title":"topic","text": "topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026topic_showPostId=xasmxgagzbf0mtjj#flow-post-xasmxgagzbf0mtjj","title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026topic_revId=xasmxgagzde1qvin\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=reply\u0026topic_postId=xasmxgagzbf0mtjj#flow-post-xasmxgagzbf0mtjj-form-content","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=edit-topic-summary","title":"Summarize" ,"text":"Summarize"}},"size":{"old":"0","new":"22"},"author":{"name":"Duesentrieb","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Duesentrieb","title":"Contributions/Duesentrieb","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Duesentrieb","title":"Duesentrieb","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Duesentrieb","title":"User talk:Duesentrieb","exists":true,"_BC_bools":["exists"]}},"id":10836},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"removing class aliases","format":"topic-title-html","plaintext":"removing class aliases"},"watchable":false,"replyToId":null,"postId":"xasmxgagzbf0mtjj","isMaxThreadingDepth":false,"creator":{"name":"Duesentrieb","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url": "/wiki/Special:Contributions/Duesentrieb","title":"Contributions/Duesentrieb","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Duesentrieb","title":"Duesentrieb","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Duesentrieb","title":"User talk:Duesentrieb","exists":true,"_BC_bools":["exists"]}},"id":10836},"isNewPage":false,"replies":["xasmxgagzfd2uxhr","xau0s00uzmueg0rm"],"reply_count":2,"last_updated_readable":"01:15, 17 January 2023","last_updated":1673918157000},"xasmxgagzfd2uxhr":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"xasmxgagzbf0mtjj","articleTitle":"Topic:Xasmxgagzbf0mtjj","revisionId":"xasmxgagzfd2uxhr","timestamp":"20230116102051","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Xasmxgagzbf0mtjj","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026topic_showPostId=xasmxgagzfd2uxhr#flow-post-xasmxgagzfd2uxhr","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026topic_postId=xasmxgagzfd2uxhr\u0026topic_revId=xasmxgagzfd2uxhr\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=reply\u0026topic_postId=xasmxgagzfd2uxhr#flow-post-xasmxgagzfd2uxhr","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"214"},"author":{"name":"Duesentrieb","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Duesentrieb","title":"Contributions/Duesentrieb","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Duesentrieb","title":"Duesentrieb","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Duesentrieb","title":"User talk:Duesentrieb","exists":true,"_BC_bools":["exists"]}},"id":10836},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" id=\"mwAQ\" data-parsoid=\"{}\"\u003E\u003Cp id=\"mwAg\" data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,214,0,0]}\"\u003EClass aliases are basically deprecated names for classes. I think that the deprecation process should apply for them, so it is clear when we can remove them. But there is no good way to emit deprecation warnings...\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"xasmxgagzbf0mtjj","postId":"xasmxgagzfd2uxhr","isMaxThreadingDepth":false,"creator":{"name":"Duesentrieb","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Duesentrieb","title":"Contributions/Duesentrieb","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Duesentrieb","title":"Duesentrieb","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Duesentrieb","title":"User talk:Duesentrieb","exists":true,"_BC_bools":["exists"]}},"id":10836},"isNewPage":true ,"replies":[]},"xau0s00uzmueg0rm":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"xasmxgagzbf0mtjj","articleTitle":"Topic:Xasmxgagzbf0mtjj","revisionId":"xau0s00uzmueg0rm","timestamp":"20230117011557","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Xasmxgagzbf0mtjj","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026topic_showPostId=xau0s00uzmueg0rm#flow-post-xau0s00uzmueg0rm","title":"post","text":"post"},"post-revision":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026topic_postId=xau0s00uzmueg0rm\u0026topic_revId=xau0s00uzmueg0rm\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=reply\u0026topic_postId=xasmxgagzbf0mtjj#flow-post-xasmxgagzbf0mtjj","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xasmxgagzbf0mtjj\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"313"},"author":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url": "/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" id=\"mwAQ\" data-parsoid=\"{}\"\u003E\u003Cp id=\"mwAg\" data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,313,0,0]}\"\u003EFor things that can't be warned about, we generally do a 'best efforts' approach, looking through codebase through Code Search and determining how likely it is that people will be disrupted (and writing patches to migrate where the codebases are current enough to pass CI). Not sure that this needs formalisation?\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"xasmxgagzbf0mtjj","postId":"xau0s00uzmueg0rm","isMaxThreadingDepth":false,"creator":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url": "/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"isNewPage":false,"replies":[]},"x34wraailk47u8x2":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"x34wraaili56q6xy","articleTitle":"Topic:X34wraaili56q6xy","revisionId":"x34wraailk47u8x2","timestamp":"20220914154241","changeType":"new-post","dateFormats":[],"properties":{"topic-of-post":{},"topic-of-post-text-from-html":{}},"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X34wraaili56q6xy","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026topic_showPostId=x34wraaili56q6xy#flow-post-x34wraaili56q6xy", "title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026topic_revId=x34wraailk47u8x2\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=reply\u0026topic_postId=x34wraaili56q6xy#flow-post-x34wraaili56q6xy-form-content","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"37"},"author":{"name":"Jdlrobson","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url": "/wiki/Special:Contributions/Jdlrobson","title":"Contributions/Jdlrobson","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdlrobson","title":"Jdlrobson","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdlrobson","title":"User talk:Jdlrobson","exists":true,"_BC_bools":["exists"]}},"id":446645},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"Deprecation process and translatewiki","format":"topic-title-html","plaintext":"Deprecation process and translatewiki"},"watchable":false,"replyToId":null,"postId":"x34wraaili56q6xy","isMaxThreadingDepth":false,"creator":{"name":"Jdlrobson","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdlrobson","title":"Contributions/Jdlrobson","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdlrobson","title": "Jdlrobson","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdlrobson","title":"User talk:Jdlrobson","exists":true,"_BC_bools":["exists"]}},"id":446645},"isNewPage":false,"replies":["x34wraailm38yaw6","x38na94r252jwen0","x3cc9mbj1epiozqo"],"reply_count":3,"last_updated_readable":"23:46, 17 September 2022","last_updated":1663458371000},"x34wraailm38yaw6":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"x34wraaili56q6xy","articleTitle":"Topic:X34wraaili56q6xy","revisionId":"x34wraailm38yaw6","timestamp":"20220914154241","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X34wraaili56q6xy","title":"topic","text":"topic"}, "post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026topic_showPostId=x34wraailm38yaw6#flow-post-x34wraailm38yaw6","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026topic_postId=x34wraailm38yaw6\u0026topic_revId=x34wraailm38yaw6\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=reply\u0026topic_postId=x34wraailm38yaw6#flow-post-x34wraailm38yaw6","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=edit-topic-summary","title": "Summarize","text":"Summarize"}},"size":{"old":"0","new":"1259"},"author":{"name":"Jdlrobson","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdlrobson","title":"Contributions/Jdlrobson","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdlrobson","title":"Jdlrobson","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdlrobson","title":"User talk:Jdlrobson","exists":true,"_BC_bools":["exists"]}},"id":446645},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,150,0,0]}\"\u003EA recent deprecation following this process caused problems in the translatewiki extension (context \u003Ca rel=\"mw:ExtLink\" href=\"https://phabricator.wikimedia.org/T310017#8236113\" class=\"external free\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;url\u0026quot;,\u0026quot;dsr\u0026quot;:[100,149,0,0]}\"\u003Ehttps://phabricator.wikimedia.org/T310017#8236113\u003C/a\u003E)\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[152,444,0,0]}\"\u003EThe guide currently says:\n\u0026gt; Developers or teams deprecating code SHOULD actively support removal of usages in code in the MediaWiki ecosystem, especially in popular extensions. This includes making maintainers aware of the deprecation as well as creating or reviewing patches removing usages.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[446,692,0,0]}\"\u003E\"popular extensions\" is quite a vague term here, as it's not clear what's popular. Codesearch currently shows results for many extension/skins that are unmaintained or pinned to older MediaWiki versions, so its often hard to identify which skins.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[694,878,0,0]}\"\u003E\"active\" is also vague here. In the case of T310017 work was still ongoing to support removal of usages but a translatewiki deployment happened somewhere in the middle of that process.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[880,890,0,0]}\"\u003EQuestions:\u003C/p\u003E\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[891,1259,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[891,1009,1,0,1,0]}\"\u003EShould TranslateWiki installed extensions/skins be treated as \"Wikimedia deployed\" code and block hard deprecations?\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1010,1116,1,0,1,0]}\"\u003EIf not should codesearch provide a tab in addition to \"Wikimedia deployed\" e.g. \"Translatewiki deployed\"\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1117,1259,1,0,1,0]}\"\u003ECould we provide more guidance about what we class as popular extensions/skins with some kind of criteria e.g. used on X site, Y+ downloads?\u003C/li\u003E\u003C/ul\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"x34wraaili56q6xy","postId":"x34wraailm38yaw6","isMaxThreadingDepth":false,"creator":{"name":"Jdlrobson","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdlrobson","title":"Contributions/Jdlrobson","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdlrobson","title":"Jdlrobson","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdlrobson","title":"User talk:Jdlrobson","exists":true,"_BC_bools":["exists"]}},"id":446645},"isNewPage":true,"replies":[]},"x38na94r252jwen0":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"x34wraaili56q6xy","articleTitle":"Topic:X34wraaili56q6xy","revisionId":"x38na94r252jwen0","timestamp":"20220916075818","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{ "topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X34wraaili56q6xy","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026topic_showPostId=x38na94r252jwen0#flow-post-x38na94r252jwen0","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026topic_postId=x38na94r252jwen0\u0026topic_revId=x38na94r252jwen0\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=reply\u0026topic_postId=x38na94r252jwen0#flow-post-x38na94r252jwen0","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"512"},"author":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false, "isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[0,141,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[12,128,0,0]}\"\u003EShould TranslateWiki installed extensions/skins be treated as \"Wikimedia deployed\" code and block hard deprecations?\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[141,327,0,0]}\"\u003ENo, I don't think so. Though we're fans of TWN and fund them, as well as using them, they aren't part of our ecosystem (and shouldn't be forced to follow our processes and all the rest).\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[327,456,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[339,443,0,0]}\"\u003EIf not should codesearch provide a tab in addition to \"Wikimedia deployed\" e.g. \"Translatewiki deployed\"\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[456,512,0,0]}\"\u003ESure, that's pretty easy to add if that would be useful.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"x34wraaili56q6xy","postId":"x38na94r252jwen0","isMaxThreadingDepth":false,"creator":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"isNewPage":false,"replies":[]},"x3cc9mbj1epiozqo":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"x34wraaili56q6xy","articleTitle":"Topic:X34wraaili56q6xy","revisionId":"x3cc9mbj1epiozqo","timestamp":"20220917234611","changeType":"reply","dateFormats":[],"properties":[], "isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X34wraaili56q6xy","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026topic_showPostId=x3cc9mbj1epiozqo#flow-post-x3cc9mbj1epiozqo","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026topic_postId=x3cc9mbj1epiozqo\u0026topic_revId=x3cc9mbj1epiozqo\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=reply\u0026topic_postId=x34wraaili56q6xy#flow-post-x34wraaili56q6xy","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X34wraaili56q6xy\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"811"},"author":{"name":"Legoktm","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Legoktm","title":"Contributions/Legoktm","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Legoktm","title":"Legoktm","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Legoktm","title":"User talk:Legoktm","exists":true,"_BC_bools":["exists"]}},"id":31711},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,303,0,0]}\"\u003ERe: popular extensions, we used to have \u003Ca rel=\"mw:ExtLink\" href=\"https://grafana.wikimedia.org/d/000000161/extension-distributor-downloads?orgId=1\" class=\"external text\" data-parsoid=\"{\u0026quot;dsr\u0026quot;:[40,138,83,1]}\"\u003Ethis dashboard\u003C/a\u003E for things in ExtensionDistributor/Gerrit, but it's timing out right now. WikiApiary has been unreliable for years, but that used to be another good source of data.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[305,673,0,0]}\"\u003ESMW is a weird spot in which it \u003Cb data-parsoid=\"{\u0026quot;dsr\u0026quot;:[337,345,3,3]}\"\u003Eis\u003C/b\u003E an incredibly popular extension, but because development is on GitHub (requires use of proprietary software) and it has no code of conduct (and historically has been toxic/unfriendly) I would not even suggest recommending or asking people to file tickets there. I think that is entirely on the SMW maintainers/community to fix.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[675,811,0,0]}\"\u003EOverall I do think TWN is a good bellwether for how people use MediaWiki in the wild, but I don't think it should be codified in policy.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"x34wraaili56q6xy","postId":"x3cc9mbj1epiozqo","isMaxThreadingDepth":false,"creator":{"name":"Legoktm","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Legoktm","title":"Contributions/Legoktm","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Legoktm","title":"Legoktm","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Legoktm","title":"User talk:Legoktm","exists":true,"_BC_bools":["exists"]}},"id":31711},"isNewPage":false,"replies":[]},"wie8zpaqg1qww8ih":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wie8zpaqfzrvs6jd","articleTitle":"Topic:Wie8zpaqfzrvs6jd","revisionId":"wie8zpaqg1qww8ih","timestamp":"20211014111913","changeType":"new-post","dateFormats":[],"properties":{"topic-of-post":{},"topic-of-post-text-from-html":{}},"isOriginalContent": true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wie8zpaqfzrvs6jd","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026topic_showPostId=wie8zpaqfzrvs6jd#flow-post-wie8zpaqfzrvs6jd","title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026topic_revId=wie8zpaqg1qww8ih\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026action=reply\u0026topic_postId=wie8zpaqfzrvs6jd#flow-post-wie8zpaqfzrvs6jd-form-content","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"39"},"author":{"name":"Nikerabbit","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Nikerabbit","title":"Contributions/Nikerabbit","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Nikerabbit","title":"Nikerabbit","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Nikerabbit","title":"User talk:Nikerabbit","exists":true,"_BC_bools":["exists"]}},"id":24},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "Documenting widening of parameter types","format":"topic-title-html","plaintext":"Documenting widening of parameter types"},"watchable":false,"replyToId":null,"postId":"wie8zpaqfzrvs6jd","isMaxThreadingDepth":false,"creator":{"name":"Nikerabbit","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Nikerabbit","title":"Contributions/Nikerabbit","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Nikerabbit","title":"Nikerabbit","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Nikerabbit","title":"User talk:Nikerabbit","exists":true,"_BC_bools":["exists"]}},"id":24},"isNewPage":false,"replies":["wie8zpaqg3py0ahl"],"reply_count":1,"last_updated_readable":"11:19, 14 October 2021","last_updated":1634210353000},"wie8zpaqg3py0ahl":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wie8zpaqfzrvs6jd","articleTitle" :"Topic:Wie8zpaqfzrvs6jd","revisionId":"wie8zpaqg3py0ahl","timestamp":"20211014111913","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wie8zpaqfzrvs6jd","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026topic_showPostId=wie8zpaqg3py0ahl#flow-post-wie8zpaqg3py0ahl","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026topic_postId=wie8zpaqg3py0ahl\u0026topic_revId=wie8zpaqg3py0ahl\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026action=reply\u0026topic_postId=wie8zpaqfzrvs6jd#flow-post-wie8zpaqfzrvs6jd","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wie8zpaqfzrvs6jd\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"1200"},"author":{"name":"Nikerabbit","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Nikerabbit","title":"Contributions/Nikerabbit","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Nikerabbit","title":"Nikerabbit","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Nikerabbit","title":"User talk:Nikerabbit","exists":true,"_BC_bools":["exists"]}},"id":24},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown", "links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,121,0,0]}\"\u003EWidening the types of parameters is allowed by the stable interface policy, as it it does not break any callers. Example:\u003C/p\u003E\u003Cpre typeof=\"mw:Extension/pre\" about=\"#mwt2\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[121,255,5,6]}\" data-mw=\"{\u0026quot;name\u0026quot;:\u0026quot;pre\u0026quot;,\u0026quot;attrs\u0026quot;:{},\u0026quot;body\u0026quot;:{\u0026quot;extsrc\u0026quot;:\u0026quot;\\n- public function addLink( Title $title, $id = null ) {..}\\n+ public function addLink( LinkTarget $link, $id = null ) {..}\\n\u0026quot;}}\"\u003E- public function addLink( Title $title, $id = null ) {..}\n+ public function addLink( LinkTarget $link, $id = null ) {..}\n\u003C/pre\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[255,679,0,0]}\"\u003EThis can pose an issue for developers of extensions and skins, who want to maintain compatibility for multiple versions of MediaWiki core: when refactoring or writing new code, we may accidentally use LinkTarget (with the above example) even though it will not work with older versions of MediaWiki. Detecting these issues is difficult due to low(er) testing with older versions of MediaWiki compared to the latest version.\u003C/p\u003E\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[680,965,0,0]}\"\u003E\n\u003Cbr data-parsoid=\"{\u0026quot;dsr\u0026quot;:[681,681,0,0]}\"/\u003E\nFor other things, that may be backwards incompatible, we can check the @since tags for the relevant classes/methods/constants/etc. For this kind of compatibility issue there is currently no standard way to check other than reading the source of each supported MediaWiki core version.\u003C/p\u003E\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[966,1200,0,0]}\"\u003E\n\u003Cbr data-parsoid=\"{\u0026quot;dsr\u0026quot;:[967,967,0,0]}\"/\u003E\nI propose that we mention these kind of type changes in the parameter documentation. IDEs like PhpStorm will show this documentation when writing code, which makes it easier to avoid introducing these kind of breakages accidentally.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"wie8zpaqfzrvs6jd","postId":"wie8zpaqg3py0ahl","isMaxThreadingDepth":false,"creator":{"name":"Nikerabbit","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Nikerabbit","title":"Contributions/Nikerabbit","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Nikerabbit","title":"Nikerabbit","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Nikerabbit","title":"User talk:Nikerabbit","exists":true,"_BC_bools":["exists"]}},"id":24},"isNewPage":true,"replies":[]},"w80nioabt9ybg963":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80nioabt7zac76z","articleTitle":"Topic:W80nioabt7zac76z","revisionId":"w80nioabt9ybg963","timestamp":"20210429181517","changeType":"new-post","dateFormats":[],"properties":{"topic-of-post":{},"topic-of-post-text-from-html":{}}, "isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80nioabt7zac76z","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026topic_showPostId=w80nioabt7zac76z#flow-post-w80nioabt7zac76z","title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026topic_revId=w80nioabt9ybg963\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=reply\u0026topic_postId=w80nioabt7zac76z#flow-post-w80nioabt7zac76z-form-content","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"47"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false, "isModeratedNotLocked":false,"content":{"content":"Removing obsolete unused behavior without delay","format":"topic-title-html","plaintext":"Removing obsolete unused behavior without delay"},"watchable":false,"replyToId":null,"postId":"w80nioabt7zac76z","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":["w80nioabtbxckb57","wbu10e1fkm4n0qa0"],"reply_count":2,"last_updated_readable":"10:18, 30 June 2021","last_updated":1625048307000},"w80nioabtbxckb57":{"_BC_bools":["isOriginalContent","isModerated","isLocked", "isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80nioabt7zac76z","articleTitle":"Topic:W80nioabt7zac76z","revisionId":"w80nioabtbxckb57","timestamp":"20210429181517","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80nioabt7zac76z","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026topic_showPostId=w80nioabtbxckb57#flow-post-w80nioabtbxckb57","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026topic_postId=w80nioabtbxckb57\u0026topic_revId=w80nioabtbxckb57\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=reply\u0026topic_postId=w80nioabtbxckb57#flow-post-w80nioabtbxckb57","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"764"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url": "/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,28,0,0]}\"\u003EThe policy currently states:\u003C/p\u003E\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[29,256,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[29,256,1,0,1,0]}\"\u003EObsolete behavior MAY be removed right away if it appears to have never been used within the Wikimedia maintained code and the MediaWiki ecosystem (except in the repo that defines it), and seems unlikely to be used elsewhere.\u003C/li\u003E\u003C/ul\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[258,432,0,0]}\"\u003EThis misses the point that code that has been in use only in the repo it is defined in, and perhaps in extensions maintained by the same entity, should allowed to be removed.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[434,484,0,0]}\"\u003EPerhaps this point should be rewritten as follows:\u003C/p\u003E\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[485,764,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[485,764,1,0,1,0]}\"\u003EObsolete behavior MAY be removed right away if it appears to have never been used within the MediaWiki Ecosystem in a repository other than the one it is defined in. Even then, it MAY be removed right away if it has only been used in repositories maintained by the same entity.\u003C/li\u003E\u003C/ul\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"w80nioabt7zac76z","postId":"w80nioabtbxckb57","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":true,"replies":[]},"wbu10e1fkm4n0qa0":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80nioabt7zac76z","articleTitle":"Topic:W80nioabt7zac76z","revisionId":"wbu10e1fkm4n0qa0","timestamp":"20210630101827","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent": true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80nioabt7zac76z","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026topic_showPostId=wbu10e1fkm4n0qa0#flow-post-wbu10e1fkm4n0qa0","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026topic_postId=wbu10e1fkm4n0qa0\u0026topic_revId=wbu10e1fkm4n0qa0\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=reply\u0026topic_postId=w80nioabt7zac76z#flow-post-w80nioabt7zac76z","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80nioabt7zac76z\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"701"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false ,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,114,0,0]}\"\u003EAlso, perhaps it would make sense to clarify how this provision interacts with another part of the policy, namely:\u003C/p\u003E\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[115,295,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[115,295,1,0,1,0]}\"\u003EIf it is not reasonably possible for the deprecated code to emit deprecation warnings, hard deprecation can be applied by announcing the removal on wikitech-l in a timely manner.\u003C/li\u003E\u003C/ul\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[297,701,0,0]}\"\u003ETaken together, this means that certain breaking changes may only require an email to wikitech-l and a brief wait. This may be useful e.g. when it is desirable to change the return type of a method in a way that does not break any known callers: there is no way to deprecate a return type, so if nothing seems to rely on the old type, it's ok to change it after asking about concerns on the mailing list.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"w80nioabt7zac76z","postId":"wbu10e1fkm4n0qa0","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":[]},"wbu08q0x3andvp01":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wa46yy9k39w4qodc","articleTitle":"Topic:Wa46yy9k39w4qodc","revisionId":"wbu08q0x3andvp01","timestamp":"20210630100439","changeType":"lock-topic","dateFormats":[],"properties":{"topic-of-post":{} ,"topic-of-post-text-from-html":{}},"isOriginalContent":true,"isModerated":true,"links":{"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wa46yy9k39w4qodc","title":"topic","text":"topic"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=history","title":"History","text":"History"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=unwatch","title":"Unwatch","text":"Unwatch"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_revId=wbu08q0x3andvp01\u0026action=single-view","title":"topic revision","text":"topic revision"}},"actions":[],"size":{"old":"36","new":"36"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title": "Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":"wa46yy9k3bv5uqcg","moderator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"moderateState":"lock","moderateReason":{"content":"marked as resolved", "format":"plaintext"},"isLocked":true,"isModeratedNotLocked":false,"content":{"content":"Removing @stable on soft deprecation","format":"topic-title-html","plaintext":"Removing @stable on soft deprecation"},"summary":{"revision":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked"],"workflowId":"wa46yy9k39w4qodc","articleTitle":"Topic:Wa46yy9k39w4qodc","revisionId":"wbu094glg0nwq293","timestamp":"20210630100451","changeType":"create-topic-summary","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wa46yy9k39w4qodc","title":"topic","text":"topic"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=history","title":"History","text":"History"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=unwatch","title":"Unwatch","text":"Unwatch"},"summary-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topicsummary_revId=wbu094glg0nwq293\u0026action=view-topic-summary","title":"summary revision","text":"summary revision"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"27"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248}, "lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,27,0,0]}\"\u003EWording clarified by James.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248}}},"watchable":false,"replyToId":null,"postId":"wa46yy9k39w4qodc","isMaxThreadingDepth":false,"creator":{"name": "Lucas Werkmeister (WMDE)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Lucas_Werkmeister_(WMDE)","title":"Contributions/Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Lucas_Werkmeister_(WMDE)","title":"Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Lucas_Werkmeister_(WMDE)","title":"User talk:Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]}},"id":9559565},"isNewPage":false,"replies":["wa46yy9k3du6ysbk","wa48x4dwfjlqr009","wafpa22iqknuu49l","wagwjsqxncy50y9a","wam4xbvr58htkj61","wanshxcm0ulxfan7","waocjubkf7jq8h6c","wbu08f77j5ggekpu"],"reply_count":8,"last_updated_readable":"10:04, 30 June 2021","last_updated":1625047479000},"wa470geawubjamu4":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wa46yy9k39w4qodc","articleTitle": "Topic:Wa46yy9k39w4qodc","revisionId":"wa470geawubjamu4","timestamp":"20210602160734","changeType":"edit-post","dateFormats":[],"properties":[],"isOriginalContent":false,"isModerated":false,"links":{"post-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=history\u0026topic_postId=wa46yy9k3du6ysbk","title":"History","text":"History"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wa46yy9k39w4qodc","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_showPostId=wa46yy9k3du6ysbk#flow-post-wa46yy9k3du6ysbk","title":"post","text":"post"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=compare-post-revisions\u0026topic_newRevision=wa470geawubjamu4","title":"diff","text":"diff"},"diff-prev":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=compare-post-revisions\u0026topic_newRevision=wa470geawubjamu4","title":"prev","text":"prev"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_postId=wa46yy9k3du6ysbk\u0026topic_revId=wa470geawubjamu4\u0026action=single-view","title":"post revision","text":"post revision"}},"actions":[],"size":{"old":"748","new":"748"},"author":{"name":"Lucas Werkmeister (WMDE)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Lucas_Werkmeister_(WMDE)","title":"Contributions/Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Lucas_Werkmeister_(WMDE)","title":"Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Lucas_Werkmeister_(WMDE)","title":"User talk:Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]}},"id":9559565},"lastEditUser":{"name" :"Lucas Werkmeister (WMDE)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Lucas_Werkmeister_(WMDE)","title":"Contributions/Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Lucas_Werkmeister_(WMDE)","title":"Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Lucas_Werkmeister_(WMDE)","title":"User talk:Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]}},"id":9559565},"lastEditId":"wa470geawubjamu4","previousRevisionId":"wa46yy9k3du6ysbk","isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,348,0,0]}\"\u003EThe policy seems to suggest or assume that being \u003Ccode data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[49,69,6,7]}\"\u003E@stable\u003C/code\u003E and \u003Ccode data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[74,98,6,7]}\"\u003E@deprecated\u003C/code\u003E are mutually exclusive. Some stability types explicitly state this (such as \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[175,193,2,2]}\"\u003Estable to call\u003C/i\u003E and \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[198,216,2,2]}\"\u003Estable to type\u003C/i\u003E), in others it seems to be implied (e.g. \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[258,278,2,2]}\"\u003Estable to extend\u003C/i\u003E: \u003Cq data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[280,346,3,4]}\"\u003EOnly classes that are marked \u003Ccode data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[312,342,6,7]}\"\u003E@stable to extend\u003C/code\u003E\u003C/q\u003E).\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[350,464,0,0]}\"\u003ETo make this clearer, I suggest adding a bullet point similar to the following to the section on soft deprecation:\u003C/p\u003E\n\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[466,641,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[466,641,1,0]}\"\u003ESoft deprecated code SHOULD NOT be marked stable. Any \u003Ccode data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[521,541,6,7]}\"\u003E@stable\u003C/code\u003E annotations should be removed at the same time that a \u003Ccode data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[596,620,6,7]}\"\u003E@deprecated\u003C/code\u003E annotation is added.\u003C/li\u003E\u003C/ul\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[643,698,0,0]}\"\u003EAnd maybe also this to the section on hard deprecation:\u003C/p\u003E\n\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[700,748,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[700,748,1,0]}\"\u003EHard deprecated code MUST NOT be marked stable.\u003C/li\u003E\u003C/ul\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"wa46yy9k39w4qodc","postId":"wa46yy9k3du6ysbk","isMaxThreadingDepth":false,"creator":{"name":"Lucas Werkmeister (WMDE)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Lucas_Werkmeister_(WMDE)","title":"Contributions/Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Lucas_Werkmeister_(WMDE)","title":"Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Lucas_Werkmeister_(WMDE)","title":"User talk:Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]}},"id":9559565},"isNewPage":false,"replies":[]},"wa48x4dwfjlqr009":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wa46yy9k39w4qodc","articleTitle":"Topic:Wa46yy9k39w4qodc","revisionId":"wa48x4dwfjlqr009","timestamp":"20210602164149", "changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wa46yy9k39w4qodc","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_showPostId=wa48x4dwfjlqr009#flow-post-wa48x4dwfjlqr009","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_postId=wa48x4dwfjlqr009\u0026topic_revId=wa48x4dwfjlqr009\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=unwatch","title": "Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"239"},"author":{"name":"DannyS712","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DannyS712","title":"Contributions/DannyS712","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DannyS712","title":"DannyS712","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DannyS712","title":"User talk:DannyS712","exists":true,"_BC_bools":["exists"]}},"id":15026018},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,239,0,0]}\"\u003EI agree that they are mutually exclusive and that @stable should be removed upon deprecation. If this gets added to the official policy, it might be worth having a codesniffer warning for both @stable and @deprecated in the same doc block.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"wa46yy9k39w4qodc","postId":"wa48x4dwfjlqr009","isMaxThreadingDepth":false,"creator":{"name":"DannyS712","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DannyS712","title":"Contributions/DannyS712","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DannyS712","title":"DannyS712","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DannyS712","title":"User talk:DannyS712","exists":true,"_BC_bools":["exists"]}},"id":15026018},"isNewPage":false, "replies":[]},"wafpa22iqknuu49l":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wa46yy9k39w4qodc","articleTitle":"Topic:Wa46yy9k39w4qodc","revisionId":"wafpa22iqknuu49l","timestamp":"20210607200618","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wa46yy9k39w4qodc","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_showPostId=wafpa22iqknuu49l#flow-post-wafpa22iqknuu49l","title":"post","text":"post"},"post-revision":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_postId=wafpa22iqknuu49l\u0026topic_revId=wafpa22iqknuu49l\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"170"},"author":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists": true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,170,0,0]}\"\u003EI agree that we should remove them on deprecation, but perhaps in our \u003Ccode data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[70,94,6,7]}\"\u003E@deprecated\u003C/code\u003E tags we should explicitly say that it used to be stable to extend/\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[161,169,2,2]}\"\u003Eetc.\u003C/i\u003E?\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"wa46yy9k39w4qodc","postId": "wafpa22iqknuu49l","isMaxThreadingDepth":false,"creator":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"isNewPage":false,"replies":[]},"wagwjsqxncy50y9a":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wa46yy9k39w4qodc","articleTitle":"Topic:Wa46yy9k39w4qodc","revisionId":"wagwjsqxncy50y9a","timestamp":"20210608090317","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wa46yy9k39w4qodc","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_showPostId=wagwjsqxncy50y9a#flow-post-wagwjsqxncy50y9a","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_postId=wagwjsqxncy50y9a\u0026topic_revId=wagwjsqxncy50y9a\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"712"},"author":{"name":"Lucas Werkmeister (WMDE)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Lucas_Werkmeister_(WMDE)","title":"Contributions/Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Lucas_Werkmeister_(WMDE)","title":"Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Lucas_Werkmeister_(WMDE)","title":"User talk:Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]}},"id":9559565},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,83,0,0]}\"\u003EHm, I just noticed this in \u003Ca href=\"/wiki/Stable_interface_policy#Add_guarantees\" title=\"Stable interface policy\" rel=\"mw:WikiLink\" about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;piped\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./Stable_interface_policy#Add_guarantees\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;Stable interface policy#Add guarantees\u0026quot;},\u0026quot;dsr\u0026quot;:[27,82,null,null],\u0026quot;pi\u0026quot;:[[{\u0026quot;k\u0026quot;:\u0026quot;1\u0026quot;},{\u0026quot;k\u0026quot;:\u0026quot;2\u0026quot;}]]}\" data-mw=\"{\u0026quot;parts\u0026quot;:[{\u0026quot;template\u0026quot;:{\u0026quot;target\u0026quot;:{\u0026quot;wt\u0026quot;:\u0026quot;section link\u0026quot;,\u0026quot;href\u0026quot;:\u0026quot;./Template:Section_link\u0026quot;},\u0026quot;params\u0026quot;:{\u0026quot;1\u0026quot;:{\u0026quot;wt\u0026quot;:\u0026quot;Stable interface policy\u0026quot;},\u0026quot;2\u0026quot;:{\u0026quot;wt\u0026quot;:\u0026quot;Add guarantees\u0026quot;}},\u0026quot;i\u0026quot;:0}}]}\"\u003EStable interface policy §\u003Cspan typeof=\"mw:Entity\"\u003E \u003C/span\u003EAdd guarantees\u003C/a\u003E:\u003C/p\u003E\n\n\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[85,669,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[97,529,0,0]}\"\u003E\nThe \u003Ccode data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[102,122,6,7]}\"\u003E@stable\u003C/code\u003E annotations can be followed by a \u003Ccode data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[156,185,6,7]}\"\u003EDeprecated since\u003C/code\u003E segment to indicate that a particular use of the class or method is currently deprecated. This can be used to indicate that extensions should no longer subclass, but may still call public methods. This guruantee may then be removed in the next release. Note that there is currently no hard-deprecation for the removal of stability guarantees. \u003C/p\u003E\u003Cdiv class=\"mw-highlight mw-highlight-lang-php mw-content-ltr\" dir=\"ltr\" typeof=\"mw:Extension/syntaxhighlight\" about=\"#mwt3\" data-parsoid=\"{\u0026quot;dsr\u0026quot;:[529,655,28,18]}\" data-mw=\"{\u0026quot;name\u0026quot;:\u0026quot;syntaxhighlight\u0026quot;,\u0026quot;attrs\u0026quot;:{\u0026quot;lang\u0026quot;:\u0026quot;php\u0026quot;},\u0026quot;body\u0026quot;:{\u0026quot;extsrc\u0026quot;:\u0026quot;\\n/**\\n * @stable to extend Deprecated since 1.35\\n */\\nclass Foo {\\n /* \u0026#x2026; */\\n}\\n\u0026quot;}}\"\u003E\u003Cpre\u003E\u003Cspan\u003E\u003C/span\u003E\u003Cspan class=\"sd\"\u003E/**\u003C/span\u003E\n\u003Cspan class=\"sd\"\u003E * @stable to extend Deprecated since 1.35\u003C/span\u003E\n\u003Cspan class=\"sd\"\u003E */\u003C/span\u003E\n\u003Cspan class=\"k\"\u003Eclass\u003C/span\u003E \u003Cspan class=\"nc\"\u003EFoo\u003C/span\u003E \u003Cspan class=\"p\"\u003E{\u003C/span\u003E\n \u003Cspan class=\"cm\"\u003E/* … */\u003C/span\u003E\n\u003Cspan class=\"p\"\u003E}\u003C/span\u003E\n\u003C/pre\u003E\u003C/div\u003E\n\u003C/blockquote\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[671,716,0,0]}\"\u003ENot sure what that means for this proposal…\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"wa46yy9k39w4qodc","postId":"wagwjsqxncy50y9a","isMaxThreadingDepth":false,"creator":{"name":"Lucas Werkmeister (WMDE)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Lucas_Werkmeister_(WMDE)","title":"Contributions/Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Lucas_Werkmeister_(WMDE)","title":"Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Lucas_Werkmeister_(WMDE)","title":"User talk:Lucas Werkmeister (WMDE)","exists":true,"_BC_bools":["exists"]}},"id":9559565},"isNewPage":false,"replies":[]},"wam4xbvr58htkj61":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wa46yy9k39w4qodc","articleTitle":"Topic:Wa46yy9k39w4qodc","revisionId":"wam4xbvr58htkj61","timestamp":"20210610172550", "changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wa46yy9k39w4qodc","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_showPostId=wam4xbvr58htkj61#flow-post-wam4xbvr58htkj61","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_postId=wam4xbvr58htkj61\u0026topic_revId=wam4xbvr58htkj61\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=unwatch","title": "Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"80"},"author":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,80,0,0]}\"\u003EHmm. Perhaps \u003Cspan about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=\"{\u0026quot;pi\u0026quot;:[[{\u0026quot;k\u0026quot;:\u0026quot;1\u0026quot;}]],\u0026quot;dsr\u0026quot;:[13,43,null,null]}\" data-mw=\"{\u0026quot;parts\u0026quot;:[{\u0026quot;template\u0026quot;:{\u0026quot;target\u0026quot;:{\u0026quot;wt\u0026quot;:\u0026quot;FlowMention\u0026quot;,\u0026quot;href\u0026quot;:\u0026quot;./Template:FlowMention\u0026quot;},\u0026quot;params\u0026quot;:{\u0026quot;1\u0026quot;:{\u0026quot;wt\u0026quot;:\u0026quot;DKinzler (WMF)\u0026quot;}},\u0026quot;i\u0026quot;:0}}]}\"\u003E@\u003C/span\u003E\u003Ca href=\"/wiki/User:DKinzler_(WMF)\" title=\"User:DKinzler (WMF)\" rel=\"mw:WikiLink\" about=\"#mwt1\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;piped\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./User:DKinzler_(WMF)\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;User:DKinzler (WMF)\u0026quot;}}\"\u003EDKinzler (WMF)\u003C/a\u003E can suggest how he saw this working?\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"wa46yy9k39w4qodc","postId":"wam4xbvr58htkj61","isMaxThreadingDepth":false,"creator":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"isNewPage":false,"replies":[]},"wanshxcm0ulxfan7":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wa46yy9k39w4qodc","articleTitle":"Topic:Wa46yy9k39w4qodc","revisionId":"wanshxcm0ulxfan7","timestamp":"20210611111532","changeType":"reply","dateFormats":[],"properties":[], "isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wa46yy9k39w4qodc","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_showPostId=wanshxcm0ulxfan7#flow-post-wanshxcm0ulxfan7","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_postId=wanshxcm0ulxfan7\u0026topic_revId=wanshxcm0ulxfan7\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"479"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,34,0,0]}\"\u003EI think it should work as follows:\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[36,145,0,0]}\"\u003EWhen the intent is to remove, then `@stable` should just be replaced by `@deprecated`. No code should use it.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[147,479,0,0]}\"\u003EIf the intend is to keep but make internal, `@stable` can have a \"deprecated since\" qualifier added. This prevents internal use of the affected code from being flagged as deprecated by IDEs and other tooling, while giving extensions authors at least some warning. It's basically \"deprecated for public use but ok to use internally\".\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"wa46yy9k39w4qodc","postId":"wanshxcm0ulxfan7","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki": "mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":[]},"waocjubkf7jq8h6c":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wa46yy9k39w4qodc","articleTitle":"Topic:Wa46yy9k39w4qodc","revisionId":"waocjubkf7jq8h6c","timestamp":"20210611171537","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=history","title":"History","text": "History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wa46yy9k39w4qodc","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_showPostId=waocjubkf7jq8h6c#flow-post-waocjubkf7jq8h6c","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_postId=waocjubkf7jq8h6c\u0026topic_revId=waocjubkf7jq8h6c\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"211"},"author":{"name": "Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,211,0,0]}\"\u003EThanks, that seems reasonable. I've \u003Ca rel=\"mw:ExtLink\" href=\"https://www.mediawiki.org/w/index.php?title=Stable_interface_policy\u0026amp;diff=4634412\u0026amp;oldid=4533357\u0026amp;diffmode=source\" class=\"external text\" data-parsoid=\"{\u0026quot;dsr\u0026quot;:[36,168,112,1]}\"\u003Etweaked the wording\u003C/a\u003E; hope this is correct and uncontroversial?\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"wa46yy9k39w4qodc","postId":"waocjubkf7jq8h6c","isMaxThreadingDepth":false,"creator":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true, "_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"isNewPage":false,"replies":[]},"wbu08f77j5ggekpu":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wa46yy9k39w4qodc","articleTitle":"Topic:Wa46yy9k39w4qodc","revisionId":"wbu08f77j5ggekpu","timestamp":"20210630100430","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wa46yy9k39w4qodc","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_showPostId=wbu08f77j5ggekpu#flow-post-wbu08f77j5ggekpu","title":"post","text" :"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026topic_postId=wbu08f77j5ggekpu\u0026topic_revId=wbu08f77j5ggekpu\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wa46yy9k39w4qodc\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"15"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title": "DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,15,0,0]}\"\u003EYes, thank you!\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"wa46yy9k39w4qodc","postId":"wbu08f77j5ggekpu","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)", "exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":[]},"w80n8ilmve1l99at":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80n8ilmvc2k57bp","articleTitle":"Topic:W80n8ilmvc2k57bp","revisionId":"w80n8ilmve1l99at","timestamp":"20210429181013","changeType":"new-post","dateFormats":[],"properties":{"topic-of-post":{},"topic-of-post-text-from-html":{}},"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80n8ilmvc2k57bp","title":"topic","text":"topic"},"post":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_showPostId=w80n8ilmvc2k57bp#flow-post-w80n8ilmvc2k57bp","title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_revId=w80n8ilmve1l99at\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=reply\u0026topic_postId=w80n8ilmvc2k57bp#flow-post-w80n8ilmvc2k57bp-form-content","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}}, "size":{"old":"0","new":"55"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"Deprecation on master while a release is being prepared","format":"topic-title-html","plaintext":"Deprecation on master while a release is being prepared"},"watchable":false,"replyToId":null,"postId":"w80n8ilmvc2k57bp","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki", "gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":["w80n8ilmvg0mdb9x","w80rfbcsx6n3a14w","w89rsz5zjhce9qv6","w8bj4d6v283ktpql","w8bka8fz0gzk5cep","w8bxo3ob8gnlhals","w8d4ehv59oeby9tz","w8doxjxi3xecsfym","w8dvkd5u46morbm7","w8ien826rcztxnrd","wa44rfbte54rwi6h"],"reply_count":11,"last_updated_readable":"18:10, 29 April 2021","last_updated":1619719813000},"w80n8ilmvg0mdb9x":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80n8ilmvc2k57bp","articleTitle":"Topic:W80n8ilmvc2k57bp","revisionId": "w80n8ilmvg0mdb9x","timestamp":"20210429181013","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80n8ilmvc2k57bp","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_showPostId=w80n8ilmvg0mdb9x#flow-post-w80n8ilmvg0mdb9x","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_postId=w80n8ilmvg0mdb9x\u0026topic_revId=w80n8ilmvg0mdb9x\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=reply\u0026topic_postId=w80n8ilmvg0mdb9x#flow-post-w80n8ilmvg0mdb9x","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"773"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name": null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,28,0,0]}\"\u003EThe policy currently states:\u003C/p\u003E\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[29,416,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[29,250,1,0,1,0]}\"\u003EDeprecations and removals SHOULD NOT be performed shortly before a release branch or between release candidates, to give extension authors time to fix any issues that may arise, and avoid broken snapshots of extensions.\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[251,416,1,0,1,0]}\"\u003EDeprecations and removals MUST first take place on the master branch. Deprecations and removals SHOULD NOT be backported to release branches or release candidates.\u003C/li\u003E\u003C/ul\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[418,773,0,0]}\"\u003EIt seems like the first bullet point is redundant and misleading: we can still do deprecations on the master branch while release candidates are being prepared. We just shouldn't add deprecations to the branch that is going to be released. Since that is already covered by the wording in the second point, I think the first point should simply be removed.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"w80n8ilmvc2k57bp","postId":"w80n8ilmvg0mdb9x","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":true,"replies":[]},"w80rhmctb3rzjzlz":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80n8ilmvc2k57bp","articleTitle":"Topic:W80n8ilmvc2k57bp","revisionId":"w80rhmctb3rzjzlz","timestamp":"20210429192635","changeType":"edit-post","dateFormats":[],"properties":[], "isOriginalContent":false,"isModerated":false,"links":{"post-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history\u0026topic_postId=w80rfbcsx6n3a14w","title":"History","text":"History"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80n8ilmvc2k57bp","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_showPostId=w80rfbcsx6n3a14w#flow-post-w80rfbcsx6n3a14w","title":"post","text":"post"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=compare-post-revisions\u0026topic_newRevision=w80rhmctb3rzjzlz","title":"diff","text":"diff"},"diff-prev":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=compare-post-revisions\u0026topic_newRevision=w80rhmctb3rzjzlz","title":"prev", "text":"prev"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_postId=w80rfbcsx6n3a14w\u0026topic_revId=w80rhmctb3rzjzlz\u0026action=single-view","title":"post revision","text":"post revision"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=reply\u0026topic_postId=w80rfbcsx6n3a14w#flow-post-w80rfbcsx6n3a14w","title":"Reply","text":"Reply"}},"size":{"old":"7","new":"266"},"author":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditUser":{"name": "Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditId":"w80rhmctb3rzjzlz","previousRevisionId":"w80rfbcsx6n3a14w","isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,266,0,0]}\"\u003EAgreed on the point about \"being prepared\", but the main part should stay. It's really unhelpful to make large breaking changes (which deprecations are, in effect) a few days or hours before a branch is cut, and doing so just afterwards can make backports very hard.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"w80n8ilmvc2k57bp","postId":"w80rfbcsx6n3a14w","isMaxThreadingDepth":false,"creator":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title": "User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"isNewPage":false,"replies":[]},"w89rsz5zjhce9qv6":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80n8ilmvc2k57bp","articleTitle":"Topic:W80n8ilmvc2k57bp","revisionId":"w89rsz5zjhce9qv6","timestamp":"20210503203007","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80n8ilmvc2k57bp","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_showPostId=w89rsz5zjhce9qv6#flow-post-w89rsz5zjhce9qv6","title":"post","text":"post"},"post-revision":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_postId=w89rsz5zjhce9qv6\u0026topic_revId=w89rsz5zjhce9qv6\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=reply\u0026topic_postId=w89rsz5zjhce9qv6#flow-post-w89rsz5zjhce9qv6","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"152"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url": "/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,152,0,0]}\"\u003EShould we be more specific about what \"shortly\" means? A week should do, right? We'd need some kind of official \"pencils down\" warning for this to work.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"w80n8ilmvc2k57bp","postId":"w89rsz5zjhce9qv6", "isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":[]},"w8bj4d6v283ktpql":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80n8ilmvc2k57bp","articleTitle":"Topic:W80n8ilmvc2k57bp","revisionId":"w8bj4d6v283ktpql","timestamp":"20210504152703","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80n8ilmvc2k57bp","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_showPostId=w8bj4d6v283ktpql#flow-post-w8bj4d6v283ktpql","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_postId=w8bj4d6v283ktpql\u0026topic_revId=w8bj4d6v283ktpql\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=reply\u0026topic_postId=w8bj4d6v283ktpql#flow-post-w8bj4d6v283ktpql","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"361"},"author":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false, "isModeratedNotLocked":false,"content":{"content":"\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,361,0,0]}\"\u003ENo, not just a week. I'd recommend a month before and after the branch point, generally. This isn't about Wikimedia staff fixing things (where a week's notice is very tight but might be OK), this is about the wider ecosystem, right? People might not even notice that their extension no longer passes CI for a week or two after the deprecation, let alone fix it.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"w80n8ilmvc2k57bp","postId":"w8bj4d6v283ktpql","isMaxThreadingDepth":false,"creator":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)", "title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"isNewPage":false,"replies":[]},"w8bka8fz0gzk5cep":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80n8ilmvc2k57bp","articleTitle":"Topic:W80n8ilmvc2k57bp","revisionId":"w8bka8fz0gzk5cep","timestamp":"20210504154756","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80n8ilmvc2k57bp","title":"topic","text":"topic"},"post":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_showPostId=w8bka8fz0gzk5cep#flow-post-w8bka8fz0gzk5cep","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_postId=w8bka8fz0gzk5cep\u0026topic_revId=w8bka8fz0gzk5cep\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=reply\u0026topic_postId=w8bka8fz0gzk5cep#flow-post-w8bka8fz0gzk5cep","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=edit-topic-summary","title":"Summarize", "text":"Summarize"}},"size":{"old":"0","new":"141"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,141,0,0]}\"\u003EThat would mean not making deprecations in two out of six months. That seems like a massive impediment.\nCan't we just run CI for all of them?\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"w80n8ilmvc2k57bp","postId":"w8bka8fz0gzk5cep","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":[]},"w8bxo3ob8gnlhals":{"_BC_bools":["isOriginalContent", "isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80n8ilmvc2k57bp","articleTitle":"Topic:W80n8ilmvc2k57bp","revisionId":"w8bxo3ob8gnlhals","timestamp":"20210504194817","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80n8ilmvc2k57bp","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_showPostId=w8bxo3ob8gnlhals#flow-post-w8bxo3ob8gnlhals","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_postId=w8bxo3ob8gnlhals\u0026topic_revId=w8bxo3ob8gnlhals\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic" :{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=reply\u0026topic_postId=w8bxo3ob8gnlhals#flow-post-w8bxo3ob8gnlhals","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"589"},"author":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}, "talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,487,0,0]}\"\u003ENo? Running \u0026gt;\u0026gt;US$1k worth of CI CPU time for every patch to MediaWiki core, and then doing something with that result, would be a massive change to our CI budget and expectations for developers. (If a patch in core causes a failure in an extension, how is that communicated? To whom? How do maintainers find out that they need to do something? How do core developers not end up deluged by false positive \"failure\" messages from the dozens of extensions that are broken already? \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[478,486,2,2]}\"\u003EEtc.\u003C/i\u003E)\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[489,589,0,0]}\"\u003EAlso, this is just documenting current expectations, it's not a change to the current reality, AIUI?\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId" :"w80n8ilmvc2k57bp","postId":"w8bxo3ob8gnlhals","isMaxThreadingDepth":false,"creator":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"isNewPage":false,"replies":[]},"w8d4fece3yocqh79":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80n8ilmvc2k57bp","articleTitle":"Topic:W80n8ilmvc2k57bp","revisionId":"w8d4fece3yocqh79","timestamp":"20210505083604","changeType":"edit-post","dateFormats":[],"properties":[],"isOriginalContent":false,"isModerated":false, "links":{"post-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history\u0026topic_postId=w8d4ehv59oeby9tz","title":"History","text":"History"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80n8ilmvc2k57bp","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_showPostId=w8d4ehv59oeby9tz#flow-post-w8d4ehv59oeby9tz","title":"post","text":"post"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=compare-post-revisions\u0026topic_newRevision=w8d4fece3yocqh79","title":"diff","text":"diff"},"diff-prev":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=compare-post-revisions\u0026topic_newRevision=w8d4fece3yocqh79","title":"prev","text":"prev"},"post-revision":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_postId=w8d4ehv59oeby9tz\u0026topic_revId=w8d4fece3yocqh79\u0026action=single-view","title":"post revision","text":"post revision"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=reply\u0026topic_postId=w8d4ehv59oeby9tz#flow-post-w8d4ehv59oeby9tz","title":"Reply","text":"Reply"}},"size":{"old":"357","new":"348"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links": {"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditId":"w8d4fece3yocqh79","previousRevisionId":"w8d4ehv59oeby9tz","isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,144,0,0]}\"\u003ENot doing deprecations for a month before and after a branch cut is definitely not current reality, and never has been as far as I can remember.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[146,348,0,0]}\"\u003EMy suggestion was to run CI on all of them when doing the rc0 branch, not on every patch. My hope is that this would result in extension maintainers noticing and fixing issues before the actual release.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"w80n8ilmvc2k57bp","postId":"w8d4ehv59oeby9tz","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url": "/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":[]},"w8doxjxi3xecsfym":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80n8ilmvc2k57bp","articleTitle":"Topic:W80n8ilmvc2k57bp","revisionId":"w8doxjxi3xecsfym","timestamp":"20210505144415","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80n8ilmvc2k57bp","title":"topic","text":"topic"},"post":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_showPostId=w8doxjxi3xecsfym#flow-post-w8doxjxi3xecsfym","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_postId=w8doxjxi3xecsfym\u0026topic_revId=w8doxjxi3xecsfym\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=reply\u0026topic_postId=w8doxjxi3xecsfym#flow-post-w8doxjxi3xecsfym","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=edit-topic-summary","title":"Summarize", "text":"Summarize"}},"size":{"old":"0","new":"472"},"author":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,243,0,0]}\"\u003EI mean, I often C-1 patches that would be disruptive, as do many of the usual crowd. I'd encourage you to consider doing the same, out of respect for the time of colleagues and particularly the Security team when making last-minute back-ports.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[245,472,0,0]}\"\u003EThe wider suggestion is an interesting idea. You should pitch it to RelEng, though I imagine they'd want to defer such work until after the GitLab migration rather than implementing such a tool from scratch twice within a year.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"w80n8ilmvc2k57bp","postId":"w8doxjxi3xecsfym","isMaxThreadingDepth":false,"creator":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url": "/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"isNewPage":false,"replies":[]},"w8dvkd5u46morbm7":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80n8ilmvc2k57bp","articleTitle":"Topic:W80n8ilmvc2k57bp","revisionId":"w8dvkd5u46morbm7","timestamp":"20210505164322","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history","title":"History","text":"History"},"topic":{"url": "//www.mediawiki.org/wiki/Topic:W80n8ilmvc2k57bp","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_showPostId=w8dvkd5u46morbm7#flow-post-w8dvkd5u46morbm7","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_postId=w8dvkd5u46morbm7\u0026topic_revId=w8dvkd5u46morbm7\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=reply\u0026topic_postId=w8dvkd5u46morbm7#flow-post-w8dvkd5u46morbm7","title":"Reply","text":"Reply"},"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"662"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,460,0,0]}\"\u003ETo clarify: I agree that we should not do \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[42,55,2,2]}\"\u003Ebackports\u003C/i\u003E shortly before a release. Deprecations and removals should not be backported at all. But doing a deprecation on \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[168,178,2,2]}\"\u003Emaster\u003C/i\u003E a week before or after the rc0 branch is cut seems fine to me. I'm not sure I understand the problem with that. Extensions authors still have a month to fix problems between rc0 and the actual release, right? Maybe I'm misunderstanding when and how extensions snapshots are made...\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[462,662,0,0]}\"\u003EAs to running CI for all extensions... it wouldn't be hard to write a script that pushes a DNM patch to every repo, right? And maybe even automatically file tickets if these patches fail to pass CI...\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"w80n8ilmvc2k57bp","postId":"w8dvkd5u46morbm7","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":[]},"w8ien826rcztxnrd":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80n8ilmvc2k57bp","articleTitle":"Topic:W80n8ilmvc2k57bp","revisionId":"w8ien826rcztxnrd","timestamp":"20210507173141","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent": true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80n8ilmvc2k57bp","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_showPostId=w8ien826rcztxnrd#flow-post-w8ien826rcztxnrd","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_postId=w8ien826rcztxnrd\u0026topic_revId=w8ien826rcztxnrd\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=reply\u0026topic_postId=w8ien826rcztxnrd#flow-post-w8ien826rcztxnrd","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"3510"},"author":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false, "isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[0,485,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[12,472,0,0]}\"\u003ETo clarify: I agree that we should not do \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[54,67,2,2]}\"\u003Ebackports\u003C/i\u003E shortly before a release. Deprecations and removals should not be backported at all. But doing a deprecation on \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[180,190,2,2]}\"\u003Emaster\u003C/i\u003E a week before or after the rc0 branch is cut seems fine to me. I'm not sure I understand the problem with that. Extensions authors still have a month to fix problems between rc0 and the actual release, right? Maybe I'm misunderstanding when and how extensions snapshots are made...\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[485,515,0,0]}\"\u003EThere are two sources of pain:\u003C/p\u003E\n\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[517,822,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[517,665,1,0,1,0]}\"\u003EPeople making big changes \"just\" after the branch is cut, before it's released. This pain mostly affects MediaWiki itself and deployed extensions.\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[666,822,1,0,1,0]}\"\u003EPeople making big changes \"just\" before the branch is cut. This pain mostly affects those extension developers who aren't pushing a patch every few hours.\u003C/li\u003E\u003C/ul\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[824,1790,0,0]}\"\u003EBranches are cut from master at the same time or very shortly after the \"final\" alpha deployment branch is, for all ~1800 extensions and skins (not just the ~200 in Wikimedia production). After that, there's a period of manual testing for things that no-one cares about except in releases, like the installer, and a bunch of bugs are found and fixed. As with all Wikimedia development, those changes are made first to the master branch and then back-ported. We also backport major bug fixes that are discovered during the week of the deployment. The general guidance is that this post-cut process can take up to six weeks until rc.0 is cut, though in practice I'd not worry about it much beyond the first three–four. Naturally, LTS releases make for even more pressure to get things out of the door, and so rc.0 can unveil lots of bugs and need several follow-ups (as we found with the 1.35 release), but in general it's pretty free sailing after rc.0 is released.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1792,2187,0,0]}\"\u003EFor the first area of pain, large scale refactors or removals of code very frequently mean that these back-ports can't be easily made, or in some cases have to be re-written from scratch. In general the burden of this churn doesn't fall on the person that made the work by merging the refactor so swiftly, but on the bug fixer (or worse, someone like me just trying to help the release get out).\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[2189,2760,0,0]}\"\u003EFor the second area of pain, hard deprecations are, per long-standing development policy, effectively a breaking change for development (and for Wikimedia-deployed code), as they make CI fail. If one were \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[2394,2402,2,2]}\"\u003Ee.g.\u003C/i\u003E to hard-deprecate the User class a week before REL1_37 were branched, hundreds of extensions would immediately be broken for development, and either their owners would find out a month or two later when they next pushed a patch, or (more frequently) helpers like me or tools like LibraryUpgrader would encounter it when fixing up the repo for other reasons.\u003C/p\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[2760,2902,0,0]}\"\u003E\n\nI think this section should be split into statements about breaking changes and deprecations, and say different things about them, \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[2893,2901,2,2]}\"\u003Ee.g.\u003C/i\u003E:\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[2902,3496,12,13]}\"\u003E\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[2915,3295,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[2915,3153,1,0,1,0]}\"\u003EBreaking changes and large or risky refactors SHOULD NOT be performed during the few weeks running up to a release being branched until the first release candidate is made, to make it easier to back-port bug fixes to release candidates.\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[3154,3295,1,0,1,0]}\"\u003EHard deprecations SHOULD NOT be performed shortly before a release branch, to give extension authors time to fix any issues that may arise.\u003C/li\u003E\u003C/ul\u003E\n\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[3297,3482,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[3297,3482,1,0,1,0]}\"\u003EDeprecations and removals MUST first take place on the master branch. Deprecations and removals SHOULD NOT be backported to release branches after the first release candidate is made.\u003C/li\u003E\u003C/ul\u003E\n\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[3496,3512,0,0]}\"\u003EWould that work?\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"w80n8ilmvc2k57bp","postId":"w8ien826rcztxnrd","isMaxThreadingDepth":false,"creator":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"isNewPage":false,"replies":[]},"wa44rfbte54rwi6h":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"w80n8ilmvc2k57bp","articleTitle":"Topic:W80n8ilmvc2k57bp","revisionId":"wa44rfbte54rwi6h","timestamp":"20210602152709","changeType":"reply","dateFormats":[],"properties":[], "isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:W80n8ilmvc2k57bp","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_showPostId=wa44rfbte54rwi6h#flow-post-wa44rfbte54rwi6h","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026topic_postId=wa44rfbte54rwi6h\u0026topic_revId=wa44rfbte54rwi6h\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=reply\u0026topic_postId=w80n8ilmvc2k57bp#flow-post-w80n8ilmvc2k57bp","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:W80n8ilmvc2k57bp\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"750"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false ,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,500,0,0]}\"\u003EMaybe I'm thinking about this wrong, but in my mind, the best time for extension developers to discover and fix issues is \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[122,131,2,2]}\"\u003Eafter\u003C/i\u003E the branch has been cut, so it's no longer a moving target. I assumed ExtensionDistributor will pick up any fixed made to the extension's snapshot branch. In my understanding, this would make sure that at the time of the release, the snapshot branches of extensions have also been fixed. To support this, CI should run against the extension when the branch is created.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[502,750,0,0]}\"\u003EAs to not making major changes between the branching and the release of rc0: I think this is reasonable, but would need to be announced more clearly. Also, having at least a rough idea of the timing beforehand would allow teams to plan around this.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"w80n8ilmvc2k57bp","postId":"wa44rfbte54rwi6h","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":[]},"wie7ldpi4k9v7ib1":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wat4h7ei3oggv8r5","articleTitle":"Topic:Wat4h7ei3oggv8r5","revisionId":"wie7ldpi4k9v7ib1","timestamp":"20211014105407","changeType":"lock-topic","dateFormats":[],"properties":{"topic-of-post":{} ,"topic-of-post-text-from-html":{}},"isOriginalContent":true,"isModerated":true,"links":{"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wat4h7ei3oggv8r5","title":"topic","text":"topic"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=history","title":"History","text":"History"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=unwatch","title":"Unwatch","text":"Unwatch"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topic_revId=wie7ldpi4k9v7ib1\u0026action=single-view","title":"topic revision","text":"topic revision"}},"actions":[],"size":{"old":"36","new":"36"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title": "Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":"wat4h7ei3qfhzaq9","moderator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"moderateState":"lock","moderateReason":{"content":"marked as resolved", "format":"plaintext"},"isLocked":true,"isModeratedNotLocked":false,"content":{"content":"Deprecation of code and LTS releases","format":"topic-title-html","plaintext":"Deprecation of code and LTS releases"},"summary":{"revision":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked"],"workflowId":"wat4h7ei3oggv8r5","articleTitle":"Topic:Wat4h7ei3oggv8r5","revisionId":"wie7ketp3b4fpmmj","timestamp":"20211014105338","changeType":"create-topic-summary","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wat4h7ei3oggv8r5","title":"topic","text":"topic"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=history","title":"History","text":"History"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=unwatch","title":"Unwatch","text":"Unwatch"},"summary-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topicsummary_revId=wie7ketp3b4fpmmj\u0026action=view-topic-summary","title":"summary revision","text":"summary revision"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"177"},"author":{"name":"2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36","title":"Contributions/2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36","title":"2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36","exists":false,"_BC_bools":["exists"]},"talk":{ "url":"/wiki/User_talk:2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36","title":"User talk:2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36","exists":false,"_BC_bools":["exists"]}},"id":0},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,177,0,0]}\"\u003E\"Long Term Support\" means WMF provides bug fixes and security fixes for two years. It provides no guarantees about backwards compatibility, and it never was intended to do that.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"creator":{"name":"2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36","title":"Contributions/2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36", "exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36","title":"2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36","exists":false,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36","title":"User talk:2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36","exists":false,"_BC_bools":["exists"]}},"id":0}}},"watchable":false,"replyToId":null,"postId":"wat4h7ei3oggv8r5","isMaxThreadingDepth":false,"creator":{"name":"Proactive programming","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Proactive_programming","title":"Contributions/Proactive programming","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Proactive_programming","title":"Proactive programming","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Proactive_programming","title":"User talk:Proactive programming","exists":true,"_BC_bools":["exists"]}},"id":14869227}, "isNewPage":false,"replies":["wat4h7ei3sej3cpd","wat4rxjcpq34owui","watelsejyg11ijkz","wau91ueripslcpgw","wauz98as9p4y9b9c","wbu0nxco1fy01e1m"],"reply_count":6,"last_updated_readable":"10:54, 14 October 2021","last_updated":1634208847000},"wat4h7ei3sej3cpd":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wat4h7ei3oggv8r5","articleTitle":"Topic:Wat4h7ei3oggv8r5","revisionId":"wat4h7ei3sej3cpd","timestamp":"20210613204248","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wat4h7ei3oggv8r5","title":"topic","text":"topic"},"post":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topic_showPostId=wat4h7ei3sej3cpd#flow-post-wat4h7ei3sej3cpd","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topic_postId=wat4h7ei3sej3cpd\u0026topic_revId=wat4h7ei3sej3cpd\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"1328"},"author":{"name":"Proactive programming","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url": "/wiki/Special:Contributions/Proactive_programming","title":"Contributions/Proactive programming","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Proactive_programming","title":"Proactive programming","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Proactive_programming","title":"User talk:Proactive programming","exists":true,"_BC_bools":["exists"]}},"id":14869227},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,971,0,0]}\"\u003EThe policy of \"removing deprecated code after 1 major release (or 2)\" has a really MAJOR problem. It has to do with extensions. With extensions that are not used by MediaWiki (and maybe not used by a lot of people), the extensions may only get updated during LTS revisions. When every single major release that is not a LTS release can have breaking deprecated code, when a programmer comes along and tries to bring old extensions up to date (usable with the new LTS), there is no central \"checklist\" (or anything) indicating what exactly has changed. Even a list would be helpful. Then at least somebody can create a utility (maintenance file) that can be run against an extension to determine what things need to be updated to be compliant with the new LTS. Specifically, I am talking about third party extensions that run in 1.31, but do not run in 1.36 (for a variety of reasons). Some of which just kind of scrapped by when going from 1.29 (or less) to 1.31. \u003C/p\u003E\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[972,1328,0,0]}\"\u003E\n\u003Cbr data-parsoid=\"{\u0026quot;dsr\u0026quot;:[973,973,0,0]}\"/\u003E\nThe whole point of a LTS is so that a company (or third party extension developer) does not need to worry about all of the little changes that happen between LTS version and can just focus on the LTS versions. But it does not seem as though the development team at MediaWiki is paying attention at all to people trying to move from 1.31 LTS to 1.36 LTS.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"wat4h7ei3oggv8r5","postId":"wat4h7ei3sej3cpd","isMaxThreadingDepth":false,"creator":{"name":"Proactive programming","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Proactive_programming","title":"Contributions/Proactive programming","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Proactive_programming","title":"Proactive programming","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Proactive_programming","title":"User talk:Proactive programming","exists":true,"_BC_bools":["exists"]}},"id":14869227},"isNewPage":true,"replies":[]},"wat4rxjcpq34owui":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wat4h7ei3oggv8r5","articleTitle":"Topic:Wat4h7ei3oggv8r5","revisionId":"wat4rxjcpq34owui","timestamp":"20210613204809","changeType":"reply", "dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wat4h7ei3oggv8r5","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topic_showPostId=wat4rxjcpq34owui#flow-post-wat4rxjcpq34owui","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topic_postId=wat4rxjcpq34owui\u0026topic_revId=wat4rxjcpq34owui\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=unwatch","title":"Unwatch","text":"Unwatch" }},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"457"},"author":{"name":"Proactive programming","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Proactive_programming","title":"Contributions/Proactive programming","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Proactive_programming","title":"Proactive programming","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Proactive_programming","title":"User talk:Proactive programming","exists":true,"_BC_bools":["exists"]}},"id":14869227},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,457,0,0]}\"\u003EThere needs to be a maintenance function that can at least point out to a third party developer which functions calls (or hooks) are deprecated. Something like \"extensionLintChecker.php\" and \"skinLintChecker.php\" for skins. Something that will produce a report saying \"File:myextension.php\" is using \"Deprecated function \"nogo()\". Replaced by \"yesnow1() and againnow()\" (or something to point the developer in the right direction to fixing the extension.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"wat4h7ei3oggv8r5","postId":"wat4rxjcpq34owui","isMaxThreadingDepth":false,"creator":{"name":"Proactive programming","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Proactive_programming","title":"Contributions/Proactive programming","exists":true, "_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Proactive_programming","title":"Proactive programming","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Proactive_programming","title":"User talk:Proactive programming","exists":true,"_BC_bools":["exists"]}},"id":14869227},"isNewPage":false,"replies":[]},"watelsejyg11ijkz":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wat4h7ei3oggv8r5","articleTitle":"Topic:Wat4h7ei3oggv8r5","revisionId":"watelsejyg11ijkz","timestamp":"20210613234439","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wat4h7ei3oggv8r5","title":"topic","text":"topic"},"post":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topic_showPostId=watelsejyg11ijkz#flow-post-watelsejyg11ijkz","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topic_postId=watelsejyg11ijkz\u0026topic_revId=watelsejyg11ijkz\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"134"},"author":{"name":"Dinoguy1000","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Dinoguy1000" ,"title":"Contributions/Dinoguy1000","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Dinoguy1000","title":"Dinoguy1000","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Dinoguy1000","title":"User talk:Dinoguy1000","exists":true,"_BC_bools":["exists"]}},"id":32187},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,134,0,0]}\"\u003EIt's probably not what you're looking for, but each version's release notes includes a list of deprecated (and removed) code features.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"wat4h7ei3oggv8r5","postId":"watelsejyg11ijkz","isMaxThreadingDepth":false,"creator":{"name":"Dinoguy1000","wiki":"mediawikiwiki","gender": "unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Dinoguy1000","title":"Contributions/Dinoguy1000","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Dinoguy1000","title":"Dinoguy1000","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Dinoguy1000","title":"User talk:Dinoguy1000","exists":true,"_BC_bools":["exists"]}},"id":32187},"isNewPage":false,"replies":[]},"wau91ueripslcpgw":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wat4h7ei3oggv8r5","articleTitle":"Topic:Wat4h7ei3oggv8r5","revisionId":"wau91ueripslcpgw","timestamp":"20210614085121","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=history","title":"History","text":"History"},"topic":{"url": "//www.mediawiki.org/wiki/Topic:Wat4h7ei3oggv8r5","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topic_showPostId=wau91ueripslcpgw#flow-post-wau91ueripslcpgw","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topic_postId=wau91ueripslcpgw\u0026topic_revId=wau91ueripslcpgw\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"308"},"author":{"name":"TheDJ","wiki": "mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/TheDJ","title":"Contributions/TheDJ","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:TheDJ","title":"TheDJ","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:TheDJ","title":"User talk:TheDJ","exists":true,"_BC_bools":["exists"]}},"id":77414},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,308,0,0]}\"\u003EAlso most extensions are checked via \u003Ca rel=\"nofollow mw:ExtLink\" href=\"https://codesearch.wmcloud.org/search/\" class=\"external free\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;url\u0026quot;,\u0026quot;dsr\u0026quot;:[37,75,0,0]}\"\u003Ehttps://codesearch.wmcloud.org/search/\u003C/a\u003E in general, so this can only rly happen to extensions that have not been added to that. That service is managed \u003Ca rel=\"mw:ExtLink\" href=\"https://gerrit.wikimedia.org/g/labs/codesearch\" class=\"external free\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;url\u0026quot;,\u0026quot;dsr\u0026quot;:[188,234,0,0]}\"\u003Ehttps://gerrit.wikimedia.org/g/labs/codesearch\u003C/a\u003E and you can also file a phabricator ticket to get extensions added to it.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false, "replyToId":"wat4h7ei3oggv8r5","postId":"wau91ueripslcpgw","isMaxThreadingDepth":false,"creator":{"name":"TheDJ","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/TheDJ","title":"Contributions/TheDJ","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:TheDJ","title":"TheDJ","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:TheDJ","title":"User talk:TheDJ","exists":true,"_BC_bools":["exists"]}},"id":77414},"isNewPage":false,"replies":[]},"wauz98as9p4y9b9c":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wat4h7ei3oggv8r5","articleTitle":"Topic:Wat4h7ei3oggv8r5","revisionId":"wauz98as9p4y9b9c","timestamp":"20210614164154","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wat4h7ei3oggv8r5","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topic_showPostId=wauz98as9p4y9b9c#flow-post-wauz98as9p4y9b9c","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topic_postId=wauz98as9p4y9b9c\u0026topic_revId=wauz98as9p4y9b9c\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"414"},"author":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,243,0,0]}\"\u003E\"LTS\" is a commitment about MediaWiki itself, including the skins and extensions shipped in the \"tarball\". It's not a general commitment for all Wikimedia-authored extensions, and certainly not by the hundreds of independent extension authors.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[245,414,0,0]}\"\u003EIf you're using an extension that doesn't bother to keep current with MediaWiki except for LTSes, I'd very strongly counsel you to stop using it and find an alternative.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"wat4h7ei3oggv8r5","postId":"wauz98as9p4y9b9c","isMaxThreadingDepth":false,"creator":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title": "Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"isNewPage":false,"replies":[]},"wbu0nxco1fy01e1m":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"wat4h7ei3oggv8r5","articleTitle":"Topic:Wat4h7ei3oggv8r5","revisionId":"wbu0nxco1fy01e1m","timestamp":"20210630101214","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Wat4h7ei3oggv8r5","title":"topic","text":"topic"}, "post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topic_showPostId=wbu0nxco1fy01e1m#flow-post-wbu0nxco1fy01e1m","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026topic_postId=wbu0nxco1fy01e1m\u0026topic_revId=wbu0nxco1fy01e1m\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Wat4h7ei3oggv8r5\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"532"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url": "/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,178,0,0]}\"\u003E\"Long Term Support\" means WMF provides bug fixes and security fixes for two years. It provides no guarantees about backwards compatibility, and it never was intended to do that. \u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[180,532,0,0]}\"\u003EExtension developers who choose to only update their extension for LTS releases may see their extension not working with intermediate releases. If that was not the case, we couldn't make any \"major\" releases between LTS releases. The very definition of a major release is that it breaks backwards compatibility - otherwise, it would be a minor release.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"wat4h7ei3oggv8r5","postId":"wbu0nxco1fy01e1m","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown", "links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":[]},"x4bh4nf3pg1is7in":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"x4bh4nf3pe2ho5jj","articleTitle":"Topic:X4bh4nf3pe2ho5jj","revisionId":"x4bh4nf3pg1is7in","timestamp":"20221003181832","changeType":"new-post","dateFormats":[],"properties":{"topic-of-post":{},"topic-of-post-text-from-html":{}},"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=history","title": "History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X4bh4nf3pe2ho5jj","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_showPostId=x4bh4nf3pe2ho5jj#flow-post-x4bh4nf3pe2ho5jj","title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_revId=x4bh4nf3pg1is7in\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=reply\u0026topic_postId=x4bh4nf3pe2ho5jj#flow-post-x4bh4nf3pe2ho5jj-form-content","title":"Reply","text":"Reply"},"summarize":{ "url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"27"},"author":{"name":"Duesentrieb","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Duesentrieb","title":"Contributions/Duesentrieb","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Duesentrieb","title":"Duesentrieb","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Duesentrieb","title":"User talk:Duesentrieb","exists":true,"_BC_bools":["exists"]}},"id":10836},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"Deprecating config settings","format":"topic-title-html","plaintext":"Deprecating config settings"},"watchable":false,"replyToId":null,"postId":"x4bh4nf3pe2ho5jj","isMaxThreadingDepth":false ,"creator":{"name":"Duesentrieb","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Duesentrieb","title":"Contributions/Duesentrieb","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Duesentrieb","title":"Duesentrieb","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Duesentrieb","title":"User talk:Duesentrieb","exists":true,"_BC_bools":["exists"]}},"id":10836},"isNewPage":false,"replies":["x4bh4nf3pi0jw9hr","x4c8qhpjsq72vb0t","x4dt6tdt4tl80sbx","x4dt90rx6uf8x3bc","x4f9ow90kibydfdo","x4fbmnxp8dpfq99w","x4fyz61ual73unwv","x4hxius37f6g8o4q","x4ko1prigqnrrrx8"],"reply_count":9,"last_updated_readable":"21:21, 7 October 2022","last_updated":1665177672000},"x4bh4nf3pi0jw9hr":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"x4bh4nf3pe2ho5jj","articleTitle":"Topic:X4bh4nf3pe2ho5jj","revisionId": "x4bh4nf3pi0jw9hr","timestamp":"20221003181832","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X4bh4nf3pe2ho5jj","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_showPostId=x4bh4nf3pi0jw9hr#flow-post-x4bh4nf3pi0jw9hr","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_postId=x4bh4nf3pi0jw9hr\u0026topic_revId=x4bh4nf3pi0jw9hr\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=reply\u0026topic_postId=x4bh4nf3pi0jw9hr#flow-post-x4bh4nf3pi0jw9hr","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"631"},"author":{"name":"Duesentrieb","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Duesentrieb","title":"Contributions/Duesentrieb","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Duesentrieb","title":"Duesentrieb","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Duesentrieb","title":"User talk:Duesentrieb","exists":true,"_BC_bools":["exists"]}},"id":10836},"lastEditUser":{"name":null,"wiki":null,"gender" :"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,279,0,0]}\"\u003ESince 1.39, the installer will warn about the use of deprecated settings. But this only works as long as the declaration of the config setting is kept. Since people often upgrade from old versions after many years, it seems useful to keep the declaration around for a long time. \u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[281,461,0,0]}\"\u003EThe old setting can however be ignored. The deprecation warning can just say that the setting no longer works. We just need to declaration in place so the installer tells the user.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[463,631,0,0]}\"\u003EMaybe instead of using the \"deprecated\" flag in the schema, we should have an \"obsolete\" flag for settings that are no longer supported? We could keep them indefinitly.\u003C/p\u003E\u003C/section\u003E","format": "fixed-html"},"watchable":false,"replyToId":"x4bh4nf3pe2ho5jj","postId":"x4bh4nf3pi0jw9hr","isMaxThreadingDepth":false,"creator":{"name":"Duesentrieb","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Duesentrieb","title":"Contributions/Duesentrieb","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Duesentrieb","title":"Duesentrieb","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Duesentrieb","title":"User talk:Duesentrieb","exists":true,"_BC_bools":["exists"]}},"id":10836},"isNewPage":true,"replies":[]},"x4c8qhpjsq72vb0t":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"x4bh4nf3pe2ho5jj","articleTitle":"Topic:X4bh4nf3pe2ho5jj","revisionId":"x4c8qhpjsq72vb0t","timestamp":"20221004023415","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{ "topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X4bh4nf3pe2ho5jj","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_showPostId=x4c8qhpjsq72vb0t#flow-post-x4c8qhpjsq72vb0t","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_postId=x4c8qhpjsq72vb0t\u0026topic_revId=x4c8qhpjsq72vb0t\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=reply\u0026topic_postId=x4c8qhpjsq72vb0t#flow-post-x4c8qhpjsq72vb0t","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"107"},"author":{"name":"Legoktm","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Legoktm","title":"Contributions/Legoktm","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Legoktm","title":"Legoktm","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Legoktm","title":"User talk:Legoktm","exists":true,"_BC_bools":["exists"]}},"id":31711},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,107,0,0]}\"\u003EThis is a great idea, though it seems like we could do both? Warn on deprecation and for obsolete settings?\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"x4bh4nf3pe2ho5jj","postId":"x4c8qhpjsq72vb0t","isMaxThreadingDepth":false,"creator":{"name":"Legoktm","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Legoktm","title":"Contributions/Legoktm","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Legoktm","title":"Legoktm","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Legoktm","title":"User talk:Legoktm","exists":true,"_BC_bools":["exists"]}},"id":31711},"isNewPage":false,"replies":[]},"x4dt6tdt4tl80sbx":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth" ,"isNewPage"],"workflowId":"x4bh4nf3pe2ho5jj","articleTitle":"Topic:X4bh4nf3pe2ho5jj","revisionId":"x4dt6tdt4tl80sbx","timestamp":"20221004192757","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X4bh4nf3pe2ho5jj","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_showPostId=x4dt6tdt4tl80sbx#flow-post-x4dt6tdt4tl80sbx","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_postId=x4dt6tdt4tl80sbx\u0026topic_revId=x4dt6tdt4tl80sbx\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=watch", "title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=reply\u0026topic_postId=x4dt6tdt4tl80sbx#flow-post-x4dt6tdt4tl80sbx","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"389"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true, "_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,389,0,0]}\"\u003EYes, of course, it should do both! But deprecated settings would still work, while obsolete settings would be defunct. The idea here is to make the distinction explicit, and allow backwards compatibility code for old settings to be removed without breaking old installs without explanation. Being able to declare settings as obsolete will allow us to break old installs WITH explanation\u003Cspan typeof=\"mw:DisplaySpace\" data-parsoid=\"{\u0026quot;dsr\u0026quot;:[386,387,0,0]}\"\u003E \u003C/span\u003E;)\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"x4bh4nf3pe2ho5jj","postId": "x4dt6tdt4tl80sbx","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":[]},"x4dt90rx6uf8x3bc":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"x4bh4nf3pe2ho5jj","articleTitle":"Topic:X4bh4nf3pe2ho5jj","revisionId":"x4dt90rx6uf8x3bc","timestamp":"20221004192903","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X4bh4nf3pe2ho5jj","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_showPostId=x4dt90rx6uf8x3bc#flow-post-x4dt90rx6uf8x3bc","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_postId=x4dt90rx6uf8x3bc\u0026topic_revId=x4dt90rx6uf8x3bc\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=reply\u0026topic_postId=x4dt90rx6uf8x3bc#flow-post-x4dt90rx6uf8x3bc","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"138"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false ,"content":{"content":"\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,138,0,0]}\"\u003E(I just realized I have been editing here with two accounts - full disclosure: \u003Ca href=\"/wiki/User:Duesentrieb\" title=\"User:Duesentrieb\" rel=\"mw:WikiLink\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;simple\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./User:Duesentrieb\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;User:Duesentrieb\u0026quot;},\u0026quot;dsr\u0026quot;:[79,99,2,2]}\"\u003EUser:Duesentrieb\u003C/a\u003E is also me, that's my private account)\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"x4bh4nf3pe2ho5jj","postId":"x4dt90rx6uf8x3bc","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url": "/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":[]},"x4fyzgvkmljw167e":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"x4bh4nf3pe2ho5jj","articleTitle":"Topic:X4bh4nf3pe2ho5jj","revisionId":"x4fyzgvkmljw167e","timestamp":"20221005184453","changeType":"edit-post","dateFormats":[],"properties":[],"isOriginalContent":false,"isModerated":false,"links":{"post-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=history\u0026topic_postId=x4f9ow90kibydfdo","title":"History","text":"History"},"topic-history":{ "url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X4bh4nf3pe2ho5jj","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_showPostId=x4f9ow90kibydfdo#flow-post-x4f9ow90kibydfdo","title":"post","text":"post"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=compare-post-revisions\u0026topic_newRevision=x4fyzgvkmljw167e","title":"diff","text":"diff"},"diff-prev":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=compare-post-revisions\u0026topic_newRevision=x4fyzgvkmljw167e","title":"prev","text":"prev"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_postId=x4f9ow90kibydfdo\u0026topic_revId=x4fyzgvkmljw167e\u0026action=single-view","title":"post revision","text":"post revision"}}, "actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=reply\u0026topic_postId=x4f9ow90kibydfdo#flow-post-x4f9ow90kibydfdo","title":"Reply","text":"Reply"}},"size":{"old":"906","new":"183"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title": "DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditId":"x4fyzgvkmljw167e","previousRevisionId":"x4f9ow90kibydfdo","isLocked":false,"isModeratedNotLocked":false,"content":{"content":"\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,183,0,0]}\"\u003EI made a patch that introduces the an \"obsolete\" marker into MainConfigSchema, and uses it in the updater and structure tests:\n\u003Ca rel=\"mw:ExtLink\" href=\"https://gerrit.wikimedia.org/r/c/mediawiki/core/+/838769\" class=\"external free\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;url\u0026quot;,\u0026quot;dsr\u0026quot;:[127,183,0,0]}\"\u003Ehttps://gerrit.wikimedia.org/r/c/mediawiki/core/+/838769\u003C/a\u003E\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId": "x4bh4nf3pe2ho5jj","postId":"x4f9ow90kibydfdo","isMaxThreadingDepth":false,"creator":{"name":"Duesentrieb","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Duesentrieb","title":"Contributions/Duesentrieb","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Duesentrieb","title":"Duesentrieb","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Duesentrieb","title":"User talk:Duesentrieb","exists":true,"_BC_bools":["exists"]}},"id":10836},"isNewPage":false,"replies":[]},"x4fbmnxp8dpfq99w":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"x4bh4nf3pe2ho5jj","articleTitle":"Topic:X4bh4nf3pe2ho5jj","revisionId":"x4fbmnxp8dpfq99w","timestamp":"20221005114530","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X4bh4nf3pe2ho5jj","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_showPostId=x4fbmnxp8dpfq99w#flow-post-x4fbmnxp8dpfq99w","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_postId=x4fbmnxp8dpfq99w\u0026topic_revId=x4fbmnxp8dpfq99w\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=reply\u0026topic_postId=x4fbmnxp8dpfq99w#flow-post-x4fbmnxp8dpfq99w","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"562"},"author":{"name":"X-Savitar","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/X-Savitar","title":"Contributions/X-Savitar","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:X-Savitar","title":"X-Savitar","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:X-Savitar","title":"User talk:X-Savitar","exists":true,"_BC_bools":["exists"]}},"id":3353341},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,238,0,0]}\"\u003E\u003Cspan about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=\"{\u0026quot;pi\u0026quot;:[[{\u0026quot;k\u0026quot;:\u0026quot;1\u0026quot;}]],\u0026quot;dsr\u0026quot;:[0,30,null,null]}\" data-mw=\"{\u0026quot;parts\u0026quot;:[{\u0026quot;template\u0026quot;:{\u0026quot;target\u0026quot;:{\u0026quot;wt\u0026quot;:\u0026quot;FlowMention\u0026quot;,\u0026quot;href\u0026quot;:\u0026quot;./Template:FlowMention\u0026quot;},\u0026quot;params\u0026quot;:{\u0026quot;1\u0026quot;:{\u0026quot;wt\u0026quot;:\u0026quot;DKinzler (WMF)\u0026quot;}},\u0026quot;i\u0026quot;:0}}]}\"\u003E@\u003C/span\u003E\u003Ca href=\"/wiki/User:DKinzler_(WMF)\" title=\"User:DKinzler (WMF)\" rel=\"mw:WikiLink\" about=\"#mwt1\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;piped\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./User:DKinzler_(WMF)\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;User:DKinzler (WMF)\u0026quot;}}\"\u003EDKinzler (WMF)\u003C/a\u003E, I agree with you on the \"obsolete\" flag. It will inform 3rd party users to cleanup their LocalSettings.php and remove what is no longer needed for their installs (or update to the new ways of doing things).\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[240,446,0,0]}\"\u003ESince we can't know what outside user LocalSettings.php looks like, this a good strategy to keep things clean on their own side too, which after sometime, cleaning up these configs from core would be safer.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[448,562,0,0]}\"\u003EBut the thing is, how long do we want to keep the deprecated configs? 2, 5 or 10 years before completely removing?\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"x4bh4nf3pe2ho5jj","postId":"x4fbmnxp8dpfq99w","isMaxThreadingDepth":false,"creator":{"name":"X-Savitar","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/X-Savitar","title":"Contributions/X-Savitar","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:X-Savitar","title":"X-Savitar","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:X-Savitar","title":"User talk:X-Savitar","exists":true,"_BC_bools":["exists"]}},"id":3353341},"isNewPage":false,"replies":[]},"x4fz3vnu9lz58nte":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"x4bh4nf3pe2ho5jj","articleTitle":"Topic:X4bh4nf3pe2ho5jj","revisionId":"x4fz3vnu9lz58nte","timestamp":"20221005184705","changeType":"edit-post","dateFormats":[],"properties":[],"isOriginalContent":false,"isModerated":false,"links":{ "post-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=history\u0026topic_postId=x4fyz61ual73unwv","title":"History","text":"History"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X4bh4nf3pe2ho5jj","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_showPostId=x4fyz61ual73unwv#flow-post-x4fyz61ual73unwv","title":"post","text":"post"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=compare-post-revisions\u0026topic_newRevision=x4fz3vnu9lz58nte","title":"diff","text":"diff"},"diff-prev":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=compare-post-revisions\u0026topic_newRevision=x4fz3vnu9lz58nte","title":"prev","text":"prev"},"post-revision":{"url": "//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_postId=x4fyz61ual73unwv\u0026topic_revId=x4fz3vnu9lz58nte\u0026action=single-view","title":"post revision","text":"post revision"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=reply\u0026topic_postId=x4fyz61ual73unwv#flow-post-x4fyz61ual73unwv","title":"Reply","text":"Reply"}},"size":{"old":"719","new":"1056"},"author":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditUser":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links" :{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"lastEditId":"x4fz3vnu9lz58nte","previousRevisionId":"x4fyz61ual73unwv","isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,408,0,0]}\"\u003EWith this mechanism in place, we could start to remove backwards compat code for deprecated settings more agressively, after or two releases, like other deprecated code. The declaration of the obsolete setting would need to be kept for as long as we support upgrading from a revision where the setting was not deprecated (but not before two LTS releases from now, because older versions don't emit warnings).\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[410,764,0,0]}\"\u003EI.e. if in 1.44 we drop support for upgrading from 1.35, we can remove all obsolete config that has been deprecated since at least 1.35.\nThis would be safe since when upgrading to 1.44 from a version \u0026gt; 1.35, you'd see the warnings. And when upgrading from an older version, you'd have to upgrade to a version \u0026lt; 1.44 first, so you'd also see the warnings.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[766,1056,0,0]}\"\u003ESince we currently guarantee updates across two LTS releases, and we do an LTS release every other year, this would come to four to five years from deprecation to full removal. The b/c code could already be removed after about a year, though, moving the seeting from deprecated to obsolete.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"x4bh4nf3pe2ho5jj","postId":"x4fyz61ual73unwv","isMaxThreadingDepth":false,"creator":{"name":"DKinzler (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DKinzler_(WMF)","title":"Contributions/DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DKinzler_(WMF)","title":"DKinzler (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DKinzler_(WMF)","title":"User talk:DKinzler (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14969248},"isNewPage":false,"replies":[]},"x4hxius37f6g8o4q":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"x4bh4nf3pe2ho5jj","articleTitle":"Topic:X4bh4nf3pe2ho5jj","revisionId":"x4hxius37f6g8o4q","timestamp":"20221006155130","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent": true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X4bh4nf3pe2ho5jj","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_showPostId=x4hxius37f6g8o4q#flow-post-x4hxius37f6g8o4q","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_postId=x4hxius37f6g8o4q\u0026topic_revId=x4hxius37f6g8o4q\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=reply\u0026topic_postId=x4hxius37f6g8o4q#flow-post-x4hxius37f6g8o4q","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"211"},"author":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]}},"id":574543},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false, "isModeratedNotLocked":false,"content":{"content":"\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,211,0,0]}\"\u003ESomething that more interactively helps sysadmins when upgrading to know what config they need to update/remove would be really great, rather than hoping that people carefully read the upgrade notes. Great plan.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"x4bh4nf3pe2ho5jj","postId":"x4hxius37f6g8o4q","isMaxThreadingDepth":false,"creator":{"name":"Jdforrester (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdforrester_(WMF)","title":"Contributions/Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdforrester_(WMF)","title":"Jdforrester (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdforrester_(WMF)","title":"User talk:Jdforrester (WMF)", "exists":true,"_BC_bools":["exists"]}},"id":574543},"isNewPage":false,"replies":[]},"x4ko2unv5ynmevne":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"x4bh4nf3pe2ho5jj","articleTitle":"Topic:X4bh4nf3pe2ho5jj","revisionId":"x4ko2unv5ynmevne","timestamp":"20221007212112","changeType":"edit-post","dateFormats":[],"properties":[],"isOriginalContent":false,"isModerated":false,"links":{"post-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=history\u0026topic_postId=x4ko1prigqnrrrx8","title":"History","text":"History"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:X4bh4nf3pe2ho5jj","title":"topic","text":"topic"},"post":{"url": "//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_showPostId=x4ko1prigqnrrrx8#flow-post-x4ko1prigqnrrrx8","title":"post","text":"post"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=compare-post-revisions\u0026topic_newRevision=x4ko2unv5ynmevne","title":"diff","text":"diff"},"diff-prev":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=compare-post-revisions\u0026topic_newRevision=x4ko2unv5ynmevne","title":"prev","text":"prev"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026topic_postId=x4ko1prigqnrrrx8\u0026topic_revId=x4ko2unv5ynmevne\u0026action=single-view","title":"post revision","text":"post revision"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:X4bh4nf3pe2ho5jj\u0026action=reply\u0026topic_postId=x4bh4nf3pe2ho5jj#flow-post-x4bh4nf3pe2ho5jj","title":"Reply","text":"Reply"}},"size":{"old":"395","new":"452"},"author": {"name":"DAlangi (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DAlangi_(WMF)","title":"Contributions/DAlangi (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DAlangi_(WMF)","title":"DAlangi (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DAlangi_(WMF)","title":"User talk:DAlangi (WMF)","exists":true,"_BC_bools":["exists"]}},"id":12986234},"lastEditUser":{"name":"DAlangi (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DAlangi_(WMF)","title":"Contributions/DAlangi (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DAlangi_(WMF)","title":"DAlangi (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DAlangi_(WMF)","title":"User talk:DAlangi (WMF)","exists":true,"_BC_bools":["exists"]}},"id":12986234},"lastEditId":"x4ko2unv5ynmevne","previousRevisionId":"x4ko1prigqnrrrx8", "isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,235,0,0]}\"\u003E\u003Cspan about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=\"{\u0026quot;pi\u0026quot;:[[{\u0026quot;k\u0026quot;:\u0026quot;1\u0026quot;}]],\u0026quot;dsr\u0026quot;:[0,33,null,null]}\" data-mw=\"{\u0026quot;parts\u0026quot;:[{\u0026quot;template\u0026quot;:{\u0026quot;target\u0026quot;:{\u0026quot;wt\u0026quot;:\u0026quot;FlowMention\u0026quot;,\u0026quot;href\u0026quot;:\u0026quot;./Template:FlowMention\u0026quot;},\u0026quot;params\u0026quot;:{\u0026quot;1\u0026quot;:{\u0026quot;wt\u0026quot;:\u0026quot;Jdforrester (WMF)\u0026quot;}},\u0026quot;i\u0026quot;:0}}]}\"\u003E@\u003C/span\u003E\u003Ca href=\"/wiki/User:Jdforrester_(WMF)\" title=\"User:Jdforrester (WMF)\" rel=\"mw:WikiLink\" about=\"#mwt1\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;piped\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./User:Jdforrester_(WMF)\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;User:Jdforrester (WMF)\u0026quot;}}\"\u003EJdforrester (WMF)\u003C/a\u003E, you captured it very well and I like how you put it. In this case, we're guiding the customer/end-users on how to configure their wikis and what to remove which is no longer needed for/after upgrades.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[237,452,0,0]}\"\u003EI think a lot of sysadmins will be happy to see this feature (as here we're putting MW users again on the front line) and it'll make their life a whole lot easier when managing those giant LocalSettings.php files\u003Cspan typeof=\"mw:DisplaySpace\" data-parsoid=\"{\u0026quot;dsr\u0026quot;:[449,450,0,0]}\"\u003E \u003C/span\u003E:)\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"x4bh4nf3pe2ho5jj","postId":"x4ko1prigqnrrrx8","isMaxThreadingDepth":false,"creator":{"name":"DAlangi (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DAlangi_(WMF)","title":"Contributions/DAlangi (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DAlangi_(WMF)","title":"DAlangi (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DAlangi_(WMF)","title":"User talk:DAlangi (WMF)","exists":true,"_BC_bools":["exists"]}},"id":12986234},"isNewPage":false,"replies":[]},"xnhwqmzsfs5bswms":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"xnhwqmzsfq6aouno","articleTitle":"Topic:Xnhwqmzsfq6aouno","revisionId":"xnhwqmzsfs5bswms","timestamp":"20230809165529","changeType":"new-post","dateFormats":[],"properties":{"topic-of-post":{}, "topic-of-post-text-from-html":{}},"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Xnhwqmzsfq6aouno","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026topic_showPostId=xnhwqmzsfq6aouno#flow-post-xnhwqmzsfq6aouno","title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026topic_revId=xnhwqmzsfs5bswms\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=reply\u0026topic_postId=xnhwqmzsfq6aouno#flow-post-xnhwqmzsfq6aouno-form-content","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"46"},"author":{"name":"Jdlrobson","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdlrobson","title":"Contributions/Jdlrobson","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdlrobson","title":"Jdlrobson","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdlrobson","title":"User talk:Jdlrobson","exists":true,"_BC_bools":["exists"]}},"id":446645},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "Suggestion: Change author and user terminology","format":"topic-title-html","plaintext":"Suggestion: Change author and user terminology"},"watchable":false,"replyToId":null,"postId":"xnhwqmzsfq6aouno","isMaxThreadingDepth":false,"creator":{"name":"Jdlrobson","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdlrobson","title":"Contributions/Jdlrobson","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdlrobson","title":"Jdlrobson","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdlrobson","title":"User talk:Jdlrobson","exists":true,"_BC_bools":["exists"]}},"id":446645},"isNewPage":false,"replies":["xnhwqmzsfu4cwylw","xniinbe057yw6q3l"],"reply_count":2,"last_updated_readable":"23:28, 9 August 2023","last_updated":1691623732000},"xnhwqmzsfu4cwylw":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId": "xnhwqmzsfq6aouno","articleTitle":"Topic:Xnhwqmzsfq6aouno","revisionId":"xnhwqmzsfu4cwylw","timestamp":"20230809165529","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Xnhwqmzsfq6aouno","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026topic_showPostId=xnhwqmzsfu4cwylw#flow-post-xnhwqmzsfu4cwylw","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026topic_postId=xnhwqmzsfu4cwylw\u0026topic_revId=xnhwqmzsfu4cwylw\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=watch","title":"Watch","text":"Watch"} ,"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=reply\u0026topic_postId=xnhwqmzsfu4cwylw#flow-post-xnhwqmzsfu4cwylw","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"459"},"author":{"name":"Jdlrobson","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdlrobson","title":"Contributions/Jdlrobson","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdlrobson","title":"Jdlrobson","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdlrobson","title":"User talk:Jdlrobson","exists":true,"_BC_bools":["exists"]}},"id":446645},"lastEditUser":{"name":null,"wiki":null, "gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"\u003Csection data-mw-section-id=\"0\" id=\"mwAQ\"\u003E\u003Cp id=\"mwAg\"\u003EWhile working on a frontend equivalent of this policy, the names \"provider\" and \"consumer\" were proposed. In this document we currently have \"author\" and \"user\" to mean the same.\u003C/p\u003E\n\n\u003Cp id=\"mwAw\"\u003EThese words seem overloaded given an \"author\" could mean many things - such as editing documentation, editing wiki pages. A \"user\" could be interpreted as a user of the code.\u003C/p\u003E\n\n\u003Cp id=\"mwBA\"\u003EHow about we change all instances of \"author\" to \"provider\" and all instances of \"user\" to \"consumer\"\u003Cspan typeof=\"mw:DisplaySpace\" id=\"mwBQ\"\u003E \u003C/span\u003E?\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"xnhwqmzsfq6aouno","postId": "xnhwqmzsfu4cwylw","isMaxThreadingDepth":false,"creator":{"name":"Jdlrobson","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Jdlrobson","title":"Contributions/Jdlrobson","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Jdlrobson","title":"Jdlrobson","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Jdlrobson","title":"User talk:Jdlrobson","exists":true,"_BC_bools":["exists"]}},"id":446645},"isNewPage":true,"replies":[]},"xniinbe057yw6q3l":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"xnhwqmzsfq6aouno","articleTitle":"Topic:Xnhwqmzsfq6aouno","revisionId":"xniinbe057yw6q3l","timestamp":"20230809232852","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Xnhwqmzsfq6aouno","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026topic_showPostId=xniinbe057yw6q3l#flow-post-xniinbe057yw6q3l","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026topic_postId=xniinbe057yw6q3l\u0026topic_revId=xniinbe057yw6q3l\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=reply\u0026topic_postId=xnhwqmzsfq6aouno#flow-post-xnhwqmzsfq6aouno","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Xnhwqmzsfq6aouno\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"2685"},"author":{"name":"Krinkle","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Krinkle","title":"Contributions/Krinkle","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Krinkle","title":"Krinkle","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Krinkle","title":"User talk:Krinkle","exists":true,"_BC_bools":["exists"]}},"id":135822},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" id=\"mwAQ\"\u003E\u003Cblockquote id=\"mwAg\"\u003E\u003Cp id=\"mwAw\"\u003EThese words seem overloaded\u003C/p\u003E\u003C/blockquote\u003E\n\n\u003Cp id=\"mwBA\"\u003EThis document is addressed to a software development context. Do you think there is ambiguity in this context for who the author of a code interface is, or who the user of a code interface is?\u003C/p\u003E\n\n\u003Cp id=\"mwBQ\"\u003EIn your experience browsing GitHub issue trackers and npm READMEs, do you find that people don't often use and understand terms like \"author\" and \"user\", or that these caused confusion? Perhaps an alternate set of terms is more often there that we could borrow from?\u003C/p\u003E\n\n\u003Cp id=\"mwBg\"\u003EIf we remove context from the equation, I believe it would be very challenging to find a term that is well known (i.e. not too novel, or unknown to \u003Ca rel=\"mw:WikiLink/Interwiki\" href=\"https://en.wikipedia.org/wiki/English_as_a_second_or_foreign_language\" title=\"en:English as a second or foreign language\" class=\"extiw\" id=\"mwBw\"\u003EESLs\u003C/a\u003E), easily understood, and ambigious regardless of context.\u003C/p\u003E\n\n\u003Cp id=\"mwCA\"\u003EThe word \"consumer\" seems certainly ambigious. Like \"user\", a \"customer\" often refers the end-user (possibly more often?). In my own experience, I find developers of open source software more often refer to themselves as \"users\" than as \"consumers\". (Most often would be \"developer\", but I mean cases where another term is used to disambiguate.) The term \"consumer\" might be a bit too corporate-y for FLOSS culture? Businesses and commerical enterprises refer to their users as customers.\u003C/p\u003E\n\n\u003Cp id=\"mwCQ\"\u003ECompanies also tend to think of, and present, themselves as \"provider\" when they create software or services. This too carries a similar ambiguity. E.g. software consultancies that build WP or MW plugins, WordPress and MediaWiki hosting providers, companies like BlueSpice. I imagine most every developer working as user of MediaWiki core to build an extension, is providing \u003Ci id=\"mwCg\"\u003Esomething\u003C/i\u003E to \u003Ci id=\"mwCw\"\u003Esomeone\u003C/i\u003E. Even if merely as hoster of your own wiki with a custom extension, you'd be the site/content provider building on MW software. If I drop \"Who is your provider?\" in an unspecified technology-adjacent context, I think one tends to think first of web hosting, ISP, and telecom companies; Not easily would I think of the author of one of our npm dependencies, from whom I use the stable interface.\u003C/p\u003E\n\n\u003Cp id=\"mwDA\"\u003EI'm not arguing that \"provider\" is unclear, but I do think, if we ignore the document context, that it is certainly ambigious. I feel the term \"provider\" also feels a bit less personal and human than an \"author\".\u003C/p\u003E\n\n\u003Cp id=\"mwDQ\"\u003ENote that we use term author a fair bit in our technical writing when we talk about ourselves as the authors (or \"maintainers\") of software, including AUTHORS.txt attribution, Git commit authors, author credits from extension.json for Special:Version, and more in \u003Ca rel=\"mw:ExtLink\" href=\"https://www.mediawiki.org/w/index.php?search=author\u0026amp;title=Special%3ASearch\u0026amp;profile=advanced\u0026amp;fulltext=1\u0026amp;ns0=1\u0026amp;ns12=1\u0026amp;ns100=1\u0026amp;ns104=1\" class=\"external text\" id=\"mwDg\"\u003Esearch\u003C/a\u003E.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"xnhwqmzsfq6aouno","postId":"xniinbe057yw6q3l","isMaxThreadingDepth":false,"creator":{"name":"Krinkle","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Krinkle","title":"Contributions/Krinkle","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Krinkle","title":"Krinkle","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Krinkle","title":"User talk:Krinkle","exists":true,"_BC_bools":["exists"]}},"id":135822},"isNewPage":false,"replies":[]}},"workflowId":"v7uq1wrt12w9ygjd","title":"Talk:Stable interface policy","actions":{"newtopic":{"url":"//www.mediawiki.org/w/index.php?title=Talk:Stable_interface_policy\u0026action=new-topic","title":"Start a new topic","text":"Start a new topic"}},"links":{"board-sort":{"updated":"/w/index.php?title=Talk:Stable_interface_policy\u0026topiclist_sortby=updated\u0026topiclist_savesortby=1","newest": "/w/index.php?title=Talk:Stable_interface_policy\u0026topiclist_sortby=newest\u0026topiclist_savesortby=1"},"newtopic":"/w/index.php?title=Talk:Stable_interface_policy\u0026action=new-topic","pagination":{"fwd":{"url":"//www.mediawiki.org/w/index.php?title=Talk:Stable_interface_policy\u0026topiclist_offset-dir=fwd\u0026topiclist_limit=10\u0026topiclist_offset=20210429181013\u0026topiclist_sortby=updated","title":"fwd","text":"fwd"}}},"type":"topiclist","block-action-template":"","editToken":null,"editFont":"monospace"}},"isWatched":false,"watchable":false,"links":{"watch-board":{"url":"/w/index.php?title=Talk:Stable_interface_policy\u0026action=watch"},"unwatch-board":{"url":"/w/index.php?title=Talk:Stable_interface_policy\u0026action=unwatch"}},"toc":{"submitted":{"action":"view","toconly":true,"limit":50,"sortby":"updated"},"errors":[],"sortby":"updated","type":"topiclist","roots":["yf7yr7tz4ydt87hv","xnhwqmzsfq6aouno","xasmxgagzbf0mtjj","x4bh4nf3pe2ho5jj","x34wraaili56q6xy", "wie8zpaqfzrvs6jd","wat4h7ei3oggv8r5","w80nioabt7zac76z","wa46yy9k39w4qodc","w80n8ilmvc2k57bp","vuogcw8f5rtq3tm0","vrwr9aloe6y1bi2v","vqaxd8a785zc8u88","vgluke82maznuj1w","v7uq1wrt14vb2iih","v8xg1u6jjd92gnxu","vd90alkkvhnscfak","vela7ykweg4nk7a7"],"posts":{"yf7yr7tz4ydt87hv":["yf7yr7tz50cuc9gz"],"xnhwqmzsfq6aouno":["xnhwqmzsfs5bswms"],"xasmxgagzbf0mtjj":["xasmxgagzde1qvin"],"x4bh4nf3pe2ho5jj":["x4bh4nf3pg1is7in"],"x34wraaili56q6xy":["x34wraailk47u8x2"],"wie8zpaqfzrvs6jd":["wie8zpaqg1qww8ih"],"wat4h7ei3oggv8r5":["wie7ldpi4k9v7ib1"],"w80nioabt7zac76z":["w80nioabt9ybg963"],"wa46yy9k39w4qodc":["wbu08q0x3andvp01"],"w80n8ilmvc2k57bp":["w80n8ilmve1l99at"],"vuogcw8f5rtq3tm0":["w80mwr6b77owwg8e"],"vrwr9aloe6y1bi2v":["w80mvg9fan91rze8"],"vqaxd8a785zc8u88":["w80muzf5gffqcsy7"],"vgluke82maznuj1w":["vrxoo0b77irz0nl7"],"v7uq1wrt14vb2iih":["vhe7m5pdgzyuexxj"],"v8xg1u6jjd92gnxu":["vhe7jzijrhtrordy"],"vd90alkkvhnscfak":["vhe7hoij1d70qq6g"],"vela7ykweg4nk7a7":["vhe7a4nl61xbnwbl"]},"revisions":{ "yf7yr7tz50cuc9gz":{"content":{"content":"Hard deprecation, release notes requirements","format":"topic-title-wikitext","plaintext":"Hard deprecation, release notes requirements"},"last_updated":1730317114000,"isModerated":false},"xnhwqmzsfs5bswms":{"content":{"content":"Suggestion: Change author and user terminology","format":"topic-title-wikitext","plaintext":"Suggestion: Change author and user terminology"},"last_updated":1691623732000,"isModerated":false},"xasmxgagzde1qvin":{"content":{"content":"removing class aliases","format":"topic-title-wikitext","plaintext":"removing class aliases"},"last_updated":1673918157000,"isModerated":false},"x4bh4nf3pg1is7in":{"content":{"content":"Deprecating config settings","format":"topic-title-wikitext","plaintext":"Deprecating config settings"},"last_updated":1665177672000,"isModerated":false},"x34wraailk47u8x2":{"content":{"content":"Deprecation process and translatewiki","format":"topic-title-wikitext","plaintext": "Deprecation process and translatewiki"},"last_updated":1663458371000,"isModerated":false},"wie8zpaqg1qww8ih":{"content":{"content":"Documenting widening of parameter types","format":"topic-title-wikitext","plaintext":"Documenting widening of parameter types"},"last_updated":1634210353000,"isModerated":false},"wie7ldpi4k9v7ib1":{"content":{"content":"Deprecation of code and LTS releases","format":"topic-title-wikitext","plaintext":"Deprecation of code and LTS releases"},"last_updated":1634208847000,"isModerated":true,"moderateState":"lock"},"w80nioabt9ybg963":{"content":{"content":"Removing obsolete unused behavior without delay","format":"topic-title-wikitext","plaintext":"Removing obsolete unused behavior without delay"},"last_updated":1625048307000,"isModerated":false},"wbu08q0x3andvp01":{"content":{"content":"Removing @stable on soft deprecation","format":"topic-title-wikitext","plaintext":"Removing @stable on soft deprecation"},"last_updated":1625047479000,"isModerated":true, "moderateState":"lock"},"w80n8ilmve1l99at":{"content":{"content":"Deprecation on master while a release is being prepared","format":"topic-title-wikitext","plaintext":"Deprecation on master while a release is being prepared"},"last_updated":1619719813000,"isModerated":false},"w80mwr6b77owwg8e":{"content":{"content":"Use of traits","format":"topic-title-wikitext","plaintext":"Use of traits"},"last_updated":1619719461000,"isModerated":true,"moderateState":"lock"},"w80mvg9fan91rze8":{"content":{"content":"Confusion about the timeline for removing deprecated code","format":"topic-title-wikitext","plaintext":"Confusion about the timeline for removing deprecated code"},"last_updated":1619719422000,"isModerated":true,"moderateState":"lock"},"w80muzf5gffqcsy7":{"content":{"content":"Deprecation of Hooks","format":"topic-title-wikitext","plaintext":"Deprecation of Hooks"},"last_updated":1619719408000,"isModerated":true,"moderateState":"lock"},"vrxoo0b77irz0nl7":{"content":{"content":"Doxygen?", "format":"topic-title-wikitext","plaintext":"Doxygen?"},"last_updated":1597264379000,"isModerated":true,"moderateState":"lock"},"vhe7m5pdgzyuexxj":{"content":{"content":"Why not a part of the existing deprecation policy?","format":"topic-title-wikitext","plaintext":"Why not a part of the existing deprecation policy?"},"last_updated":1582546192000,"isModerated":true,"moderateState":"lock"},"vhe7jzijrhtrordy":{"content":{"content":"Legacy functions that are implicitly public due to not having visibility modifiers are not considered public by this policy","format":"topic-title-wikitext","plaintext":"Legacy functions that are implicitly public due to not having visibility modifiers are not considered public by this policy"},"last_updated":1582546127000,"isModerated":true,"moderateState":"lock"},"vhe7hoij1d70qq6g":{"content":{"content":"Some thoughts about simplifying annotations","format":"topic-title-wikitext","plaintext":"Some thoughts about simplifying annotations"},"last_updated": 1582546058000,"isModerated":true,"moderateState":"lock"},"vhe7a4nl61xbnwbl":{"content":{"content":"Exception for things that are not called by public code","format":"topic-title-wikitext","plaintext":"Exception for things that are not called by public code"},"last_updated":1582545832000,"isModerated":true,"moderateState":"lock"}},"links":{"pagination":[]}}},"wgEditSubmitButtonLabelPublish":true,"wgCentralAuthMobileDomain":false,"wgULSPosition":"personal","wgULSisCompactLinksEnabled":true,"wgVector2022LanguageInHeader":false,"wgULSisLanguageSelectorEmpty":true,"wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"]};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","oojs-ui-core.styles":"ready","oojs-ui.styles.indicators":"ready","mediawiki.widgets.styles":"ready","oojs-ui-core.icons":"ready", "mediawiki.ui":"ready","mediawiki.ui.button":"ready","mediawiki.ui.input":"ready","mediawiki.ui.icon":"ready","mediawiki.special.changeslist":"ready","mediawiki.interface.helpers.styles":"ready","mediawiki.editfont.styles":"ready","ext.flow.styles.base":"ready","ext.flow.mediawiki.ui.form":"ready","oojs-ui.styles.icons-alerts":"ready","oojs-ui.styles.icons-content":"ready","oojs-ui.styles.icons-layout":"ready","oojs-ui.styles.icons-movement":"ready","oojs-ui.styles.icons-interactions":"ready","oojs-ui.styles.icons-editing-core":"ready","oojs-ui.styles.icons-moderation":"ready","mediawiki.skinning.content.parsoid":"ready","ext.cite.parsoid.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.pt":"ready","ext.wikimediaBadges":"ready","ext.jsonConfig":"ready"};RLPAGEMODULES=["ext.flow","site","mediawiki.page.ready", "skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.thanks.flowthank","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.compactlinks","ext.uls.interface","ext.checkUser.clientHints"];</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&amp;modules=ext.cite.parsoid.styles%7Cext.flow.mediawiki.ui.form%7Cext.flow.styles.base%7Cext.jsonConfig%2CwikimediaBadges%7Cext.uls.pt%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cmediawiki.editfont.styles%7Cmediawiki.interface.helpers.styles%7Cmediawiki.skinning.content.parsoid%7Cmediawiki.special.changeslist%7Cmediawiki.ui%7Cmediawiki.ui.button%2Cicon%2Cinput%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.icons-alerts%2Cicons-content%2Cicons-editing-core%2Cicons-interactions%2Cicons-layout%2Cicons-moderation%2Cicons-movement%2Cindicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;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:site_name" content="MediaWiki"> <meta property="og:title" content="Talk:Stable interface policy - MediaWiki"> <meta property="og:type" content="website"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//m.mediawiki.org/wiki/Talk:Stable_interface_policy"> <link rel="alternate" type="application/x-wiki" title="Edit" href="/w/index.php?title=Talk:Stable_interface_policy&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/mediawiki.png"> <link rel="icon" href="/static/favicon/mediawiki.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="MediaWiki (en)"> <link rel="EditURI" type="application/rsd+xml" href="//www.mediawiki.org/w/api.php?action=rsd"> <link rel="canonical" href="https://www.mediawiki.org/wiki/Talk:Stable_interface_policy"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"> <link rel="alternate" type="application/atom+xml" title="MediaWiki Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-1 ns-talk mw-editable page-Talk_Stable_interface_policy rootpage-Talk_Stable_interface_policy 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/MediaWiki" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-mw-download" class="mw-list-item"><a href="/wiki/Download"><span>Get MediaWiki</span></a></li><li id="n-mw-extensions" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Category:Extensions"><span>Get extensions</span></a></li><li id="n-blog-text" class="mw-list-item"><a href="https://techblog.wikimedia.org/"><span>Tech blog</span></a></li><li id="n-mw-contribute" class="mw-list-item"><a href="/wiki/Special:MyLanguage/How_to_contribute"><span>Contribute</span></a></li> </ul> </div> </div> <div id="p-support" class="vector-menu mw-portlet mw-portlet-support" > <div class="vector-menu-heading"> Support </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Help:Contents" title="The place to find out"><span>User help</span></a></li><li id="n-mw-faq" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Manual:FAQ"><span>FAQ</span></a></li><li id="n-mw-manual" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Manual:Contents"><span>Technical manual</span></a></li><li id="n-mw-supportdesk" class="mw-list-item"><a href="/wiki/Project:Support_desk"><span>Support desk</span></a></li><li id="n-mw-communication" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Communication"><span>Communication</span></a></li> </ul> </div> </div> <div id="p-development" class="vector-menu mw-portlet mw-portlet-development" > <div class="vector-menu-heading"> Development </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mw-developerportal" class="mw-list-item"><a href="https://developer.wikimedia.org/"><span>Developer portal</span></a></li><li id="n-svn-statistics" class="mw-list-item"><a href="/wiki/Development_statistics"><span>Code statistics</span></a></li> </ul> </div> </div> <div id="p-mediawiki.org" class="vector-menu mw-portlet mw-portlet-mediawiki_org" > <div class="vector-menu-heading"> mediawiki.org </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-portal" class="mw-list-item"><a href="/wiki/Project:Help" title="About the project, what you can do, where to find things"><span>Community portal</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-mw-translate" class="mw-list-item"><a href="/wiki/Special:LanguageStats"><span>Translate content</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Load a random page [x]" accesskey="x"><span>Random page</span></a></li><li id="n-mw-discussion" class="mw-list-item"><a href="/wiki/Project:Village_Pump"><span>Village pump</span></a></li><li id="n-Sandboxlink-portlet-label" class="mw-list-item"><a href="/wiki/Project:Sandbox"><span>Sandbox</span></a></li> </ul> </div> </div> <div id="vector-main-menu" class="vector-menu " > <div class="vector-menu-heading"> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/MediaWiki" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/mediawikiwiki.svg" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="MediaWiki" src="/static/images/mobile/copyright/mediawikiwiki-wordmark.svg" style="width: 7.5em; height: 1.125em;"> </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 MediaWiki [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 MediaWiki" aria-label="Search MediaWiki" autocapitalize="sentences" title="Search MediaWiki [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&#039;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&amp;utm_medium=sidebar&amp;utm_campaign=spontaneous&amp;uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&amp;returnto=Talk%3AStable+interface+policy" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</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&amp;returnto=Talk%3AStable+interface+policy" 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" 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&amp;utm_medium=sidebar&amp;utm_campaign=spontaneous&amp;uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&amp;returnto=Talk%3AStable+interface+policy" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Talk%3AStable+interface+policy" 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 id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</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"><!-- CentralNotice --></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> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <h1 id="firstHeading" class="firstHeading mw-first-heading">Talk:Stable interface policy</h1> <div class="mw-indicators"> </div> </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="vector-tab-noicon mw-list-item"><a href="/wiki/Stable_interface_policy" title="View the content page [c]" accesskey="c"><span>Page</span></a></li><li id="ca-talk" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Stable_interface_policy" 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-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Talk:Stable_interface_policy&amp;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-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Talk:Stable_interface_policy&amp;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/Talk:Stable_interface_policy" 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/Talk:Stable_interface_policy" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="//commons.wikimedia.org/wiki/Special:UploadWizard" title="Upload files [u]" accesskey="u"><span>Upload file</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-info" class="mw-list-item"><a href="/w/index.php?title=Talk:Stable_interface_policy&amp;action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&amp;url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FTalk%3AStable_interface_policy"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&amp;url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FTalk%3AStable_interface_policy"><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&amp;bookcmd=book_creator&amp;referer=Talk%3AStable+interface+policy"><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&amp;page=Talk%3AStable_interface_policy&amp;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=Talk:Stable_interface_policy&amp;printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects emptyPortlet" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </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> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="flow-component flow-board-page mw-content-ltr flow-action-view" data-flow-component="board" data-flow-id="v7uq1wrt12w9ygjd"> <div class="flow-board-header flow-load-interactive" data-flow-load-handler="loadSideRail"> <h2 class="flow-board-header-title mw-ui-icon mw-ui-icon-before mw-ui-icon-speechBubbles"> About this board </h2> <div class="flow-error-container"> </div> <div id='flow-board-description' class='oo-ui-widget oo-ui-widget-enabled flow-ui-boardDescriptionWidget flow-ui-boardDescriptionWidget-nojs'><div><span class='flow-ui-boardDescriptionWidget-editButton oo-ui-widget oo-ui-widget-enabled oo-ui-buttonElement oo-ui-buttonElement-frameless oo-ui-iconElement oo-ui-labelElement oo-ui-flaggedElement-progressive oo-ui-buttonWidget'><a role='button' tabindex='0' href='//www.mediawiki.org/w/index.php?title=Talk:Stable_interface_policy&amp;action=edit-header' rel='nofollow' class='oo-ui-buttonElement-button'><span class='oo-ui-iconElement-icon oo-ui-icon-edit oo-ui-image-progressive'></span><span class='oo-ui-labelElement-label'>Edit description</span><span class='oo-ui-indicatorElement-indicator oo-ui-indicatorElement-noIndicator oo-ui-image-progressive'></span></a></span></div><div class='flow-ui-boardDescriptionWidget-content mw-parser-output'></div></div> <a href="javascript:void(0);" role="button" class="mw-ui-button mw-ui-quiet side-rail-toggle-button" data-flow-interactive-handler="toggleSideRail"> <span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-close pull-right collapse-button" title="Hide description"></span> <span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-speechBubbles pull-right expand-button" title="Show description"></span> </a> <div class="flow-board-header-footer"> <hr /> <p> </p> </div> </div> <div class="flow-board-navigation" data-flow-load-handler="boardNavigation"> <div class="flow-error-container"> </div> </div> <div class="flow-board" data-flow-sortby="updated"> <div class="flow-newtopic-container"> <div class="flow-nojs"> <a class="mw-ui-input mw-ui-input-large flow-ui-input-replacement-anchor" href="/w/index.php?title&#x3D;Talk:Stable_interface_policy&amp;action&#x3D;new-topic">Start a new topic</a> </div> <div class="flow-js"> <form action="//www.mediawiki.org/w/index.php?title&#x3D;Talk:Stable_interface_policy&amp;action&#x3D;new-topic" method="POST" class="flow-newtopic-form"> <div class="flow-error-container"> </div> <div class="flow-anon-warning"> <div class="flow-anon-warning-mobile"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-down flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="insert" > <div class="flow-anon-warning-desktop"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-left flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </script></div> <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topiclist_replyTo" value="v7uq1wrt12w9ygjd" /> <input name="topiclist_topic" class="mw-ui-input mw-ui-input-large" required type="text" placeholder="Start a new topic" data-role="title" /> </form> </div> </div> <div class="flow-topics"> <div class="flow-topic flow-load-interactive" id="flow-topic-yf7yr7tz4ydt87hv" data-flow-id="yf7yr7tz4ydt87hv" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1730317114000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="Hard deprecation, release notes requirements" data-flow-load-handler="topicTitle" > Hard deprecation, release notes requirements</h2> <div class="flow-topic-meta"> 2 comments &bull; <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Yf7yr7tz4ydt87hv&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1730317114" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">19:38, 30 October 2024</span> <span id="" class="flow-timestamp-ago">24 days ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">2</span></span> </div> <div class="flow-topic-summary-container " > <div class="flow-error-container"> </div> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show topic action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Yf7yr7tz4ydt87hv&amp;action&#x3D;history"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-clock"><span>History</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/wiki/Topic:Yf7yr7tz4ydt87hv"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet flow-ui-summarize-topic-link" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Yf7yr7tz4ydt87hv&amp;action&#x3D;edit-topic-summary"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-listBullet"><span>Summarize</span></span></a></li></section> <section></section> </ul> </div> </div> <!-- eachPost topic --> <div id="flow-post-yf7yr7tz52bvgbg3" class="flow-post" data-flow-id="yf7yr7tz52bvgbg3" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:198.27.180.35" class="new mw-userlink"> <bdi>198.27.180.35</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:198.27.180.35" class="new " title="User talk:198.27.180.35">talk</a></span><span><a href="/wiki/Special:Contributions/198.27.180.35" title="Contributions/198.27.180.35">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" id="mwAQ"><p id="mwAg">For soft deprecation we say:</p> <p id="mwAw">"he deprecation MUST be mentioned in the relevant RELEASE-NOTES"</p> <p id="mwBA">There is no requirement for hard deprecation but <span about="#mwt1" typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;FlowMention&quot;,&quot;href&quot;:&quot;./Template:FlowMention&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;Jdforrester (WMF)&quot;}},&quot;i&quot;:0}}]}" id="mwBQ">@</span><a href="/wiki/User:Jdforrester_(WMF)" title="User:Jdforrester (WMF)" rel="mw:WikiLink" about="#mwt1" id="mwBg">Jdforrester (WMF)</a> pointed out in <a rel="mw:ExtLink" href="https://gerrit.wikimedia.org/r/c/mediawiki/core/+/1081276" class="external free" id="mwBw">https://gerrit.wikimedia.org/r/c/mediawiki/core/+/1081276</a> we often update RELEASE NOTES to emit deprecation warnings.</p> <p id="mwCA">I propose we add the following text to the hard deprecation section:</p> <p id="mwCQ">"When transitioning from a soft to hard deprecation, the RELEASE_NOTES must be updated to reflect the function now emits deprecation warnings."</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Yf7yr7tz4ydt87hv&amp;action&#x3D;reply&amp;topic_postId&#x3D;yf7yr7tz52bvgbg3#flow-post-yf7yr7tz52bvgbg3" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Yf7yr7tz4ydt87hv&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1730310524" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">17:48, 30 October 2024</span> <span id="" class="flow-timestamp-ago">24 days ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Yf7yr7tz4ydt87hv&amp;topic_showPostId&#x3D;yf7yr7tz52bvgbg3#flow-post-yf7yr7tz52bvgbg3"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-yf84vf1fuu88ui58" class="flow-post" data-flow-id="yf84vf1fuu88ui58" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdforrester_(WMF)" class="mw-userlink"> <bdi>Jdforrester (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdforrester_(WMF)" class="" title="User talk:Jdforrester (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Jdforrester_(WMF)" title="Contributions/Jdforrester (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" id="mwAQ"><p id="mwAg">I'd probably recommend instead:</p><blockquote id="mwAw"><p id="mwBA">When upgrading a "soft" deprecation to also start emitting deprecation warnings in a different release to the original deprecation, the RELEASE_NOTES file SHOULD be updated to reflect this.</p></blockquote><p id="mwBQ">There are circumstances where it's not strictly needed, and it's only needed if the original deprecation was in a previous release.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Yf7yr7tz4ydt87hv&amp;action&#x3D;reply&amp;topic_postId&#x3D;yf7yr7tz4ydt87hv#flow-post-yf7yr7tz4ydt87hv" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Yf7yr7tz4ydt87hv&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1730317114" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">19:38, 30 October 2024</span> <span id="" class="flow-timestamp-ago">24 days ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Yf7yr7tz4ydt87hv&amp;topic_showPostId&#x3D;yf84vf1fuu88ui58#flow-post-yf84vf1fuu88ui58"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="replace" data-target="~ a" > <form class="flow-post flow-reply-form" method="POST" action="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Yf7yr7tz4ydt87hv&amp;action&#x3D;reply&amp;topic_postId&#x3D;yf7yr7tz4ydt87hv#flow-post-yf7yr7tz4ydt87hv-form-content" id="flow-reply-yf7yr7tz4ydt87hv" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="yf7yr7tz4ydt87hv" /> <div class="flow-error-container"> </div> <div class="flow-anon-warning"> <div class="flow-anon-warning-mobile"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-down flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="insert" > <div class="flow-anon-warning-desktop"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-left flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-yf7yr7tz4ydt87hv-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to &quot;Hard deprecation, release notes requirements&quot;" data-role="content" ></textarea> </div> <div class="flow-form-actions flow-form-collapsible"> <button data-role="submit" class="mw-ui-button mw-ui-progressive" >Reply</button> <small class="flow-terms-of-use plainlinks">By clicking "Reply", you agree to our <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and agree to irrevocably release your text under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0 License</a> and <a class="external text" href="https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License">GFDL</a>.</small> </div> </form> </script> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Yf7yr7tz4ydt87hv&amp;action&#x3D;reply&amp;topic_postId&#x3D;yf7yr7tz4ydt87hv#flow-post-yf7yr7tz4ydt87hv-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to &quot;Hard deprecation, release notes requirements&quot;</a> </div> <div class="flow-topic flow-load-interactive" id="flow-topic-xnhwqmzsfq6aouno" data-flow-id="xnhwqmzsfq6aouno" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1691623732000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="Suggestion: Change author and user terminology" data-flow-load-handler="topicTitle" > Suggestion: Change author and user terminology</h2> <div class="flow-topic-meta"> 2 comments &bull; <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xnhwqmzsfq6aouno&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1691623732" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">23:28, 9 August 2023</span> <span id="" class="flow-timestamp-ago">1 year ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">2</span></span> </div> <div class="flow-topic-summary-container " > <div class="flow-error-container"> </div> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show topic action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xnhwqmzsfq6aouno&amp;action&#x3D;history"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-clock"><span>History</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/wiki/Topic:Xnhwqmzsfq6aouno"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet flow-ui-summarize-topic-link" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xnhwqmzsfq6aouno&amp;action&#x3D;edit-topic-summary"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-listBullet"><span>Summarize</span></span></a></li></section> <section></section> </ul> </div> </div> <!-- eachPost topic --> <div id="flow-post-xnhwqmzsfu4cwylw" class="flow-post" data-flow-id="xnhwqmzsfu4cwylw" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdlrobson" class="mw-userlink"> <bdi>Jdlrobson</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdlrobson" class="" title="User talk:Jdlrobson">talk</a></span><span><a href="/wiki/Special:Contributions/Jdlrobson" title="Contributions/Jdlrobson">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" id="mwAQ"><p id="mwAg">While working on a frontend equivalent of this policy, the names "provider" and "consumer" were proposed. In this document we currently have "author" and "user" to mean the same.</p> <p id="mwAw">These words seem overloaded given an "author" could mean many things - such as editing documentation, editing wiki pages. A "user" could be interpreted as a user of the code.</p> <p id="mwBA">How about we change all instances of "author" to "provider" and all instances of "user" to "consumer"<span typeof="mw:DisplaySpace" id="mwBQ"> </span>?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xnhwqmzsfq6aouno&amp;action&#x3D;reply&amp;topic_postId&#x3D;xnhwqmzsfu4cwylw#flow-post-xnhwqmzsfu4cwylw" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xnhwqmzsfq6aouno&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1691600129" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">16:55, 9 August 2023</span> <span id="" class="flow-timestamp-ago">1 year ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xnhwqmzsfq6aouno&amp;topic_showPostId&#x3D;xnhwqmzsfu4cwylw#flow-post-xnhwqmzsfu4cwylw"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-xniinbe057yw6q3l" class="flow-post" data-flow-id="xniinbe057yw6q3l" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Krinkle" class="mw-userlink"> <bdi>Krinkle</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Krinkle" class="" title="User talk:Krinkle">talk</a></span><span><a href="/wiki/Special:Contributions/Krinkle" title="Contributions/Krinkle">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" id="mwAQ"><blockquote id="mwAg"><p id="mwAw">These words seem overloaded</p></blockquote> <p id="mwBA">This document is addressed to a software development context. Do you think there is ambiguity in this context for who the author of a code interface is, or who the user of a code interface is?</p> <p id="mwBQ">In your experience browsing GitHub issue trackers and npm READMEs, do you find that people don't often use and understand terms like "author" and "user", or that these caused confusion? Perhaps an alternate set of terms is more often there that we could borrow from?</p> <p id="mwBg">If we remove context from the equation, I believe it would be very challenging to find a term that is well known (i.e. not too novel, or unknown to <a rel="mw:WikiLink/Interwiki" href="https://en.wikipedia.org/wiki/English_as_a_second_or_foreign_language" title="en:English as a second or foreign language" class="extiw" id="mwBw">ESLs</a>), easily understood, and ambigious regardless of context.</p> <p id="mwCA">The word "consumer" seems certainly ambigious. Like "user", a "customer" often refers the end-user (possibly more often?). In my own experience, I find developers of open source software more often refer to themselves as "users" than as "consumers". (Most often would be "developer", but I mean cases where another term is used to disambiguate.) The term "consumer" might be a bit too corporate-y for FLOSS culture? Businesses and commerical enterprises refer to their users as customers.</p> <p id="mwCQ">Companies also tend to think of, and present, themselves as "provider" when they create software or services. This too carries a similar ambiguity. E.g. software consultancies that build WP or MW plugins, WordPress and MediaWiki hosting providers, companies like BlueSpice. I imagine most every developer working as user of MediaWiki core to build an extension, is providing <i id="mwCg">something</i> to <i id="mwCw">someone</i>. Even if merely as hoster of your own wiki with a custom extension, you'd be the site/content provider building on MW software. If I drop "Who is your provider?" in an unspecified technology-adjacent context, I think one tends to think first of web hosting, ISP, and telecom companies; Not easily would I think of the author of one of our npm dependencies, from whom I use the stable interface.</p> <p id="mwDA">I'm not arguing that "provider" is unclear, but I do think, if we ignore the document context, that it is certainly ambigious. I feel the term "provider" also feels a bit less personal and human than an "author".</p> <p id="mwDQ">Note that we use term author a fair bit in our technical writing when we talk about ourselves as the authors (or "maintainers") of software, including AUTHORS.txt attribution, Git commit authors, author credits from extension.json for Special:Version, and more in <a rel="mw:ExtLink" href="https://www.mediawiki.org/w/index.php?search=author&amp;title=Special%3ASearch&amp;profile=advanced&amp;fulltext=1&amp;ns0=1&amp;ns12=1&amp;ns100=1&amp;ns104=1" class="external text" id="mwDg">search</a>.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xnhwqmzsfq6aouno&amp;action&#x3D;reply&amp;topic_postId&#x3D;xnhwqmzsfq6aouno#flow-post-xnhwqmzsfq6aouno" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xnhwqmzsfq6aouno&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1691623732" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">23:28, 9 August 2023</span> <span id="" class="flow-timestamp-ago">1 year ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xnhwqmzsfq6aouno&amp;topic_showPostId&#x3D;xniinbe057yw6q3l#flow-post-xniinbe057yw6q3l"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="replace" data-target="~ a" > <form class="flow-post flow-reply-form" method="POST" action="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xnhwqmzsfq6aouno&amp;action&#x3D;reply&amp;topic_postId&#x3D;xnhwqmzsfq6aouno#flow-post-xnhwqmzsfq6aouno-form-content" id="flow-reply-xnhwqmzsfq6aouno" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="xnhwqmzsfq6aouno" /> <div class="flow-error-container"> </div> <div class="flow-anon-warning"> <div class="flow-anon-warning-mobile"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-down flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="insert" > <div class="flow-anon-warning-desktop"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-left flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-xnhwqmzsfq6aouno-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to &quot;Suggestion: Change author and user terminology&quot;" data-role="content" ></textarea> </div> <div class="flow-form-actions flow-form-collapsible"> <button data-role="submit" class="mw-ui-button mw-ui-progressive" >Reply</button> <small class="flow-terms-of-use plainlinks">By clicking "Reply", you agree to our <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and agree to irrevocably release your text under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0 License</a> and <a class="external text" href="https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License">GFDL</a>.</small> </div> </form> </script> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xnhwqmzsfq6aouno&amp;action&#x3D;reply&amp;topic_postId&#x3D;xnhwqmzsfq6aouno#flow-post-xnhwqmzsfq6aouno-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to &quot;Suggestion: Change author and user terminology&quot;</a> </div> <div class="flow-topic flow-load-interactive" id="flow-topic-xasmxgagzbf0mtjj" data-flow-id="xasmxgagzbf0mtjj" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1673918157000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="removing class aliases" data-flow-load-handler="topicTitle" > removing class aliases</h2> <div class="flow-topic-meta"> 2 comments &bull; <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xasmxgagzbf0mtjj&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1673918157" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">01:15, 17 January 2023</span> <span id="" class="flow-timestamp-ago">1 year ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">2</span></span> </div> <div class="flow-topic-summary-container " > <div class="flow-error-container"> </div> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show topic action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xasmxgagzbf0mtjj&amp;action&#x3D;history"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-clock"><span>History</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/wiki/Topic:Xasmxgagzbf0mtjj"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet flow-ui-summarize-topic-link" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xasmxgagzbf0mtjj&amp;action&#x3D;edit-topic-summary"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-listBullet"><span>Summarize</span></span></a></li></section> <section></section> </ul> </div> </div> <!-- eachPost topic --> <div id="flow-post-xasmxgagzfd2uxhr" class="flow-post" data-flow-id="xasmxgagzfd2uxhr" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Duesentrieb" class="mw-userlink"> <bdi>Duesentrieb</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Duesentrieb" class="" title="User talk:Duesentrieb">talk</a></span><span><a href="/wiki/Special:Contributions/Duesentrieb" title="Contributions/Duesentrieb">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" id="mwAQ" data-parsoid="{}"><p id="mwAg" data-parsoid="{&quot;dsr&quot;:[0,214,0,0]}">Class aliases are basically deprecated names for classes. I think that the deprecation process should apply for them, so it is clear when we can remove them. But there is no good way to emit deprecation warnings...</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xasmxgagzbf0mtjj&amp;action&#x3D;reply&amp;topic_postId&#x3D;xasmxgagzfd2uxhr#flow-post-xasmxgagzfd2uxhr" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xasmxgagzbf0mtjj&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1673864451" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">10:20, 16 January 2023</span> <span id="" class="flow-timestamp-ago">1 year ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xasmxgagzbf0mtjj&amp;topic_showPostId&#x3D;xasmxgagzfd2uxhr#flow-post-xasmxgagzfd2uxhr"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-xau0s00uzmueg0rm" class="flow-post" data-flow-id="xau0s00uzmueg0rm" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdforrester_(WMF)" class="mw-userlink"> <bdi>Jdforrester (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdforrester_(WMF)" class="" title="User talk:Jdforrester (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Jdforrester_(WMF)" title="Contributions/Jdforrester (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" id="mwAQ" data-parsoid="{}"><p id="mwAg" data-parsoid="{&quot;dsr&quot;:[0,313,0,0]}">For things that can't be warned about, we generally do a 'best efforts' approach, looking through codebase through Code Search and determining how likely it is that people will be disrupted (and writing patches to migrate where the codebases are current enough to pass CI). Not sure that this needs formalisation?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xasmxgagzbf0mtjj&amp;action&#x3D;reply&amp;topic_postId&#x3D;xasmxgagzbf0mtjj#flow-post-xasmxgagzbf0mtjj" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xasmxgagzbf0mtjj&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1673918157" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">01:15, 17 January 2023</span> <span id="" class="flow-timestamp-ago">1 year ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xasmxgagzbf0mtjj&amp;topic_showPostId&#x3D;xau0s00uzmueg0rm#flow-post-xau0s00uzmueg0rm"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="replace" data-target="~ a" > <form class="flow-post flow-reply-form" method="POST" action="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xasmxgagzbf0mtjj&amp;action&#x3D;reply&amp;topic_postId&#x3D;xasmxgagzbf0mtjj#flow-post-xasmxgagzbf0mtjj-form-content" id="flow-reply-xasmxgagzbf0mtjj" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="xasmxgagzbf0mtjj" /> <div class="flow-error-container"> </div> <div class="flow-anon-warning"> <div class="flow-anon-warning-mobile"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-down flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="insert" > <div class="flow-anon-warning-desktop"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-left flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-xasmxgagzbf0mtjj-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to &quot;removing class aliases&quot;" data-role="content" ></textarea> </div> <div class="flow-form-actions flow-form-collapsible"> <button data-role="submit" class="mw-ui-button mw-ui-progressive" >Reply</button> <small class="flow-terms-of-use plainlinks">By clicking "Reply", you agree to our <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and agree to irrevocably release your text under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0 License</a> and <a class="external text" href="https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License">GFDL</a>.</small> </div> </form> </script> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Xasmxgagzbf0mtjj&amp;action&#x3D;reply&amp;topic_postId&#x3D;xasmxgagzbf0mtjj#flow-post-xasmxgagzbf0mtjj-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to &quot;removing class aliases&quot;</a> </div> <div class="flow-topic flow-load-interactive" id="flow-topic-x4bh4nf3pe2ho5jj" data-flow-id="x4bh4nf3pe2ho5jj" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1665177672000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="Deprecating config settings" data-flow-load-handler="topicTitle" > Deprecating config settings</h2> <div class="flow-topic-meta"> 9 comments &bull; <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1665177672" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">21:21, 7 October 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">9</span></span> </div> <div class="flow-topic-summary-container " > <div class="flow-error-container"> </div> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show topic action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;history"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-clock"><span>History</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/wiki/Topic:X4bh4nf3pe2ho5jj"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet flow-ui-summarize-topic-link" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;edit-topic-summary"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-listBullet"><span>Summarize</span></span></a></li></section> <section></section> </ul> </div> </div> <!-- eachPost topic --> <div id="flow-post-x4bh4nf3pi0jw9hr" class="flow-post" data-flow-id="x4bh4nf3pi0jw9hr" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Duesentrieb" class="mw-userlink"> <bdi>Duesentrieb</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Duesentrieb" class="" title="User talk:Duesentrieb">talk</a></span><span><a href="/wiki/Special:Contributions/Duesentrieb" title="Contributions/Duesentrieb">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,279,0,0]}">Since 1.39, the installer will warn about the use of deprecated settings. But this only works as long as the declaration of the config setting is kept. Since people often upgrade from old versions after many years, it seems useful to keep the declaration around for a long time. </p> <p data-parsoid="{&quot;dsr&quot;:[281,461,0,0]}">The old setting can however be ignored. The deprecation warning can just say that the setting no longer works. We just need to declaration in place so the installer tells the user.</p> <p data-parsoid="{&quot;dsr&quot;:[463,631,0,0]}">Maybe instead of using the "deprecated" flag in the schema, we should have an "obsolete" flag for settings that are no longer supported? We could keep them indefinitly.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;reply&amp;topic_postId&#x3D;x4bh4nf3pi0jw9hr#flow-post-x4bh4nf3pi0jw9hr" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1664821112" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">18:18, 3 October 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;topic_showPostId&#x3D;x4bh4nf3pi0jw9hr#flow-post-x4bh4nf3pi0jw9hr"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-x4c8qhpjsq72vb0t" class="flow-post" data-flow-id="x4c8qhpjsq72vb0t" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Legoktm" class="mw-userlink"> <bdi>Legoktm</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Legoktm" class="" title="User talk:Legoktm">talk</a></span><span><a href="/wiki/Special:Contributions/Legoktm" title="Contributions/Legoktm">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,107,0,0]}">This is a great idea, though it seems like we could do both? Warn on deprecation and for obsolete settings?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;reply&amp;topic_postId&#x3D;x4c8qhpjsq72vb0t#flow-post-x4c8qhpjsq72vb0t" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1664850855" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">02:34, 4 October 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;topic_showPostId&#x3D;x4c8qhpjsq72vb0t#flow-post-x4c8qhpjsq72vb0t"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-x4dt6tdt4tl80sbx" class="flow-post" data-flow-id="x4dt6tdt4tl80sbx" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,389,0,0]}">Yes, of course, it should do both! But deprecated settings would still work, while obsolete settings would be defunct. The idea here is to make the distinction explicit, and allow backwards compatibility code for old settings to be removed without breaking old installs without explanation. Being able to declare settings as obsolete will allow us to break old installs WITH explanation<span typeof="mw:DisplaySpace" data-parsoid="{&quot;dsr&quot;:[386,387,0,0]}"> </span>;)</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;reply&amp;topic_postId&#x3D;x4dt6tdt4tl80sbx#flow-post-x4dt6tdt4tl80sbx" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1664911677" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">19:27, 4 October 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;topic_showPostId&#x3D;x4dt6tdt4tl80sbx#flow-post-x4dt6tdt4tl80sbx"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-x4dt90rx6uf8x3bc" class="flow-post" data-flow-id="x4dt90rx6uf8x3bc" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,138,0,0]}">(I just realized I have been editing here with two accounts - full disclosure: <a href="/wiki/User:Duesentrieb" title="User:Duesentrieb" rel="mw:WikiLink" data-parsoid="{&quot;stx&quot;:&quot;simple&quot;,&quot;a&quot;:{&quot;href&quot;:&quot;./User:Duesentrieb&quot;},&quot;sa&quot;:{&quot;href&quot;:&quot;User:Duesentrieb&quot;},&quot;dsr&quot;:[79,99,2,2]}">User:Duesentrieb</a> is also me, that's my private account)</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;reply&amp;topic_postId&#x3D;x4dt90rx6uf8x3bc#flow-post-x4dt90rx6uf8x3bc" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1664911743" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">19:29, 4 October 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;topic_showPostId&#x3D;x4dt90rx6uf8x3bc#flow-post-x4dt90rx6uf8x3bc"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-x4f9ow90kibydfdo" class="flow-post" data-flow-id="x4f9ow90kibydfdo" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Duesentrieb" class="mw-userlink"> <bdi>Duesentrieb</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Duesentrieb" class="" title="User talk:Duesentrieb">talk</a></span><span><a href="/wiki/Special:Contributions/Duesentrieb" title="Contributions/Duesentrieb">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,183,0,0]}">I made a patch that introduces the an "obsolete" marker into MainConfigSchema, and uses it in the updater and structure tests: <a rel="mw:ExtLink" href="https://gerrit.wikimedia.org/r/c/mediawiki/core/+/838769" class="external free" data-parsoid="{&quot;stx&quot;:&quot;url&quot;,&quot;dsr&quot;:[127,183,0,0]}">https://gerrit.wikimedia.org/r/c/mediawiki/core/+/838769</a></p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;reply&amp;topic_postId&#x3D;x4f9ow90kibydfdo#flow-post-x4f9ow90kibydfdo" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <span> Edited by DKinzler (WMF) </span> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;compare-post-revisions&amp;topic_newRevision&#x3D;x4fyzgvkmljw167e" class="flow-timestamp-anchor"> <span datetime="1664995493" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">18:44, 5 October 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;topic_showPostId&#x3D;x4f9ow90kibydfdo#flow-post-x4f9ow90kibydfdo"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-x4fbmnxp8dpfq99w" class="flow-post" data-flow-id="x4fbmnxp8dpfq99w" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:X-Savitar" class="mw-userlink"> <bdi>X-Savitar</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:X-Savitar" class="" title="User talk:X-Savitar">talk</a></span><span><a href="/wiki/Special:Contributions/X-Savitar" title="Contributions/X-Savitar">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,238,0,0]}"><span about="#mwt1" typeof="mw:Transclusion" data-parsoid="{&quot;pi&quot;:[[{&quot;k&quot;:&quot;1&quot;}]],&quot;dsr&quot;:[0,30,null,null]}" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;FlowMention&quot;,&quot;href&quot;:&quot;./Template:FlowMention&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;DKinzler (WMF)&quot;}},&quot;i&quot;:0}}]}">@</span><a href="/wiki/User:DKinzler_(WMF)" title="User:DKinzler (WMF)" rel="mw:WikiLink" about="#mwt1" data-parsoid="{&quot;stx&quot;:&quot;piped&quot;,&quot;a&quot;:{&quot;href&quot;:&quot;./User:DKinzler_(WMF)&quot;},&quot;sa&quot;:{&quot;href&quot;:&quot;User:DKinzler (WMF)&quot;}}">DKinzler (WMF)</a>, I agree with you on the "obsolete" flag. It will inform 3rd party users to cleanup their LocalSettings.php and remove what is no longer needed for their installs (or update to the new ways of doing things).</p> <p data-parsoid="{&quot;dsr&quot;:[240,446,0,0]}">Since we can't know what outside user LocalSettings.php looks like, this a good strategy to keep things clean on their own side too, which after sometime, cleaning up these configs from core would be safer.</p> <p data-parsoid="{&quot;dsr&quot;:[448,562,0,0]}">But the thing is, how long do we want to keep the deprecated configs? 2, 5 or 10 years before completely removing?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;reply&amp;topic_postId&#x3D;x4fbmnxp8dpfq99w#flow-post-x4fbmnxp8dpfq99w" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1664970330" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">11:45, 5 October 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;topic_showPostId&#x3D;x4fbmnxp8dpfq99w#flow-post-x4fbmnxp8dpfq99w"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-x4fyz61ual73unwv" class="flow-post" data-flow-id="x4fyz61ual73unwv" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,408,0,0]}">With this mechanism in place, we could start to remove backwards compat code for deprecated settings more agressively, after or two releases, like other deprecated code. The declaration of the obsolete setting would need to be kept for as long as we support upgrading from a revision where the setting was not deprecated (but not before two LTS releases from now, because older versions don't emit warnings).</p> <p data-parsoid="{&quot;dsr&quot;:[410,764,0,0]}">I.e. if in 1.44 we drop support for upgrading from 1.35, we can remove all obsolete config that has been deprecated since at least 1.35. This would be safe since when upgrading to 1.44 from a version &gt; 1.35, you'd see the warnings. And when upgrading from an older version, you'd have to upgrade to a version &lt; 1.44 first, so you'd also see the warnings.</p> <p data-parsoid="{&quot;dsr&quot;:[766,1056,0,0]}">Since we currently guarantee updates across two LTS releases, and we do an LTS release every other year, this would come to four to five years from deprecation to full removal. The b/c code could already be removed after about a year, though, moving the seeting from deprecated to obsolete.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;reply&amp;topic_postId&#x3D;x4fyz61ual73unwv#flow-post-x4fyz61ual73unwv" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <span> Edited </span> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;compare-post-revisions&amp;topic_newRevision&#x3D;x4fz3vnu9lz58nte" class="flow-timestamp-anchor"> <span datetime="1664995625" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">18:47, 5 October 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;topic_showPostId&#x3D;x4fyz61ual73unwv#flow-post-x4fyz61ual73unwv"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-x4hxius37f6g8o4q" class="flow-post" data-flow-id="x4hxius37f6g8o4q" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdforrester_(WMF)" class="mw-userlink"> <bdi>Jdforrester (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdforrester_(WMF)" class="" title="User talk:Jdforrester (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Jdforrester_(WMF)" title="Contributions/Jdforrester (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,211,0,0]}">Something that more interactively helps sysadmins when upgrading to know what config they need to update/remove would be really great, rather than hoping that people carefully read the upgrade notes. Great plan.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;reply&amp;topic_postId&#x3D;x4hxius37f6g8o4q#flow-post-x4hxius37f6g8o4q" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1665071490" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:51, 6 October 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;topic_showPostId&#x3D;x4hxius37f6g8o4q#flow-post-x4hxius37f6g8o4q"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-x4ko1prigqnrrrx8" class="flow-post" data-flow-id="x4ko1prigqnrrrx8" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DAlangi_(WMF)" class="mw-userlink"> <bdi>DAlangi (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DAlangi_(WMF)" class="" title="User talk:DAlangi (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DAlangi_(WMF)" title="Contributions/DAlangi (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,235,0,0]}"><span about="#mwt1" typeof="mw:Transclusion" data-parsoid="{&quot;pi&quot;:[[{&quot;k&quot;:&quot;1&quot;}]],&quot;dsr&quot;:[0,33,null,null]}" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;FlowMention&quot;,&quot;href&quot;:&quot;./Template:FlowMention&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;Jdforrester (WMF)&quot;}},&quot;i&quot;:0}}]}">@</span><a href="/wiki/User:Jdforrester_(WMF)" title="User:Jdforrester (WMF)" rel="mw:WikiLink" about="#mwt1" data-parsoid="{&quot;stx&quot;:&quot;piped&quot;,&quot;a&quot;:{&quot;href&quot;:&quot;./User:Jdforrester_(WMF)&quot;},&quot;sa&quot;:{&quot;href&quot;:&quot;User:Jdforrester (WMF)&quot;}}">Jdforrester (WMF)</a>, you captured it very well and I like how you put it. In this case, we're guiding the customer/end-users on how to configure their wikis and what to remove which is no longer needed for/after upgrades.</p> <p data-parsoid="{&quot;dsr&quot;:[237,452,0,0]}">I think a lot of sysadmins will be happy to see this feature (as here we're putting MW users again on the front line) and it'll make their life a whole lot easier when managing those giant LocalSettings.php files<span typeof="mw:DisplaySpace" data-parsoid="{&quot;dsr&quot;:[449,450,0,0]}"> </span>:)</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;reply&amp;topic_postId&#x3D;x4bh4nf3pe2ho5jj#flow-post-x4bh4nf3pe2ho5jj" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <span> Edited </span> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;compare-post-revisions&amp;topic_newRevision&#x3D;x4ko2unv5ynmevne" class="flow-timestamp-anchor"> <span datetime="1665177672" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">21:21, 7 October 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;topic_showPostId&#x3D;x4ko1prigqnrrrx8#flow-post-x4ko1prigqnrrrx8"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="replace" data-target="~ a" > <form class="flow-post flow-reply-form" method="POST" action="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;reply&amp;topic_postId&#x3D;x4bh4nf3pe2ho5jj#flow-post-x4bh4nf3pe2ho5jj-form-content" id="flow-reply-x4bh4nf3pe2ho5jj" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="x4bh4nf3pe2ho5jj" /> <div class="flow-error-container"> </div> <div class="flow-anon-warning"> <div class="flow-anon-warning-mobile"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-down flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="insert" > <div class="flow-anon-warning-desktop"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-left flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-x4bh4nf3pe2ho5jj-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to &quot;Deprecating config settings&quot;" data-role="content" ></textarea> </div> <div class="flow-form-actions flow-form-collapsible"> <button data-role="submit" class="mw-ui-button mw-ui-progressive" >Reply</button> <small class="flow-terms-of-use plainlinks">By clicking "Reply", you agree to our <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and agree to irrevocably release your text under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0 License</a> and <a class="external text" href="https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License">GFDL</a>.</small> </div> </form> </script> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X4bh4nf3pe2ho5jj&amp;action&#x3D;reply&amp;topic_postId&#x3D;x4bh4nf3pe2ho5jj#flow-post-x4bh4nf3pe2ho5jj-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to &quot;Deprecating config settings&quot;</a> </div> <div class="flow-topic flow-load-interactive" id="flow-topic-x34wraaili56q6xy" data-flow-id="x34wraaili56q6xy" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1663458371000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="Deprecation process and translatewiki" data-flow-load-handler="topicTitle" > Deprecation process and translatewiki</h2> <div class="flow-topic-meta"> 3 comments &bull; <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1663458371" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">23:46, 17 September 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">3</span></span> </div> <div class="flow-topic-summary-container " > <div class="flow-error-container"> </div> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show topic action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;action&#x3D;history"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-clock"><span>History</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/wiki/Topic:X34wraaili56q6xy"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet flow-ui-summarize-topic-link" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;action&#x3D;edit-topic-summary"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-listBullet"><span>Summarize</span></span></a></li></section> <section></section> </ul> </div> </div> <!-- eachPost topic --> <div id="flow-post-x34wraailm38yaw6" class="flow-post" data-flow-id="x34wraailm38yaw6" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdlrobson" class="mw-userlink"> <bdi>Jdlrobson</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdlrobson" class="" title="User talk:Jdlrobson">talk</a></span><span><a href="/wiki/Special:Contributions/Jdlrobson" title="Contributions/Jdlrobson">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,150,0,0]}">A recent deprecation following this process caused problems in the translatewiki extension (context <a rel="mw:ExtLink" href="https://phabricator.wikimedia.org/T310017#8236113" class="external free" data-parsoid="{&quot;stx&quot;:&quot;url&quot;,&quot;dsr&quot;:[100,149,0,0]}">https://phabricator.wikimedia.org/T310017#8236113</a>)</p> <p data-parsoid="{&quot;dsr&quot;:[152,444,0,0]}">The guide currently says: &gt; Developers or teams deprecating code SHOULD actively support removal of usages in code in the MediaWiki ecosystem, especially in popular extensions. This includes making maintainers aware of the deprecation as well as creating or reviewing patches removing usages.</p> <p data-parsoid="{&quot;dsr&quot;:[446,692,0,0]}">"popular extensions" is quite a vague term here, as it's not clear what's popular. Codesearch currently shows results for many extension/skins that are unmaintained or pinned to older MediaWiki versions, so its often hard to identify which skins.</p> <p data-parsoid="{&quot;dsr&quot;:[694,878,0,0]}">"active" is also vague here. In the case of T310017 work was still ongoing to support removal of usages but a translatewiki deployment happened somewhere in the middle of that process.</p> <p data-parsoid="{&quot;dsr&quot;:[880,890,0,0]}">Questions:</p> <ul data-parsoid="{&quot;dsr&quot;:[891,1259,0,0]}"><li data-parsoid="{&quot;dsr&quot;:[891,1009,1,0,1,0]}">Should TranslateWiki installed extensions/skins be treated as "Wikimedia deployed" code and block hard deprecations?</li> <li data-parsoid="{&quot;dsr&quot;:[1010,1116,1,0,1,0]}">If not should codesearch provide a tab in addition to "Wikimedia deployed" e.g. "Translatewiki deployed"</li> <li data-parsoid="{&quot;dsr&quot;:[1117,1259,1,0,1,0]}">Could we provide more guidance about what we class as popular extensions/skins with some kind of criteria e.g. used on X site, Y+ downloads?</li></ul></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;action&#x3D;reply&amp;topic_postId&#x3D;x34wraailm38yaw6#flow-post-x34wraailm38yaw6" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1663170161" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:42, 14 September 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;topic_showPostId&#x3D;x34wraailm38yaw6#flow-post-x34wraailm38yaw6"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-x38na94r252jwen0" class="flow-post" data-flow-id="x38na94r252jwen0" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdforrester_(WMF)" class="mw-userlink"> <bdi>Jdforrester (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdforrester_(WMF)" class="" title="User talk:Jdforrester (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Jdforrester_(WMF)" title="Contributions/Jdforrester (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><blockquote data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[0,141,12,13]}"><p data-parsoid="{&quot;dsr&quot;:[12,128,0,0]}">Should TranslateWiki installed extensions/skins be treated as "Wikimedia deployed" code and block hard deprecations?</p></blockquote><p data-parsoid="{&quot;dsr&quot;:[141,327,0,0]}">No, I don't think so. Though we're fans of TWN and fund them, as well as using them, they aren't part of our ecosystem (and shouldn't be forced to follow our processes and all the rest).</p><blockquote data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[327,456,12,13]}"><p data-parsoid="{&quot;dsr&quot;:[339,443,0,0]}">If not should codesearch provide a tab in addition to "Wikimedia deployed" e.g. "Translatewiki deployed"</p></blockquote><p data-parsoid="{&quot;dsr&quot;:[456,512,0,0]}">Sure, that's pretty easy to add if that would be useful.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;action&#x3D;reply&amp;topic_postId&#x3D;x38na94r252jwen0#flow-post-x38na94r252jwen0" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1663315098" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">07:58, 16 September 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;topic_showPostId&#x3D;x38na94r252jwen0#flow-post-x38na94r252jwen0"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-x3cc9mbj1epiozqo" class="flow-post" data-flow-id="x3cc9mbj1epiozqo" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Legoktm" class="mw-userlink"> <bdi>Legoktm</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Legoktm" class="" title="User talk:Legoktm">talk</a></span><span><a href="/wiki/Special:Contributions/Legoktm" title="Contributions/Legoktm">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,303,0,0]}">Re: popular extensions, we used to have <a rel="mw:ExtLink" href="https://grafana.wikimedia.org/d/000000161/extension-distributor-downloads?orgId=1" class="external text" data-parsoid="{&quot;dsr&quot;:[40,138,83,1]}">this dashboard</a> for things in ExtensionDistributor/Gerrit, but it's timing out right now. WikiApiary has been unreliable for years, but that used to be another good source of data.</p> <p data-parsoid="{&quot;dsr&quot;:[305,673,0,0]}">SMW is a weird spot in which it <b data-parsoid="{&quot;dsr&quot;:[337,345,3,3]}">is</b> an incredibly popular extension, but because development is on GitHub (requires use of proprietary software) and it has no code of conduct (and historically has been toxic/unfriendly) I would not even suggest recommending or asking people to file tickets there. I think that is entirely on the SMW maintainers/community to fix.</p> <p data-parsoid="{&quot;dsr&quot;:[675,811,0,0]}">Overall I do think TWN is a good bellwether for how people use MediaWiki in the wild, but I don't think it should be codified in policy.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;action&#x3D;reply&amp;topic_postId&#x3D;x34wraaili56q6xy#flow-post-x34wraaili56q6xy" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1663458371" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">23:46, 17 September 2022</span> <span id="" class="flow-timestamp-ago">2 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;topic_showPostId&#x3D;x3cc9mbj1epiozqo#flow-post-x3cc9mbj1epiozqo"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="replace" data-target="~ a" > <form class="flow-post flow-reply-form" method="POST" action="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;action&#x3D;reply&amp;topic_postId&#x3D;x34wraaili56q6xy#flow-post-x34wraaili56q6xy-form-content" id="flow-reply-x34wraaili56q6xy" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="x34wraaili56q6xy" /> <div class="flow-error-container"> </div> <div class="flow-anon-warning"> <div class="flow-anon-warning-mobile"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-down flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="insert" > <div class="flow-anon-warning-desktop"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-left flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-x34wraaili56q6xy-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to &quot;Deprecation process and translatewiki&quot;" data-role="content" ></textarea> </div> <div class="flow-form-actions flow-form-collapsible"> <button data-role="submit" class="mw-ui-button mw-ui-progressive" >Reply</button> <small class="flow-terms-of-use plainlinks">By clicking "Reply", you agree to our <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and agree to irrevocably release your text under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0 License</a> and <a class="external text" href="https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License">GFDL</a>.</small> </div> </form> </script> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:X34wraaili56q6xy&amp;action&#x3D;reply&amp;topic_postId&#x3D;x34wraaili56q6xy#flow-post-x34wraaili56q6xy-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to &quot;Deprecation process and translatewiki&quot;</a> </div> <div class="flow-topic flow-load-interactive" id="flow-topic-wie8zpaqfzrvs6jd" data-flow-id="wie8zpaqfzrvs6jd" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1634210353000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="Documenting widening of parameter types" data-flow-load-handler="topicTitle" > Documenting widening of parameter types</h2> <div class="flow-topic-meta"> One comment &bull; <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wie8zpaqfzrvs6jd&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1634210353" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">11:19, 14 October 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">1</span></span> </div> <div class="flow-topic-summary-container " > <div class="flow-error-container"> </div> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show topic action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wie8zpaqfzrvs6jd&amp;action&#x3D;history"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-clock"><span>History</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/wiki/Topic:Wie8zpaqfzrvs6jd"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet flow-ui-summarize-topic-link" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wie8zpaqfzrvs6jd&amp;action&#x3D;edit-topic-summary"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-listBullet"><span>Summarize</span></span></a></li></section> <section></section> </ul> </div> </div> <!-- eachPost topic --> <div id="flow-post-wie8zpaqg3py0ahl" class="flow-post" data-flow-id="wie8zpaqg3py0ahl" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Nikerabbit" class="mw-userlink"> <bdi>Nikerabbit</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Nikerabbit" class="" title="User talk:Nikerabbit">talk</a></span><span><a href="/wiki/Special:Contributions/Nikerabbit" title="Contributions/Nikerabbit">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,121,0,0]}">Widening the types of parameters is allowed by the stable interface policy, as it it does not break any callers. Example:</p><pre typeof="mw:Extension/pre" about="#mwt2" data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[121,255,5,6]}" data-mw="{&quot;name&quot;:&quot;pre&quot;,&quot;attrs&quot;:{},&quot;body&quot;:{&quot;extsrc&quot;:&quot;\n- public function addLink( Title $title, $id = null ) {..}\n+ public function addLink( LinkTarget $link, $id = null ) {..}\n&quot;}}">- public function addLink( Title $title, $id = null ) {..} + public function addLink( LinkTarget $link, $id = null ) {..} </pre><p data-parsoid="{&quot;dsr&quot;:[255,679,0,0]}">This can pose an issue for developers of extensions and skins, who want to maintain compatibility for multiple versions of MediaWiki core: when refactoring or writing new code, we may accidentally use LinkTarget (with the above example) even though it will not work with older versions of MediaWiki. Detecting these issues is difficult due to low(er) testing with older versions of MediaWiki compared to the latest version.</p> <p data-parsoid="{&quot;dsr&quot;:[680,965,0,0]}"> <br data-parsoid="{&quot;dsr&quot;:[681,681,0,0]}"/> For other things, that may be backwards incompatible, we can check the @since tags for the relevant classes/methods/constants/etc. For this kind of compatibility issue there is currently no standard way to check other than reading the source of each supported MediaWiki core version.</p> <p data-parsoid="{&quot;dsr&quot;:[966,1200,0,0]}"> <br data-parsoid="{&quot;dsr&quot;:[967,967,0,0]}"/> I propose that we mention these kind of type changes in the parameter documentation. IDEs like PhpStorm will show this documentation when writing code, which makes it easier to avoid introducing these kind of breakages accidentally.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wie8zpaqfzrvs6jd&amp;action&#x3D;reply&amp;topic_postId&#x3D;wie8zpaqfzrvs6jd#flow-post-wie8zpaqfzrvs6jd" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wie8zpaqfzrvs6jd&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1634210353" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">11:19, 14 October 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wie8zpaqfzrvs6jd&amp;topic_showPostId&#x3D;wie8zpaqg3py0ahl#flow-post-wie8zpaqg3py0ahl"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="replace" data-target="~ a" > <form class="flow-post flow-reply-form" method="POST" action="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wie8zpaqfzrvs6jd&amp;action&#x3D;reply&amp;topic_postId&#x3D;wie8zpaqfzrvs6jd#flow-post-wie8zpaqfzrvs6jd-form-content" id="flow-reply-wie8zpaqfzrvs6jd" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="wie8zpaqfzrvs6jd" /> <div class="flow-error-container"> </div> <div class="flow-anon-warning"> <div class="flow-anon-warning-mobile"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-down flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="insert" > <div class="flow-anon-warning-desktop"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-left flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-wie8zpaqfzrvs6jd-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to &quot;Documenting widening of parameter types&quot;" data-role="content" ></textarea> </div> <div class="flow-form-actions flow-form-collapsible"> <button data-role="submit" class="mw-ui-button mw-ui-progressive" >Reply</button> <small class="flow-terms-of-use plainlinks">By clicking "Reply", you agree to our <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and agree to irrevocably release your text under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0 License</a> and <a class="external text" href="https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License">GFDL</a>.</small> </div> </form> </script> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wie8zpaqfzrvs6jd&amp;action&#x3D;reply&amp;topic_postId&#x3D;wie8zpaqfzrvs6jd#flow-post-wie8zpaqfzrvs6jd-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to &quot;Documenting widening of parameter types&quot;</a> </div> <div class="flow-topic flow-load-interactive flow-topic-moderatestate-lock flow-topic-moderated flow-element-collapsible flow-element-collapsed" id="flow-topic-wat4h7ei3oggv8r5" data-flow-id="wat4h7ei3oggv8r5" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1634208847000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive flow-collapse-toggle flow-click-interactive" data-flow-topic-title="Deprecation of code and LTS releases" data-flow-load-handler="topicTitle" data-flow-interactive-handler="collapserCollapsibleToggle" > <span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-check"></span> Deprecation of code and LTS releases</h2> <div class="flow-topic-meta"> <a class="expand-collapse-posts-link flow-collapse-toggle flow-click-interactive" href="javascript:void(0);" title="View comments" data-collapsed-title="View comments" data-expanded-title="Hide comments" data-flow-interactive-handler="collapserCollapsibleToggle" >6 comments</a> &bull; <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1634208847" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">10:54, 14 October 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">6</span></span> </div> <div class="flow-topic-summary-container flow-collapse-toggle flow-click-interactive" data-flow-interactive-handler="collapserCollapsibleToggle" > <div class="flow-error-container"> </div> <div class="flow-topic-summary"> <div class="flow-topic-summary-author"> Summary by 2001:16B8:57AC:9A00:9824:11DD:8CF6:7D36 </div> <div class="flow-topic-summary-content mw-parser-output"> <section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,177,0,0]}">"Long Term Support" means WMF provides bug fixes and security fixes for two years. It provides no guarantees about backwards compatibility, and it never was intended to do that.</p></section> </div> <div style="clear: both;"></div> </div> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show topic action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;action&#x3D;history"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-clock"><span>History</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/wiki/Topic:Wat4h7ei3oggv8r5"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <!-- eachPost topic --> <div id="flow-post-wat4h7ei3sej3cpd" class="flow-post" data-flow-id="wat4h7ei3sej3cpd" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Proactive_programming" class="mw-userlink"> <bdi>Proactive programming</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Proactive_programming" class="" title="User talk:Proactive programming">talk</a></span><span><a href="/wiki/Special:Contributions/Proactive_programming" title="Contributions/Proactive programming">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,971,0,0]}">The policy of "removing deprecated code after 1 major release (or 2)" has a really MAJOR problem. It has to do with extensions. With extensions that are not used by MediaWiki (and maybe not used by a lot of people), the extensions may only get updated during LTS revisions. When every single major release that is not a LTS release can have breaking deprecated code, when a programmer comes along and tries to bring old extensions up to date (usable with the new LTS), there is no central "checklist" (or anything) indicating what exactly has changed. Even a list would be helpful. Then at least somebody can create a utility (maintenance file) that can be run against an extension to determine what things need to be updated to be compliant with the new LTS. Specifically, I am talking about third party extensions that run in 1.31, but do not run in 1.36 (for a variety of reasons). Some of which just kind of scrapped by when going from 1.29 (or less) to 1.31. </p> <p data-parsoid="{&quot;dsr&quot;:[972,1328,0,0]}"> <br data-parsoid="{&quot;dsr&quot;:[973,973,0,0]}"/> The whole point of a LTS is so that a company (or third party extension developer) does not need to worry about all of the little changes that happen between LTS version and can just focus on the LTS versions. But it does not seem as though the development team at MediaWiki is paying attention at all to people trying to move from 1.31 LTS to 1.36 LTS.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1623616968" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">20:42, 13 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;topic_showPostId&#x3D;wat4h7ei3sej3cpd#flow-post-wat4h7ei3sej3cpd"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-wat4rxjcpq34owui" class="flow-post" data-flow-id="wat4rxjcpq34owui" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Proactive_programming" class="mw-userlink"> <bdi>Proactive programming</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Proactive_programming" class="" title="User talk:Proactive programming">talk</a></span><span><a href="/wiki/Special:Contributions/Proactive_programming" title="Contributions/Proactive programming">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,457,0,0]}">There needs to be a maintenance function that can at least point out to a third party developer which functions calls (or hooks) are deprecated. Something like "extensionLintChecker.php" and "skinLintChecker.php" for skins. Something that will produce a report saying "File:myextension.php" is using "Deprecated function "nogo()". Replaced by "yesnow1() and againnow()" (or something to point the developer in the right direction to fixing the extension.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1623617289" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">20:48, 13 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;topic_showPostId&#x3D;wat4rxjcpq34owui#flow-post-wat4rxjcpq34owui"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-watelsejyg11ijkz" class="flow-post" data-flow-id="watelsejyg11ijkz" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Dinoguy1000" class="mw-userlink"> <bdi>Dinoguy1000</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Dinoguy1000" class="" title="User talk:Dinoguy1000">talk</a></span><span><a href="/wiki/Special:Contributions/Dinoguy1000" title="Contributions/Dinoguy1000">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,134,0,0]}">It's probably not what you're looking for, but each version's release notes includes a list of deprecated (and removed) code features.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1623627879" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">23:44, 13 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;topic_showPostId&#x3D;watelsejyg11ijkz#flow-post-watelsejyg11ijkz"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-wau91ueripslcpgw" class="flow-post" data-flow-id="wau91ueripslcpgw" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:TheDJ" class="mw-userlink"> <bdi>TheDJ</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:TheDJ" class="" title="User talk:TheDJ">talk</a></span><span><a href="/wiki/Special:Contributions/TheDJ" title="Contributions/TheDJ">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,308,0,0]}">Also most extensions are checked via <a rel="nofollow mw:ExtLink" href="https://codesearch.wmcloud.org/search/" class="external free" data-parsoid="{&quot;stx&quot;:&quot;url&quot;,&quot;dsr&quot;:[37,75,0,0]}">https://codesearch.wmcloud.org/search/</a> in general, so this can only rly happen to extensions that have not been added to that. That service is managed <a rel="mw:ExtLink" href="https://gerrit.wikimedia.org/g/labs/codesearch" class="external free" data-parsoid="{&quot;stx&quot;:&quot;url&quot;,&quot;dsr&quot;:[188,234,0,0]}">https://gerrit.wikimedia.org/g/labs/codesearch</a> and you can also file a phabricator ticket to get extensions added to it.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1623660681" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">08:51, 14 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;topic_showPostId&#x3D;wau91ueripslcpgw#flow-post-wau91ueripslcpgw"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-wauz98as9p4y9b9c" class="flow-post" data-flow-id="wauz98as9p4y9b9c" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdforrester_(WMF)" class="mw-userlink"> <bdi>Jdforrester (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdforrester_(WMF)" class="" title="User talk:Jdforrester (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Jdforrester_(WMF)" title="Contributions/Jdforrester (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,243,0,0]}">"LTS" is a commitment about MediaWiki itself, including the skins and extensions shipped in the "tarball". It's not a general commitment for all Wikimedia-authored extensions, and certainly not by the hundreds of independent extension authors.</p> <p data-parsoid="{&quot;dsr&quot;:[245,414,0,0]}">If you're using an extension that doesn't bother to keep current with MediaWiki except for LTSes, I'd very strongly counsel you to stop using it and find an alternative.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1623688914" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">16:41, 14 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;topic_showPostId&#x3D;wauz98as9p4y9b9c#flow-post-wauz98as9p4y9b9c"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-wbu0nxco1fy01e1m" class="flow-post" data-flow-id="wbu0nxco1fy01e1m" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,178,0,0]}">"Long Term Support" means WMF provides bug fixes and security fixes for two years. It provides no guarantees about backwards compatibility, and it never was intended to do that. </p> <p data-parsoid="{&quot;dsr&quot;:[180,532,0,0]}">Extension developers who choose to only update their extension for LTS releases may see their extension not working with intermediate releases. If that was not the case, we couldn't make any "major" releases between LTS releases. The very definition of a major release is that it breaks backwards compatibility - otherwise, it would be a minor release.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1625047934" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">10:12, 30 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wat4h7ei3oggv8r5&amp;topic_showPostId&#x3D;wbu0nxco1fy01e1m#flow-post-wbu0nxco1fy01e1m"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="insert" > <form class="flow-post flow-reply-form" method="POST" action="" id="flow-reply-wat4h7ei3oggv8r5" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="wat4h7ei3oggv8r5" /> <div class="flow-error-container"> </div> <div class="flow-anon-warning"> <div class="flow-anon-warning-mobile"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-down flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="insert" > <div class="flow-anon-warning-desktop"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-left flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-wat4h7ei3oggv8r5-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to &quot;Deprecation of code and LTS releases&quot;" data-role="content" ></textarea> </div> <div class="flow-form-actions flow-form-collapsible"> <button data-role="submit" class="mw-ui-button mw-ui-progressive" >Reply</button> <small class="flow-terms-of-use plainlinks">By clicking "Reply", you agree to our <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and agree to irrevocably release your text under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0 License</a> and <a class="external text" href="https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License">GFDL</a>.</small> </div> </form> </script></div> <div class="flow-topic flow-load-interactive" id="flow-topic-w80nioabt7zac76z" data-flow-id="w80nioabt7zac76z" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1625048307000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="Removing obsolete unused behavior without delay" data-flow-load-handler="topicTitle" > Removing obsolete unused behavior without delay</h2> <div class="flow-topic-meta"> 2 comments &bull; <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80nioabt7zac76z&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1625048307" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">10:18, 30 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">2</span></span> </div> <div class="flow-topic-summary-container " > <div class="flow-error-container"> </div> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show topic action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80nioabt7zac76z&amp;action&#x3D;history"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-clock"><span>History</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/wiki/Topic:W80nioabt7zac76z"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet flow-ui-summarize-topic-link" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80nioabt7zac76z&amp;action&#x3D;edit-topic-summary"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-listBullet"><span>Summarize</span></span></a></li></section> <section></section> </ul> </div> </div> <!-- eachPost topic --> <div id="flow-post-w80nioabtbxckb57" class="flow-post" data-flow-id="w80nioabtbxckb57" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,28,0,0]}">The policy currently states:</p> <ul data-parsoid="{&quot;dsr&quot;:[29,256,0,0]}"><li data-parsoid="{&quot;dsr&quot;:[29,256,1,0,1,0]}">Obsolete behavior MAY be removed right away if it appears to have never been used within the Wikimedia maintained code and the MediaWiki ecosystem (except in the repo that defines it), and seems unlikely to be used elsewhere.</li></ul> <p data-parsoid="{&quot;dsr&quot;:[258,432,0,0]}">This misses the point that code that has been in use only in the repo it is defined in, and perhaps in extensions maintained by the same entity, should allowed to be removed.</p> <p data-parsoid="{&quot;dsr&quot;:[434,484,0,0]}">Perhaps this point should be rewritten as follows:</p> <ul data-parsoid="{&quot;dsr&quot;:[485,764,0,0]}"><li data-parsoid="{&quot;dsr&quot;:[485,764,1,0,1,0]}">Obsolete behavior MAY be removed right away if it appears to have never been used within the MediaWiki Ecosystem in a repository other than the one it is defined in. Even then, it MAY be removed right away if it has only been used in repositories maintained by the same entity.</li></ul></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80nioabt7zac76z&amp;action&#x3D;reply&amp;topic_postId&#x3D;w80nioabtbxckb57#flow-post-w80nioabtbxckb57" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80nioabt7zac76z&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1619720117" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">18:15, 29 April 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80nioabt7zac76z&amp;topic_showPostId&#x3D;w80nioabtbxckb57#flow-post-w80nioabtbxckb57"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-wbu10e1fkm4n0qa0" class="flow-post" data-flow-id="wbu10e1fkm4n0qa0" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,114,0,0]}">Also, perhaps it would make sense to clarify how this provision interacts with another part of the policy, namely:</p> <ul data-parsoid="{&quot;dsr&quot;:[115,295,0,0]}"><li data-parsoid="{&quot;dsr&quot;:[115,295,1,0,1,0]}">If it is not reasonably possible for the deprecated code to emit deprecation warnings, hard deprecation can be applied by announcing the removal on wikitech-l in a timely manner.</li></ul> <p data-parsoid="{&quot;dsr&quot;:[297,701,0,0]}">Taken together, this means that certain breaking changes may only require an email to wikitech-l and a brief wait. This may be useful e.g. when it is desirable to change the return type of a method in a way that does not break any known callers: there is no way to deprecate a return type, so if nothing seems to rely on the old type, it's ok to change it after asking about concerns on the mailing list.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80nioabt7zac76z&amp;action&#x3D;reply&amp;topic_postId&#x3D;w80nioabt7zac76z#flow-post-w80nioabt7zac76z" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80nioabt7zac76z&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1625048307" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">10:18, 30 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80nioabt7zac76z&amp;topic_showPostId&#x3D;wbu10e1fkm4n0qa0#flow-post-wbu10e1fkm4n0qa0"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="replace" data-target="~ a" > <form class="flow-post flow-reply-form" method="POST" action="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80nioabt7zac76z&amp;action&#x3D;reply&amp;topic_postId&#x3D;w80nioabt7zac76z#flow-post-w80nioabt7zac76z-form-content" id="flow-reply-w80nioabt7zac76z" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="w80nioabt7zac76z" /> <div class="flow-error-container"> </div> <div class="flow-anon-warning"> <div class="flow-anon-warning-mobile"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-down flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="insert" > <div class="flow-anon-warning-desktop"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-left flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-w80nioabt7zac76z-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to &quot;Removing obsolete unused behavior without delay&quot;" data-role="content" ></textarea> </div> <div class="flow-form-actions flow-form-collapsible"> <button data-role="submit" class="mw-ui-button mw-ui-progressive" >Reply</button> <small class="flow-terms-of-use plainlinks">By clicking "Reply", you agree to our <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and agree to irrevocably release your text under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0 License</a> and <a class="external text" href="https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License">GFDL</a>.</small> </div> </form> </script> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80nioabt7zac76z&amp;action&#x3D;reply&amp;topic_postId&#x3D;w80nioabt7zac76z#flow-post-w80nioabt7zac76z-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to &quot;Removing obsolete unused behavior without delay&quot;</a> </div> <div class="flow-topic flow-load-interactive flow-topic-moderatestate-lock flow-topic-moderated flow-element-collapsible flow-element-collapsed" id="flow-topic-wa46yy9k39w4qodc" data-flow-id="wa46yy9k39w4qodc" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1625047479000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive flow-collapse-toggle flow-click-interactive" data-flow-topic-title="Removing @stable on soft deprecation" data-flow-load-handler="topicTitle" data-flow-interactive-handler="collapserCollapsibleToggle" > <span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-check"></span> Removing @stable on soft deprecation</h2> <div class="flow-topic-meta"> <a class="expand-collapse-posts-link flow-collapse-toggle flow-click-interactive" href="javascript:void(0);" title="View comments" data-collapsed-title="View comments" data-expanded-title="Hide comments" data-flow-interactive-handler="collapserCollapsibleToggle" >8 comments</a> &bull; <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1625047479" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">10:04, 30 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">8</span></span> </div> <div class="flow-topic-summary-container flow-collapse-toggle flow-click-interactive" data-flow-interactive-handler="collapserCollapsibleToggle" > <div class="flow-error-container"> </div> <div class="flow-topic-summary"> <div class="flow-topic-summary-author"> Summary by DKinzler (WMF) </div> <div class="flow-topic-summary-content mw-parser-output"> <section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,27,0,0]}">Wording clarified by James.</p></section> </div> <div style="clear: both;"></div> </div> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show topic action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;action&#x3D;history"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-clock"><span>History</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/wiki/Topic:Wa46yy9k39w4qodc"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <!-- eachPost topic --> <div id="flow-post-wa46yy9k3du6ysbk" class="flow-post" data-flow-id="wa46yy9k3du6ysbk" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Lucas_Werkmeister_(WMDE)" class="mw-userlink"> <bdi>Lucas Werkmeister (WMDE)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Lucas_Werkmeister_(WMDE)" class="" title="User talk:Lucas Werkmeister (WMDE)">talk</a></span><span><a href="/wiki/Special:Contributions/Lucas_Werkmeister_(WMDE)" title="Contributions/Lucas Werkmeister (WMDE)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,348,0,0]}">The policy seems to suggest or assume that being <code data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[49,69,6,7]}">@stable</code> and <code data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[74,98,6,7]}">@deprecated</code> are mutually exclusive. Some stability types explicitly state this (such as <i data-parsoid="{&quot;dsr&quot;:[175,193,2,2]}">stable to call</i> and <i data-parsoid="{&quot;dsr&quot;:[198,216,2,2]}">stable to type</i>), in others it seems to be implied (e.g. <i data-parsoid="{&quot;dsr&quot;:[258,278,2,2]}">stable to extend</i>: <q data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[280,346,3,4]}">Only classes that are marked <code data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[312,342,6,7]}">@stable to extend</code></q>).</p> <p data-parsoid="{&quot;dsr&quot;:[350,464,0,0]}">To make this clearer, I suggest adding a bullet point similar to the following to the section on soft deprecation:</p> <ul data-parsoid="{&quot;dsr&quot;:[466,641,0,0]}"><li data-parsoid="{&quot;dsr&quot;:[466,641,1,0]}">Soft deprecated code SHOULD NOT be marked stable. Any <code data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[521,541,6,7]}">@stable</code> annotations should be removed at the same time that a <code data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[596,620,6,7]}">@deprecated</code> annotation is added.</li></ul> <p data-parsoid="{&quot;dsr&quot;:[643,698,0,0]}">And maybe also this to the section on hard deprecation:</p> <ul data-parsoid="{&quot;dsr&quot;:[700,748,0,0]}"><li data-parsoid="{&quot;dsr&quot;:[700,748,1,0]}">Hard deprecated code MUST NOT be marked stable.</li></ul></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <span> Edited </span> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;action&#x3D;compare-post-revisions&amp;topic_newRevision&#x3D;wa470geawubjamu4" class="flow-timestamp-anchor"> <span datetime="1622650054" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">16:07, 2 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;topic_showPostId&#x3D;wa46yy9k3du6ysbk#flow-post-wa46yy9k3du6ysbk"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-wa48x4dwfjlqr009" class="flow-post" data-flow-id="wa48x4dwfjlqr009" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DannyS712" class="mw-userlink"> <bdi>DannyS712</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DannyS712" class="" title="User talk:DannyS712">talk</a></span><span><a href="/wiki/Special:Contributions/DannyS712" title="Contributions/DannyS712">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,239,0,0]}">I agree that they are mutually exclusive and that @stable should be removed upon deprecation. If this gets added to the official policy, it might be worth having a codesniffer warning for both @stable and @deprecated in the same doc block.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1622652109" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">16:41, 2 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;topic_showPostId&#x3D;wa48x4dwfjlqr009#flow-post-wa48x4dwfjlqr009"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-wafpa22iqknuu49l" class="flow-post" data-flow-id="wafpa22iqknuu49l" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdforrester_(WMF)" class="mw-userlink"> <bdi>Jdforrester (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdforrester_(WMF)" class="" title="User talk:Jdforrester (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Jdforrester_(WMF)" title="Contributions/Jdforrester (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,170,0,0]}">I agree that we should remove them on deprecation, but perhaps in our <code data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[70,94,6,7]}">@deprecated</code> tags we should explicitly say that it used to be stable to extend/<i data-parsoid="{&quot;dsr&quot;:[161,169,2,2]}">etc.</i>?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1623096378" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">20:06, 7 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;topic_showPostId&#x3D;wafpa22iqknuu49l#flow-post-wafpa22iqknuu49l"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-wagwjsqxncy50y9a" class="flow-post" data-flow-id="wagwjsqxncy50y9a" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Lucas_Werkmeister_(WMDE)" class="mw-userlink"> <bdi>Lucas Werkmeister (WMDE)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Lucas_Werkmeister_(WMDE)" class="" title="User talk:Lucas Werkmeister (WMDE)">talk</a></span><span><a href="/wiki/Special:Contributions/Lucas_Werkmeister_(WMDE)" title="Contributions/Lucas Werkmeister (WMDE)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,83,0,0]}">Hm, I just noticed this in <a href="/wiki/Stable_interface_policy#Add_guarantees" title="Stable interface policy" rel="mw:WikiLink" about="#mwt1" typeof="mw:Transclusion" data-parsoid="{&quot;stx&quot;:&quot;piped&quot;,&quot;a&quot;:{&quot;href&quot;:&quot;./Stable_interface_policy#Add_guarantees&quot;},&quot;sa&quot;:{&quot;href&quot;:&quot;Stable interface policy#Add guarantees&quot;},&quot;dsr&quot;:[27,82,null,null],&quot;pi&quot;:[[{&quot;k&quot;:&quot;1&quot;},{&quot;k&quot;:&quot;2&quot;}]]}" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;section link&quot;,&quot;href&quot;:&quot;./Template:Section_link&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;Stable interface policy&quot;},&quot;2&quot;:{&quot;wt&quot;:&quot;Add guarantees&quot;}},&quot;i&quot;:0}}]}">Stable interface policy §<span typeof="mw:Entity"> </span>Add guarantees</a>:</p> <blockquote data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[85,669,12,13]}"><p data-parsoid="{&quot;dsr&quot;:[97,529,0,0]}"> The <code data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[102,122,6,7]}">@stable</code> annotations can be followed by a <code data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[156,185,6,7]}">Deprecated since</code> segment to indicate that a particular use of the class or method is currently deprecated. This can be used to indicate that extensions should no longer subclass, but may still call public methods. This guruantee may then be removed in the next release. Note that there is currently no hard-deprecation for the removal of stability guarantees. </p><div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr" typeof="mw:Extension/syntaxhighlight" about="#mwt3" data-parsoid="{&quot;dsr&quot;:[529,655,28,18]}" data-mw="{&quot;name&quot;:&quot;syntaxhighlight&quot;,&quot;attrs&quot;:{&quot;lang&quot;:&quot;php&quot;},&quot;body&quot;:{&quot;extsrc&quot;:&quot;\n/**\n * @stable to extend Deprecated since 1.35\n */\nclass Foo {\n /* &#x2026; */\n}\n&quot;}}"><pre><span></span><span class="sd">/**</span> <span class="sd"> * @stable to extend Deprecated since 1.35</span> <span class="sd"> */</span> <span class="k">class</span> <span class="nc">Foo</span> <span class="p">{</span> <span class="cm">/* … */</span> <span class="p">}</span> </pre></div> </blockquote> <p data-parsoid="{&quot;dsr&quot;:[671,716,0,0]}">Not sure what that means for this proposal…</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1623142997" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">09:03, 8 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;topic_showPostId&#x3D;wagwjsqxncy50y9a#flow-post-wagwjsqxncy50y9a"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-wam4xbvr58htkj61" class="flow-post" data-flow-id="wam4xbvr58htkj61" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdforrester_(WMF)" class="mw-userlink"> <bdi>Jdforrester (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdforrester_(WMF)" class="" title="User talk:Jdforrester (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Jdforrester_(WMF)" title="Contributions/Jdforrester (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,80,0,0]}">Hmm. Perhaps <span about="#mwt1" typeof="mw:Transclusion" data-parsoid="{&quot;pi&quot;:[[{&quot;k&quot;:&quot;1&quot;}]],&quot;dsr&quot;:[13,43,null,null]}" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;FlowMention&quot;,&quot;href&quot;:&quot;./Template:FlowMention&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;DKinzler (WMF)&quot;}},&quot;i&quot;:0}}]}">@</span><a href="/wiki/User:DKinzler_(WMF)" title="User:DKinzler (WMF)" rel="mw:WikiLink" about="#mwt1" data-parsoid="{&quot;stx&quot;:&quot;piped&quot;,&quot;a&quot;:{&quot;href&quot;:&quot;./User:DKinzler_(WMF)&quot;},&quot;sa&quot;:{&quot;href&quot;:&quot;User:DKinzler (WMF)&quot;}}">DKinzler (WMF)</a> can suggest how he saw this working?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1623345950" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">17:25, 10 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;topic_showPostId&#x3D;wam4xbvr58htkj61#flow-post-wam4xbvr58htkj61"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-wanshxcm0ulxfan7" class="flow-post" data-flow-id="wanshxcm0ulxfan7" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,34,0,0]}">I think it should work as follows:</p> <p data-parsoid="{&quot;dsr&quot;:[36,145,0,0]}">When the intent is to remove, then `@stable` should just be replaced by `@deprecated`. No code should use it.</p> <p data-parsoid="{&quot;dsr&quot;:[147,479,0,0]}">If the intend is to keep but make internal, `@stable` can have a "deprecated since" qualifier added. This prevents internal use of the affected code from being flagged as deprecated by IDEs and other tooling, while giving extensions authors at least some warning. It's basically "deprecated for public use but ok to use internally".</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1623410132" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">11:15, 11 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;topic_showPostId&#x3D;wanshxcm0ulxfan7#flow-post-wanshxcm0ulxfan7"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-waocjubkf7jq8h6c" class="flow-post" data-flow-id="waocjubkf7jq8h6c" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdforrester_(WMF)" class="mw-userlink"> <bdi>Jdforrester (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdforrester_(WMF)" class="" title="User talk:Jdforrester (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Jdforrester_(WMF)" title="Contributions/Jdforrester (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,211,0,0]}">Thanks, that seems reasonable. I've <a rel="mw:ExtLink" href="https://www.mediawiki.org/w/index.php?title=Stable_interface_policy&amp;diff=4634412&amp;oldid=4533357&amp;diffmode=source" class="external text" data-parsoid="{&quot;dsr&quot;:[36,168,112,1]}">tweaked the wording</a>; hope this is correct and uncontroversial?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1623431737" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">17:15, 11 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;topic_showPostId&#x3D;waocjubkf7jq8h6c#flow-post-waocjubkf7jq8h6c"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-wbu08f77j5ggekpu" class="flow-post" data-flow-id="wbu08f77j5ggekpu" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,15,0,0]}">Yes, thank you!</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1625047470" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">10:04, 30 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:Wa46yy9k39w4qodc&amp;topic_showPostId&#x3D;wbu08f77j5ggekpu#flow-post-wbu08f77j5ggekpu"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="insert" > <form class="flow-post flow-reply-form" method="POST" action="" id="flow-reply-wa46yy9k39w4qodc" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="wa46yy9k39w4qodc" /> <div class="flow-error-container"> </div> <div class="flow-anon-warning"> <div class="flow-anon-warning-mobile"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-down flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="insert" > <div class="flow-anon-warning-desktop"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-left flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-wa46yy9k39w4qodc-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to &quot;Removing @stable on soft deprecation&quot;" data-role="content" ></textarea> </div> <div class="flow-form-actions flow-form-collapsible"> <button data-role="submit" class="mw-ui-button mw-ui-progressive" >Reply</button> <small class="flow-terms-of-use plainlinks">By clicking "Reply", you agree to our <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and agree to irrevocably release your text under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0 License</a> and <a class="external text" href="https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License">GFDL</a>.</small> </div> </form> </script></div> <div class="flow-topic flow-load-interactive" id="flow-topic-w80n8ilmvc2k57bp" data-flow-id="w80n8ilmvc2k57bp" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1619719813000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="Deprecation on master while a release is being prepared" data-flow-load-handler="topicTitle" > Deprecation on master while a release is being prepared</h2> <div class="flow-topic-meta"> 11 comments &bull; <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1619719813" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">18:10, 29 April 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">11</span></span> </div> <div class="flow-topic-summary-container " > <div class="flow-error-container"> </div> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show topic action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;history"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-clock"><span>History</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/wiki/Topic:W80n8ilmvc2k57bp"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li><li><a class="mw-ui-button mw-ui-quiet flow-ui-summarize-topic-link" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;edit-topic-summary"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-listBullet"><span>Summarize</span></span></a></li></section> <section></section> </ul> </div> </div> <!-- eachPost topic --> <div id="flow-post-w80n8ilmvg0mdb9x" class="flow-post" data-flow-id="w80n8ilmvg0mdb9x" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,28,0,0]}">The policy currently states:</p> <ul data-parsoid="{&quot;dsr&quot;:[29,416,0,0]}"><li data-parsoid="{&quot;dsr&quot;:[29,250,1,0,1,0]}">Deprecations and removals SHOULD NOT be performed shortly before a release branch or between release candidates, to give extension authors time to fix any issues that may arise, and avoid broken snapshots of extensions.</li> <li data-parsoid="{&quot;dsr&quot;:[251,416,1,0,1,0]}">Deprecations and removals MUST first take place on the master branch. Deprecations and removals SHOULD NOT be backported to release branches or release candidates.</li></ul> <p data-parsoid="{&quot;dsr&quot;:[418,773,0,0]}">It seems like the first bullet point is redundant and misleading: we can still do deprecations on the master branch while release candidates are being prepared. We just shouldn't add deprecations to the branch that is going to be released. Since that is already covered by the wording in the second point, I think the first point should simply be removed.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;reply&amp;topic_postId&#x3D;w80n8ilmvg0mdb9x#flow-post-w80n8ilmvg0mdb9x" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1619719813" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">18:10, 29 April 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;topic_showPostId&#x3D;w80n8ilmvg0mdb9x#flow-post-w80n8ilmvg0mdb9x"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-w80rfbcsx6n3a14w" class="flow-post" data-flow-id="w80rfbcsx6n3a14w" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdforrester_(WMF)" class="mw-userlink"> <bdi>Jdforrester (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdforrester_(WMF)" class="" title="User talk:Jdforrester (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Jdforrester_(WMF)" title="Contributions/Jdforrester (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,266,0,0]}">Agreed on the point about "being prepared", but the main part should stay. It's really unhelpful to make large breaking changes (which deprecations are, in effect) a few days or hours before a branch is cut, and doing so just afterwards can make backports very hard.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;reply&amp;topic_postId&#x3D;w80rfbcsx6n3a14w#flow-post-w80rfbcsx6n3a14w" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <span> Edited </span> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;compare-post-revisions&amp;topic_newRevision&#x3D;w80rhmctb3rzjzlz" class="flow-timestamp-anchor"> <span datetime="1619724395" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">19:26, 29 April 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;topic_showPostId&#x3D;w80rfbcsx6n3a14w#flow-post-w80rfbcsx6n3a14w"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-w89rsz5zjhce9qv6" class="flow-post" data-flow-id="w89rsz5zjhce9qv6" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,152,0,0]}">Should we be more specific about what "shortly" means? A week should do, right? We'd need some kind of official "pencils down" warning for this to work.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;reply&amp;topic_postId&#x3D;w89rsz5zjhce9qv6#flow-post-w89rsz5zjhce9qv6" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1620073807" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">20:30, 3 May 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;topic_showPostId&#x3D;w89rsz5zjhce9qv6#flow-post-w89rsz5zjhce9qv6"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-w8bj4d6v283ktpql" class="flow-post" data-flow-id="w8bj4d6v283ktpql" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdforrester_(WMF)" class="mw-userlink"> <bdi>Jdforrester (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdforrester_(WMF)" class="" title="User talk:Jdforrester (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Jdforrester_(WMF)" title="Contributions/Jdforrester (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,361,0,0]}">No, not just a week. I'd recommend a month before and after the branch point, generally. This isn't about Wikimedia staff fixing things (where a week's notice is very tight but might be OK), this is about the wider ecosystem, right? People might not even notice that their extension no longer passes CI for a week or two after the deprecation, let alone fix it.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;reply&amp;topic_postId&#x3D;w8bj4d6v283ktpql#flow-post-w8bj4d6v283ktpql" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1620142023" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:27, 4 May 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;topic_showPostId&#x3D;w8bj4d6v283ktpql#flow-post-w8bj4d6v283ktpql"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-w8bka8fz0gzk5cep" class="flow-post" data-flow-id="w8bka8fz0gzk5cep" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,141,0,0]}">That would mean not making deprecations in two out of six months. That seems like a massive impediment. Can't we just run CI for all of them?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;reply&amp;topic_postId&#x3D;w8bka8fz0gzk5cep#flow-post-w8bka8fz0gzk5cep" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1620143276" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:47, 4 May 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;topic_showPostId&#x3D;w8bka8fz0gzk5cep#flow-post-w8bka8fz0gzk5cep"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-w8bxo3ob8gnlhals" class="flow-post" data-flow-id="w8bxo3ob8gnlhals" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdforrester_(WMF)" class="mw-userlink"> <bdi>Jdforrester (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdforrester_(WMF)" class="" title="User talk:Jdforrester (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Jdforrester_(WMF)" title="Contributions/Jdforrester (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,487,0,0]}">No? Running &gt;&gt;US$1k worth of CI CPU time for every patch to MediaWiki core, and then doing something with that result, would be a massive change to our CI budget and expectations for developers. (If a patch in core causes a failure in an extension, how is that communicated? To whom? How do maintainers find out that they need to do something? How do core developers not end up deluged by false positive "failure" messages from the dozens of extensions that are broken already? <i data-parsoid="{&quot;dsr&quot;:[478,486,2,2]}">Etc.</i>)</p> <p data-parsoid="{&quot;dsr&quot;:[489,589,0,0]}">Also, this is just documenting current expectations, it's not a change to the current reality, AIUI?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;reply&amp;topic_postId&#x3D;w8bxo3ob8gnlhals#flow-post-w8bxo3ob8gnlhals" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1620157697" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">19:48, 4 May 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;topic_showPostId&#x3D;w8bxo3ob8gnlhals#flow-post-w8bxo3ob8gnlhals"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-w8d4ehv59oeby9tz" class="flow-post" data-flow-id="w8d4ehv59oeby9tz" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,144,0,0]}">Not doing deprecations for a month before and after a branch cut is definitely not current reality, and never has been as far as I can remember.</p> <p data-parsoid="{&quot;dsr&quot;:[146,348,0,0]}">My suggestion was to run CI on all of them when doing the rc0 branch, not on every patch. My hope is that this would result in extension maintainers noticing and fixing issues before the actual release.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;reply&amp;topic_postId&#x3D;w8d4ehv59oeby9tz#flow-post-w8d4ehv59oeby9tz" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <span> Edited </span> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;compare-post-revisions&amp;topic_newRevision&#x3D;w8d4fece3yocqh79" class="flow-timestamp-anchor"> <span datetime="1620203764" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">08:36, 5 May 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;topic_showPostId&#x3D;w8d4ehv59oeby9tz#flow-post-w8d4ehv59oeby9tz"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-w8doxjxi3xecsfym" class="flow-post" data-flow-id="w8doxjxi3xecsfym" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdforrester_(WMF)" class="mw-userlink"> <bdi>Jdforrester (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdforrester_(WMF)" class="" title="User talk:Jdforrester (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Jdforrester_(WMF)" title="Contributions/Jdforrester (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,243,0,0]}">I mean, I often C-1 patches that would be disruptive, as do many of the usual crowd. I'd encourage you to consider doing the same, out of respect for the time of colleagues and particularly the Security team when making last-minute back-ports.</p> <p data-parsoid="{&quot;dsr&quot;:[245,472,0,0]}">The wider suggestion is an interesting idea. You should pitch it to RelEng, though I imagine they'd want to defer such work until after the GitLab migration rather than implementing such a tool from scratch twice within a year.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;reply&amp;topic_postId&#x3D;w8doxjxi3xecsfym#flow-post-w8doxjxi3xecsfym" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1620225855" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">14:44, 5 May 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;topic_showPostId&#x3D;w8doxjxi3xecsfym#flow-post-w8doxjxi3xecsfym"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-w8dvkd5u46morbm7" class="flow-post" data-flow-id="w8dvkd5u46morbm7" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,460,0,0]}">To clarify: I agree that we should not do <i data-parsoid="{&quot;dsr&quot;:[42,55,2,2]}">backports</i> shortly before a release. Deprecations and removals should not be backported at all. But doing a deprecation on <i data-parsoid="{&quot;dsr&quot;:[168,178,2,2]}">master</i> a week before or after the rc0 branch is cut seems fine to me. I'm not sure I understand the problem with that. Extensions authors still have a month to fix problems between rc0 and the actual release, right? Maybe I'm misunderstanding when and how extensions snapshots are made...</p> <p data-parsoid="{&quot;dsr&quot;:[462,662,0,0]}">As to running CI for all extensions... it wouldn't be hard to write a script that pushes a DNM patch to every repo, right? And maybe even automatically file tickets if these patches fail to pass CI...</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;reply&amp;topic_postId&#x3D;w8dvkd5u46morbm7#flow-post-w8dvkd5u46morbm7" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1620233002" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">16:43, 5 May 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;topic_showPostId&#x3D;w8dvkd5u46morbm7#flow-post-w8dvkd5u46morbm7"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-w8ien826rcztxnrd" class="flow-post" data-flow-id="w8ien826rcztxnrd" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Jdforrester_(WMF)" class="mw-userlink"> <bdi>Jdforrester (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Jdforrester_(WMF)" class="" title="User talk:Jdforrester (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Jdforrester_(WMF)" title="Contributions/Jdforrester (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><blockquote data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[0,485,12,13]}"><p data-parsoid="{&quot;dsr&quot;:[12,472,0,0]}">To clarify: I agree that we should not do <i data-parsoid="{&quot;dsr&quot;:[54,67,2,2]}">backports</i> shortly before a release. Deprecations and removals should not be backported at all. But doing a deprecation on <i data-parsoid="{&quot;dsr&quot;:[180,190,2,2]}">master</i> a week before or after the rc0 branch is cut seems fine to me. I'm not sure I understand the problem with that. Extensions authors still have a month to fix problems between rc0 and the actual release, right? Maybe I'm misunderstanding when and how extensions snapshots are made...</p></blockquote><p data-parsoid="{&quot;dsr&quot;:[485,515,0,0]}">There are two sources of pain:</p> <ul data-parsoid="{&quot;dsr&quot;:[517,822,0,0]}"><li data-parsoid="{&quot;dsr&quot;:[517,665,1,0,1,0]}">People making big changes "just" after the branch is cut, before it's released. This pain mostly affects MediaWiki itself and deployed extensions.</li> <li data-parsoid="{&quot;dsr&quot;:[666,822,1,0,1,0]}">People making big changes "just" before the branch is cut. This pain mostly affects those extension developers who aren't pushing a patch every few hours.</li></ul> <p data-parsoid="{&quot;dsr&quot;:[824,1790,0,0]}">Branches are cut from master at the same time or very shortly after the "final" alpha deployment branch is, for all ~1800 extensions and skins (not just the ~200 in Wikimedia production). After that, there's a period of manual testing for things that no-one cares about except in releases, like the installer, and a bunch of bugs are found and fixed. As with all Wikimedia development, those changes are made first to the master branch and then back-ported. We also backport major bug fixes that are discovered during the week of the deployment. The general guidance is that this post-cut process can take up to six weeks until rc.0 is cut, though in practice I'd not worry about it much beyond the first three–four. Naturally, LTS releases make for even more pressure to get things out of the door, and so rc.0 can unveil lots of bugs and need several follow-ups (as we found with the 1.35 release), but in general it's pretty free sailing after rc.0 is released.</p> <p data-parsoid="{&quot;dsr&quot;:[1792,2187,0,0]}">For the first area of pain, large scale refactors or removals of code very frequently mean that these back-ports can't be easily made, or in some cases have to be re-written from scratch. In general the burden of this churn doesn't fall on the person that made the work by merging the refactor so swiftly, but on the bug fixer (or worse, someone like me just trying to help the release get out).</p> <p data-parsoid="{&quot;dsr&quot;:[2189,2760,0,0]}">For the second area of pain, hard deprecations are, per long-standing development policy, effectively a breaking change for development (and for Wikimedia-deployed code), as they make CI fail. If one were <i data-parsoid="{&quot;dsr&quot;:[2394,2402,2,2]}">e.g.</i> to hard-deprecate the User class a week before REL1_37 were branched, hundreds of extensions would immediately be broken for development, and either their owners would find out a month or two later when they next pushed a patch, or (more frequently) helpers like me or tools like LibraryUpgrader would encounter it when fixing up the repo for other reasons.</p><p data-parsoid="{&quot;dsr&quot;:[2760,2902,0,0]}"> I think this section should be split into statements about breaking changes and deprecations, and say different things about them, <i data-parsoid="{&quot;dsr&quot;:[2893,2901,2,2]}">e.g.</i>:</p><blockquote data-parsoid="{&quot;stx&quot;:&quot;html&quot;,&quot;dsr&quot;:[2902,3496,12,13]}"> <ul data-parsoid="{&quot;dsr&quot;:[2915,3295,0,0]}"><li data-parsoid="{&quot;dsr&quot;:[2915,3153,1,0,1,0]}">Breaking changes and large or risky refactors SHOULD NOT be performed during the few weeks running up to a release being branched until the first release candidate is made, to make it easier to back-port bug fixes to release candidates.</li> <li data-parsoid="{&quot;dsr&quot;:[3154,3295,1,0,1,0]}">Hard deprecations SHOULD NOT be performed shortly before a release branch, to give extension authors time to fix any issues that may arise.</li></ul> <ul data-parsoid="{&quot;dsr&quot;:[3297,3482,0,0]}"><li data-parsoid="{&quot;dsr&quot;:[3297,3482,1,0,1,0]}">Deprecations and removals MUST first take place on the master branch. Deprecations and removals SHOULD NOT be backported to release branches after the first release candidate is made.</li></ul> </blockquote><p data-parsoid="{&quot;dsr&quot;:[3496,3512,0,0]}">Would that work?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;reply&amp;topic_postId&#x3D;w8ien826rcztxnrd#flow-post-w8ien826rcztxnrd" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1620408701" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">17:31, 7 May 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;topic_showPostId&#x3D;w8ien826rcztxnrd#flow-post-w8ien826rcztxnrd"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <!-- eachPost topic --> <div id="flow-post-wa44rfbte54rwi6h" class="flow-post" data-flow-id="wa44rfbte54rwi6h" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DKinzler_(WMF)" class="mw-userlink"> <bdi>DKinzler (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DKinzler_(WMF)" class="" title="User talk:DKinzler (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DKinzler_(WMF)" title="Contributions/DKinzler (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{&quot;dsr&quot;:[0,500,0,0]}">Maybe I'm thinking about this wrong, but in my mind, the best time for extension developers to discover and fix issues is <i data-parsoid="{&quot;dsr&quot;:[122,131,2,2]}">after</i> the branch has been cut, so it's no longer a moving target. I assumed ExtensionDistributor will pick up any fixed made to the extension's snapshot branch. In my understanding, this would make sure that at the time of the release, the snapshot branches of extensions have also been fixed. To support this, CI should run against the extension when the branch is created.</p> <p data-parsoid="{&quot;dsr&quot;:[502,750,0,0]}">As to not making major changes between the branching and the release of rc0: I think this is reasonable, but would need to be announced more clearly. Also, having at least a rough idea of the timing beforehand would allow teams to plan around this.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;reply&amp;topic_postId&#x3D;w80n8ilmvc2k57bp#flow-post-w80n8ilmvc2k57bp" title="Reply" class="mw-ui-anchor mw-ui-progressive mw-ui-quiet flow-reply-link" >Reply</a> </span> <span class="flow-post-timestamp"> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;history" class="flow-timestamp-anchor"> <span datetime="1622647629" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:27, 2 June 2021</span> <span id="" class="flow-timestamp-ago">3 years ago</span> </span> </a> </span> </div> <div class="flow-menu flow-menu-hoverable"> <div class="flow-menu-js-drop"><a href="javascript:void(0);"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-ellipsis" aria-label="Show post action menu"></span></a></div> <ul class="mw-ui-button-container flow-list"> <section><li><a class="mw-ui-button mw-ui-quiet" href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;topic_showPostId&#x3D;wa44rfbte54rwi6h#flow-post-wa44rfbte54rwi6h"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-link"><span>Permalink</span></span></a></li></section> <section></section> </ul> </div> </div> <div class="flow-replies"> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="replace" data-target="~ a" > <form class="flow-post flow-reply-form" method="POST" action="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;reply&amp;topic_postId&#x3D;w80n8ilmvc2k57bp#flow-post-w80n8ilmvc2k57bp-form-content" id="flow-reply-w80n8ilmvc2k57bp" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="w80n8ilmvc2k57bp" /> <div class="flow-error-container"> </div> <div class="flow-anon-warning"> <div class="flow-anon-warning-mobile"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-down flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> <script name="handlebars-template-progressive-enhancement" type="text/x-handlebars-template-progressive-enhancement" data-type="insert" > <div class="flow-anon-warning-desktop"> <div class="flow-form-collapsible flow-ui-tooltip mw-ui-progressive flow-ui-tooltip-left flow-ui-tooltip-block plainlinks">You are not logged in. To receive attribution with your name instead of your IP address, you can <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin?returnto=Talk%3AStable_interface_policy">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AStable_interface_policy">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-w80n8ilmvc2k57bp-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to &quot;Deprecation on master while a release is being prepared&quot;" data-role="content" ></textarea> </div> <div class="flow-form-actions flow-form-collapsible"> <button data-role="submit" class="mw-ui-button mw-ui-progressive" >Reply</button> <small class="flow-terms-of-use plainlinks">By clicking "Reply", you agree to our <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and agree to irrevocably release your text under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC BY-SA 4.0 License</a> and <a class="external text" href="https://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License">GFDL</a>.</small> </div> </form> </script> <a href="//www.mediawiki.org/w/index.php?title&#x3D;Topic:W80n8ilmvc2k57bp&amp;action&#x3D;reply&amp;topic_postId&#x3D;w80n8ilmvc2k57bp#flow-post-w80n8ilmvc2k57bp-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to &quot;Deprecation on master while a release is being prepared&quot;</a> </div> <div class="flow-load-more"> <div class="flow-error-container"> </div> <div class="flow-ui-loading"><div class="mw-ui-icon mw-ui-icon-before mw-ui-icon-only mw-ui-icon-advanced"></div></div> <a data-flow-interactive-handler="apiRequest" data-flow-api-handler="loadMoreTopics" data-flow-api-target="< .flow-load-more" data-flow-load-handler="loadMore" data-flow-scroll-target="window" data-flow-scroll-container="&lt; .flow-topics" data-flow-template="flow_topiclist_loop.partial" href="//www.mediawiki.org/w/index.php?title&#x3D;Talk:Stable_interface_policy&amp;topiclist_offset-dir&#x3D;fwd&amp;topiclist_limit&#x3D;10&amp;topiclist_offset&#x3D;20210429181013&amp;topiclist_sortby&#x3D;updated" title="fwd" class="mw-ui-button mw-ui-progressive flow-load-interactive flow-ui-fallback-element"><span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-article-invert"></span> Load more</a> </div> </div> </div> <div class="flow-ui-load-overlay"></div> <div style="clear: both"></div> </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://www.mediawiki.org/wiki/Talk:Stable_interface_policy">https://www.mediawiki.org/wiki/Talk:Stable_interface_policy</a>"</div></div> <div id="catlinks" class="catlinks catlinks-allhidden" data-mw="interface"></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <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. Text in <a class="external text" href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents">the Help: namespace</a> is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/publicdomain/zero/1.0/">Creative Commons CC0 License</a>. By using this site, you agree to the <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy Policy</a>.</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/Project:About">About mediawiki.org</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Project: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/#/www.mediawiki.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="//m.mediawiki.org/w/index.php?title=Talk:Stable_interface_policy&amp;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\".\n[1.41] Please use Codex. See migration guidelines: https://www.mediawiki.org/wiki/Codex/Migrating_from_MediaWiki_UI");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.log.warn("This page is using the deprecated ResourceLoader module \"mediawiki.ui.input\".\n[1.41] Please use Codex. See migration guidelines: https://www.mediawiki.org/wiki/Codex/Migrating_from_MediaWiki_UI");mw.log.warn("This page is using the deprecated ResourceLoader module \"mediawiki.ui.icon\".\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-2ms4s","wgBackendResponseTime":941});});</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10