CINXE.COM
Talk:Wikimedia Engineering Architecture Principles - 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:Wikimedia Engineering Architecture Principles - 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":"c0f33f49-bb40-4750-ba0c-b919af463b46","wgCanonicalNamespace":"Talk","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":1,"wgPageName":"Talk:Wikimedia_Engineering_Architecture_Principles","wgTitle":"Wikimedia Engineering Architecture Principles","wgCurRevisionId":3161086,"wgRevisionId":0,"wgArticleId":785356,"wgIsArticle":false,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"flow-board","wgRelevantPageName":"Talk:Wikimedia_Engineering_Architecture_Principles","wgRelevantArticleId":785356,"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:Wikimedia Engineering Architecture Principles","categories":[],"specialCategoryLink":"/wiki/Special:Categories","workflow":"udfjucjyn56u6ugy","blocks":{"header":{"type":"header","editToken":null,"revision":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked"],"workflowId":"udfjucjyn56u6ugy","articleTitle":"Talk:Wikimedia Engineering Architecture Principles","revisionId":"uxoc9gt8gntp2hti","timestamp":"20190411200805","changeType":"edit-header","dateFormats":{"timeAndDate":"20:08, 11 April 2019","date":"11 April 2019","time":"20:08"},"properties":{"_key":"flow-rev-message-edit-header","user-links":{},"user-text":"DKinzler (WMF)"}, "isOriginalContent":false,"isModerated":false,"links":{"board-history":{"url":"//www.mediawiki.org/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles\u0026action=history","title":"hist","text":"hist"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles\u0026action=compare-header-revisions\u0026header_newRevision=uxoc9gt8gntp2hti","title":"diff","text":"diff"},"diff-prev":{"url":"//www.mediawiki.org/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles\u0026action=compare-header-revisions\u0026header_newRevision=uxoc9gt8gntp2hti","title":"prev","text":"prev"},"workflow":{"url":"//www.mediawiki.org/wiki/Talk:Wikimedia_Engineering_Architecture_Principles","title":"workflow","text":"workflow"},"header-revision":{"url":"//www.mediawiki.org/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles\u0026header_revId=uxoc9gt8gntp2hti\u0026action=view-header","title":"description revision","text": "description revision"}},"actions":{"edit":{"url":"//www.mediawiki.org/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles\u0026action=edit-header","title":"Edit description","text":"Edit description"},"undo":{"url":"//www.mediawiki.org/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles\u0026action=undo-edit-header\u0026header_startId=uxo8rw9bygbqi9oi\u0026header_endId=uxoc9gt8gntp2hti","title":"undo","text":"undo"}},"size":{"old":"159","new":"159"},"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":"uxoc9gt8gntp2hti","previousRevisionId":"uxo8rw9bygbqi9oi","isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,159,0,0]}\"\u003E\u003Cb data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,159,3,3]}\"\u003E\u003Cbig data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[3,156,5,6]}\"\u003EThis draft has entered the \u003Ca href=\"/wiki/RFC/Process\" class=\"mw-redirect\" title=\"RFC/Process\" rel=\"mw:WikiLink\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;piped\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./RFC/Process\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;RFC/Process\u0026quot;},\u0026quot;dsr\u0026quot;:[35,62,14,2]}\"\u003ERFC process\u003C/a\u003E. Please continue any discussion on the associated phabricator ticket, \u003Ca rel=\"mw:WikiLink/Interwiki\" href=\"https://phabricator.wikimedia.org/T220657\" title=\"phab:T220657\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;simple\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;https://phabricator.wikimedia.org/T220657\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;phab:T220657\u0026quot;},\u0026quot;isIW\u0026quot;:true,\u0026quot;dsr\u0026quot;:[133,149,2,2]}\"\u003Ephab:T220657\u003C/a\u003E.\u003C/big\u003E\u003C/b\u003E\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"}},"copyrightMessage":"","submitted":[],"errors":[],"title":"Talk:Wikimedia Engineering Architecture Principles","block-action-template":"","editFont":"monospace"},"topiclist":{"submitted":{"action":"view"},"errors":[],"sortby":"updated","roots":["uxquuo2ugvuh8ii0","uxpkxrhzklew3ets","uxt2basxfxhfi5gs","unl2nb3os3lemrfv","uvzq1ng81mfpt29u","uvixayupg8rct001","uups18r2rr3c4z76","uv4lml4qprt30ciz","unr4x0ic2ulbbgrs","uupsn72f6pq7xiyp"],"posts":{"unl2nb3os3lemrfv":["unl2nlxfwadupeqn"],"unl2nb3os7jguve3":["unl2nb3os7jguve3"],"uuprmt3c35gl5sqq":["uuprmt3c35gl5sqq"],"uups3ukubex3lw9d":["uups3ukubex3lw9d"],"uvdgfw9lu6zimm7c":["uvdgfw9lu6zimm7c"],"uvdrhxduxe9bhuie":["uvdrolyvnkllgmix"],"uvfq4l6abp548pzl":["uvfq4l6abp548pzl"],"uvg4yijq8ippbo2o":["uvg4yijq8ippbo2o"],"uvg8j4key4pmzxyl":["uvg8j4key4pmzxyl"],"uvirakrz9iklz1ng":["uvirakrz9iklz1ng"],"uvirtnn3cdveb1uk":["uvirtnn3cdveb1uk"],"uvquaw74pyesmb8l":["uvquaw74pyesmb8l"],"uwsny60n44i29iut":["uwsny60n44i29iut"], "uxhvnz7rwr8d9g69":["uxhvnz7rwr8d9g69"],"uxhvrr57zzl8i5gc":["uxhvrr57zzl8i5gc"],"uxiti3gvs7caa28e":["uxiti3gvs7caa28e"],"uxitv4ltbeeipe0x":["uxitv4ltbeeipe0x"],"uups18r2rr3c4z76":["uups18r2rt2d916a"],"uups18r2rv1ed35e":["uups18r2rv1ed35e"],"uv4hdkzholea2086":["uv4hdkzholea2086"],"uvg77ceci10a8vj4":["uvg77ceci10a8vj4"],"uvis2m0u17hfqa4g":["uvis2m0u17hfqa4g"],"uvqu5tct6s77vanx":["uvqu5tct6s77vanx"],"unr4x0ic2ulbbgrs":["unr4x0ic2wkcfiqw"],"unr4x0ic2yjdjkq0":["unr4x0ic2yjdjkq0"],"unty16132xam6r6k":["unty16132xam6r6k"],"uo0v9lvdsxw5j7hr":["uo0v9lvdsxw5j7hr"],"uo15u9h3g605sung":["uo15u9h3g605sung"],"uvg7ehtl8j89p3dx":["uvg7ehtl8j89p3dx"],"uupsn72f6pq7xiyp":["uupsn72f6rp91kxt"],"uupsn72f6toa5mwx":["uupsn72f6toa5mwx"],"uvg7czovqbgbf8d1":["uvg7czovqbgbf8d1"],"uv4lml4qprt30ciz":["uv4lml4qpts44ei3"],"uv4lml4qpvr58gh7":["uv4lml4qpvr58gh7"],"uvbmrkfjtyp35011":["uvbmrkfjtyp35011"],"uvg6utazicpkk80h":["uvg6wg8xx4dafaek"],"uvg864mroz2701oi":["uvg864mroz2701oi"],"uvhxd9lukd3eb6dl":["uvhxegwszd9n97a4"], "uviqy5ajy5dohlpm":["uviqy5ajy5dohlpm"],"uvixayupg8rct001":["uvixayupgaqdx1z5"],"uvixayupgcpf13y9":["uvixayupgcpf13y9"],"uvqur2eqbs5722fi":["uw668654oe62but9"],"uvzq1ng81mfpt29u":["uvzq1ng81oeqx48y"],"uvzq1ng81qds1682":["uvzq1ng81qds1682"],"uvzs4byqkfk4jdik":["uvzs4byqkfk4jdik"],"uvzsgd0j42qdu96x":["uvzsgd0j42qdu96x"],"uwsmcgl12xr82cnm":["ux1xj5xi2m33js4q"],"uwsmz45s4mpc3h6y":["uwsn2q2paah5w66t"],"uwsn97furjee2zj9":["uwsn97furjee2zj9"],"uwt0wwbw0zqrpsq5":["uwt0wwbw0zqrpsq5"],"uwt0zqkrtn2rio41":["uwt0zqkrtn2rio41"],"uwt8pkt9c0ug5689":["uwt8pkt9c0ug5689"],"uwu9g2yysqpx1043":["uwu9g2yysqpx1043"],"uwuok78e8zclu6z2":["uwuok78e8zclu6z2"],"uxpkxrhzklew3ets":["uy1a7wsw8lr1ai3l"],"uxpkxrhzkpcybis0":["uxpkxrhzkpcybis0"],"uxplft2n4yqm19di":["uxplgb491u8un095"],"uxquuo2ugvuh8ii0":["v8uzmq4kxc03dnaf"],"uxquuo2ugzsjgmg8":["uxquuo2ugzsjgmg8"],"uxtkmxjhxya9sjsa":["uxtkmxjhxya9sjsa"],"uxv2xatdybbmpd6u":["uxv2xatdybbmpd6u"],"uyh72uhhsytptwkh":["uyh72uhhsytptwkh"],"uyh76uu38j599dc0":["uyh76uu38j599dc0"], "uxt2basxfxhfi5gs":["uxt2basxfzggm7fw"],"uxt2basxg1fhq9f0":["uxt2basxg1fhq9f0"],"uxxc38w1iiiv5arc":["uxxc38w1iiiv5arc"]},"revisions":{"unl2nlxfwadupeqn":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"unl2nlxfwadupeqn","timestamp":"20181030182131","changeType":"edit-title","dateFormats":[],"properties":{"topic-of-post":{},"topic-of-post-text-from-html":{}},"isOriginalContent":false,"isModerated":false,"links":{"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=compare-post-revisions\u0026topic_newRevision=unl2nlxfwadupeqn","title":"diff", "text":"diff"},"diff-prev":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=compare-post-revisions\u0026topic_newRevision=unl2nlxfwadupeqn","title":"prev","text":"prev"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_revId=unl2nlxfwadupeqn\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=unl2nb3os3lemrfv#flow-post-unl2nb3os3lemrfv-form-content","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary" ,"title":"Summarize","text":"Summarize"}},"size":{"old":"22","new":"22"},"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":"unl2nlxfwadupeqn","previousRevisionId":"unl2nb3os5kfqtez","isLocked":false,"isModeratedNotLocked":false,"content":{"content":"More MUST, less SHOULD","format":"topic-title-html","plaintext":"More MUST, less SHOULD"},"watchable":false,"replyToId":null,"postId":"unl2nb3os3lemrfv","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":["unl2nb3os7jguve3","uuprmt3c35gl5sqq","uups3ukubex3lw9d","uvdgfw9lu6zimm7c","uvdrhxduxe9bhuie","uvfq4l6abp548pzl","uvg4yijq8ippbo2o","uvg8j4key4pmzxyl", "uvirakrz9iklz1ng","uvirtnn3cdveb1uk","uvquaw74pyesmb8l","uwsny60n44i29iut","uxhvnz7rwr8d9g69","uxhvrr57zzl8i5gc","uxitv4ltbeeipe0x"],"reply_count":16,"last_updated_readable":"08:45, 9 April 2019","last_updated":1554799534000},"unl2nb3os7jguve3":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"unl2nb3os7jguve3","timestamp":"20181030182122","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=unl2nb3os7jguve3#flow-post-unl2nb3os7jguve3","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=unl2nb3os7jguve3\u0026topic_revId=unl2nb3os7jguve3\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=unl2nb3os7jguve3#flow-post-unl2nb3os7jguve3","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize", "text":"Summarize"}},"size":{"old":"0","new":"544"},"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": "\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,160,0,0]}\"\u003EPerhaps more goals should be made into strong requirements (MUST), e.g. the principle of \"data austerity\", to collect and retain only the data we actually need.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[162,544,0,0]}\"\u003EWhile we should be careful not to create hard requirements that we cannot always meet, which would lead to such requirements to not be taken seriously, we shouldn't be \"doubly soft\": We can for instance say that horizontal scalability MUST be a design goal for services with high load - it being a goal does not mean the software cannot be deployed if this goal is not be fully met.\u003C/p\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"unl2nb3os7jguve3","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":[]},"uuprmt3c35gl5sqq":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uuprmt3c35gl5sqq","timestamp":"20190222235605","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post": {"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uuprmt3c35gl5sqq#flow-post-uuprmt3c35gl5sqq","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uuprmt3c35gl5sqq\u0026topic_revId=uuprmt3c35gl5sqq\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uuprmt3c35gl5sqq#flow-post-uuprmt3c35gl5sqq","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title": "Summarize","text":"Summarize"}},"size":{"old":"0","new":"225"},"author":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,28,0,0]}\"\u003ECurrently the document uses:\u003C/p\u003E\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[29,80,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[29,48,1,0]}\"\u003ESHOULD - 49 times\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[49,65,1,0]}\"\u003EMUST - 8 times\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[66,80,1,0]}\"\u003EMAY - 1 time\u003C/li\u003E\u003C/ul\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[82,225,0,0]}\"\u003EI just read the whole thing for the first time, and honestly it felt like a passive aggressive attack from someone giving drive-by code review.\u003C/p\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uuprmt3c35gl5sqq","isMaxThreadingDepth":false,"creator":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url": "/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"isNewPage":false,"replies":[]},"uups3ukubex3lw9d":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uups3ukubex3lw9d","timestamp":"20190223000435","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title" :"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uups3ukubex3lw9d#flow-post-uups3ukubex3lw9d","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uups3ukubex3lw9d\u0026topic_revId=uups3ukubex3lw9d\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uups3ukubex3lw9d#flow-post-uups3ukubex3lw9d","title":"Reply","text":"Reply"},"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"94"},"author":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,94,0,0]}\"\u003EEven the document itself only has a SHOULD endorsement from the Wikimedia Technical Committee.\u003C/p\u003E","format": "fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uups3ukubex3lw9d","isMaxThreadingDepth":false,"creator":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"isNewPage":false,"replies":[]},"uvdgfw9lu6zimm7c":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uvdgfw9lu6zimm7c","timestamp":"20190305150926","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false, "links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uvdgfw9lu6zimm7c#flow-post-uvdgfw9lu6zimm7c","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uvdgfw9lu6zimm7c\u0026topic_revId=uvdgfw9lu6zimm7c\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uvdgfw9lu6zimm7c#flow-post-uvdgfw9lu6zimm7c","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"1117"},"author":{"name":"MHolloway (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/MHolloway_(WMF)","title":"Contributions/MHolloway (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:MHolloway_(WMF)","title":"MHolloway (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:MHolloway_(WMF)","title":"User talk:MHolloway (WMF)","exists":true,"_BC_bools":["exists"]}},"id":2371822},"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,302,0,0]}\"\u003EAgreed. This struck me right away when reading the document. As a reflection of current reality, it seems pretty accurate, but if it's meant to be prescriptive (as I assume is the case), I'd like to see stronger stands, or at least some written justification of why SHOULDs are SHOULDs and not MUSTs.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[304,378,0,0]}\"\u003EPersonally, I consider at least the following current SHOULDs to be MUSTs:\u003C/p\u003E\n\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[380,1117,0,0]}\"\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[380,509,1,0]}\"\u003EAll points under the heading \"To ensure the data integrity of the content on WMF systems, and protect the privacy of our users\"\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[510,733,1,0]}\"\u003Esoftware that interacts with users MUST be designed to make key functionality available on devices with a variety of capability and restrictions \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[657,688,2,2]}\"\u003E[I'd also add form factors]\u003C/i\u003E, as well as potentially limited connectivity\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[734,807,1,0]}\"\u003Esoftware that interacts with users MUST follow accessibility guidelines\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[808,968,1,0]}\"\u003Edata formats and APIs that provide access to user generated content MUST be designed to ensure verifiability through the integration of provenance information\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[969,1117,1,0]}\"\u003Edata formats and APIs that provide access to user generated content MUST be designed to provide easy access to all necessary licensing information\u003C/li\u003E\n\u003C/ul\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uvdgfw9lu6zimm7c","isMaxThreadingDepth":false,"creator":{"name":"MHolloway (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/MHolloway_(WMF)","title":"Contributions/MHolloway (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:MHolloway_(WMF)","title":"MHolloway (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:MHolloway_(WMF)","title":"User talk:MHolloway (WMF)","exists":true,"_BC_bools":["exists"]}},"id":2371822},"isNewPage":false,"replies":[]},"uvdrolyvnkllgmix":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uvdrolyvnkllgmix","timestamp":"20190305183118","changeType":"edit-post","dateFormats":[],"properties":[], "isOriginalContent":false,"isModerated":false,"links":{"post-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history\u0026topic_postId=uvdrhxduxe9bhuie","title":"History","text":"History"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uvdrhxduxe9bhuie#flow-post-uvdrhxduxe9bhuie","title":"post","text":"post"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=compare-post-revisions\u0026topic_newRevision=uvdrolyvnkllgmix","title":"diff","text":"diff"},"diff-prev":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=compare-post-revisions\u0026topic_newRevision=uvdrolyvnkllgmix","title":"prev", "text":"prev"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uvdrhxduxe9bhuie\u0026topic_revId=uvdrolyvnkllgmix\u0026action=single-view","title":"post revision","text":"post revision"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uvdrhxduxe9bhuie#flow-post-uvdrhxduxe9bhuie","title":"Reply","text":"Reply"}},"size":{"old":"146","new":"339"},"author":{"name":"Kaldari","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Kaldari","title":"Contributions/Kaldari","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Kaldari","title":"Kaldari","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Kaldari","title":"User talk:Kaldari","exists":true,"_BC_bools":["exists"]}},"id":31661},"lastEditUser":{"name":"Kaldari","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url": "/wiki/Special:Contributions/Kaldari","title":"Contributions/Kaldari","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Kaldari","title":"Kaldari","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Kaldari","title":"User talk:Kaldari","exists":true,"_BC_bools":["exists"]}},"id":31661},"lastEditId":"uvdrolyvnkllgmix","previousRevisionId":"uvdrhxduxe9bhuie","isLocked":false,"isModeratedNotLocked":false,"content":{"content":"\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,339,0,0]}\"\u003EWould be nice to change \"comprehensive documentation SHOULD be maintained along with the code\" to MUST. I don't think that would be controversial. I don't agree with MHolloway about making \"follow accessibility guidelines\" a MUST. There are rare cases where other considerations (including accessibility) override accessibility guidelines.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"}, "watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uvdrhxduxe9bhuie","isMaxThreadingDepth":false,"creator":{"name":"Kaldari","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Kaldari","title":"Contributions/Kaldari","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Kaldari","title":"Kaldari","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Kaldari","title":"User talk:Kaldari","exists":true,"_BC_bools":["exists"]}},"id":31661},"isNewPage":false,"replies":[]},"uvfq4l6abp548pzl":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uvfq4l6abp548pzl","timestamp":"20190306153613","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uvfq4l6abp548pzl#flow-post-uvfq4l6abp548pzl","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uvfq4l6abp548pzl\u0026topic_revId=uvfq4l6abp548pzl\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uvfq4l6abp548pzl#flow-post-uvfq4l6abp548pzl","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"58"},"author":{"name":"CPettet (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/CPettet_(WMF)","title":"Contributions/CPettet (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:CPettet_(WMF)","title":"CPettet (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:CPettet_(WMF)","title":"User talk:CPettet (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1394537},"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,58,0,0]}\"\u003EWhat does 'MUST' mean in this case? Is there teeth to it?\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uvfq4l6abp548pzl","isMaxThreadingDepth":false,"creator":{"name":"CPettet (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/CPettet_(WMF)","title":"Contributions/CPettet (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:CPettet_(WMF)","title":"CPettet (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:CPettet_(WMF)","title":"User talk:CPettet (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1394537},"isNewPage":false,"replies":[]},"uvg4yijq8ippbo2o":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable", "isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uvg4yijq8ippbo2o","timestamp":"20190306200232","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uvg4yijq8ippbo2o#flow-post-uvg4yijq8ippbo2o","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uvg4yijq8ippbo2o\u0026topic_revId=uvg4yijq8ippbo2o\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uvg4yijq8ippbo2o#flow-post-uvg4yijq8ippbo2o","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"788"},"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,60,0,0]}\"\u003E\u0026gt; What does 'MUST' mean in this case? Is there teeth to it?\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[62,229,0,0]}\"\u003EThe \"teeth\" depend on the people enforcing this. At the very minimum, RFCs that violate a MUST will not be approved. Ideally, no code that violates a MUST is deployed.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[231,559,0,0]}\"\u003EIf we are serious about the MUST, any code that is currently live but violates a MUST would have to be pulled. If we made everything suggested in this thread a MUST and pulled everything that doesn't comply, we'd have to shut down the site tomorrow. That's actually the reason for having a lot of SHOULD and not that many MUSTs.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[561,788,0,0]}\"\u003EMaybe it makes more sense to go with a softer interpretation on MUST, that essentially only applies it to new code and major changes and rewrites. If we interpret it that way, we can have a lot more MUSTs. Does that sound good?\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uvg4yijq8ippbo2o","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":[]},"uvg8j4key4pmzxyl":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uvg8j4key4pmzxyl","timestamp":"20190306210641","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent": true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uvg8j4key4pmzxyl#flow-post-uvg8j4key4pmzxyl","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uvg8j4key4pmzxyl\u0026topic_revId=uvg8j4key4pmzxyl\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uvg8j4key4pmzxyl#flow-post-uvg8j4key4pmzxyl","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"280"},"author":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"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,280,0,0]}\"\u003EI think it would be better to write the standard that the working group wants even if there are parts that are aspirational. A list of \"grandfathered\" applications with known violations could be offered as an appendix if needed and be footnoted into the standard when appropriate.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uvg8j4key4pmzxyl","isMaxThreadingDepth":false,"creator":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)", "exists":true,"_BC_bools":["exists"]}},"id":957628},"isNewPage":false,"replies":[]},"uvirakrz9iklz1ng":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uvirakrz9iklz1ng","timestamp":"20190308001627","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uvirakrz9iklz1ng#flow-post-uvirakrz9iklz1ng","title":"post","text":"post"},"post-revision":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uvirakrz9iklz1ng\u0026topic_revId=uvirakrz9iklz1ng\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uvirakrz9iklz1ng#flow-post-uvirakrz9iklz1ng","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"557"},"author":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url": "/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"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,557,0,0]}\"\u003EUppercase MUST invokes RfC 2119 (\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[33,163,2,2]}\"\u003EMUST: This word, or the terms \"REQUIRED\" or \"SHALL\", mean that the definition is an absolute requirement of the specification.\u003C/i\u003E) to anyone familiar with it. I'd rather use it less often than water it up. We can make allowances for legacy code that's already in production, but for new code or changes to existing code MUST should really mean that anything violating that will not be merged or deployed ever, even if there's a deadline or a grant or a mob of editors with pitchforks at the WMF office entrance or whatever.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uvirakrz9iklz1ng","isMaxThreadingDepth":false,"creator":{"name":"Tgr (WMF)","wiki":"mediawikiwiki", "gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"isNewPage":false,"replies":[]},"uvirtnn3cdveb1uk":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uvirtnn3cdveb1uk","timestamp":"20190308002558","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url": "//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uvirtnn3cdveb1uk#flow-post-uvirtnn3cdveb1uk","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uvirtnn3cdveb1uk\u0026topic_revId=uvirtnn3cdveb1uk\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uvirtnn3cdveb1uk#flow-post-uvirtnn3cdveb1uk","title":"Reply","text":"Reply"},"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"397"},"author":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"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,397,0,0]}\"\u003EAlso, maybe it would be a worthwhile exercise to list what existing practice (ie. not legacy code but development practices we follow today) violate any of the MUSTs? E.g. \"data we offer for re-use MUST use clearly specified data schemas\" is probably not true for most things (wikitext? Action API response formats? file metadata? ...I guess it comes down to what exactly is meant by data schema).\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uvirtnn3cdveb1uk","isMaxThreadingDepth":false,"creator":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":[ "exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"isNewPage":false,"replies":[]},"uvquaw74pyesmb8l":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uvquaw74pyesmb8l","timestamp":"20190311152155","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uvquaw74pyesmb8l#flow-post-uvquaw74pyesmb8l","title":"post","text":"post"},"post-revision":{ "url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uvquaw74pyesmb8l\u0026topic_revId=uvquaw74pyesmb8l\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uvquaw74pyesmb8l#flow-post-uvquaw74pyesmb8l","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"107"},"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,107,0,0]}\"\u003EI'm happy with more MUST if we are really serious about enforcing it, and nobody comes crying once we do...\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uvquaw74pyesmb8l","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":[]},"uwsny60n44i29iut":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uwsny60n44i29iut","timestamp":"20190328145210","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text": "History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uwsny60n44i29iut#flow-post-uwsny60n44i29iut","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uwsny60n44i29iut\u0026topic_revId=uwsny60n44i29iut\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uwsny60n44i29iut#flow-post-uwsny60n44i29iut","title":"Reply","text":"Reply"},"summarize":{ "url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"89"},"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,89,0,0]}\"\u003EI changed a number of MUSTs to SHOULDs now. The document now has 43 SHOULDs and 21 MUSTs.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uwsny60n44i29iut","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":[]},"uxhvnz7rwr8d9g69":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked", "isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uxhvnz7rwr8d9g69","timestamp":"20190408223129","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uxhvnz7rwr8d9g69#flow-post-uxhvnz7rwr8d9g69","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uxhvnz7rwr8d9g69\u0026topic_revId=uxhvnz7rwr8d9g69\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uxhvnz7rwr8d9g69#flow-post-uxhvnz7rwr8d9g69","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"420"},"author":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title": "User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"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,420,0,0]}\"\u003EThe document now says \"When existing code is discovered to violate a MUST or SHOULD principle, steps for making the code compliant with the architecture principles need to be planned.\" which is ambitious, but maybe that's a good thing\u003Cspan typeof=\"mw:DisplaySpace mw:Placeholder\" data-parsoid=\"{\u0026quot;src\u0026quot;:\u0026quot; \u0026quot;,\u0026quot;isDisplayHack\u0026quot;:true,\u0026quot;dsr\u0026quot;:[234,235,null,0]}\"\u003E \u003C/span\u003E:) Any plans on how this should work in practice? If I find such code, where do I report it, who is responsible for planning the steps, who is responsible for actually making it happen?\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uxhvnz7rwr8d9g69","isMaxThreadingDepth":false,"creator":{"name":"Tgr (WMF)","wiki": "mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"isNewPage":false,"replies":["uxiti3gvs7caa28e"]},"uxhvrr57zzl8i5gc":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uxhvrr57zzl8i5gc","timestamp":"20190408223322","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{ "url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uxhvrr57zzl8i5gc#flow-post-uxhvrr57zzl8i5gc","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uxhvrr57zzl8i5gc\u0026topic_revId=uxhvrr57zzl8i5gc\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uxhvrr57zzl8i5gc#flow-post-uxhvrr57zzl8i5gc","title":"Reply","text":"Reply"},"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"283"},"author":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"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,283,0,0]}\"\u003EAlso comprehensive documentation is now a MUST. While most other things can be enforced in the planning or code review phase, documentation normally only happens when the code is live (at which point code authors often lose interest). How do we ensure that it does not get forgotten?\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uxhvrr57zzl8i5gc","isMaxThreadingDepth":false,"creator":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}}, "id":1127507},"isNewPage":false,"replies":[]},"uxiti3gvs7caa28e":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uxiti3gvs7caa28e","timestamp":"20190409083904","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uxiti3gvs7caa28e#flow-post-uxiti3gvs7caa28e","title":"post","text":"post"},"post-revision":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uxiti3gvs7caa28e\u0026topic_revId=uxiti3gvs7caa28e\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=uxhvnz7rwr8d9g69#flow-post-uxhvnz7rwr8d9g69","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"440"},"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,179,0,0]}\"\u003EThe concrete steps necessary will be very different from case to case. Some such changes only take a 20 minute patch, some may need major refactoring or changes in infrastructure.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[181,268,0,0]}\"\u003EThe only general answer I can give is \"track it on phabricator, so it becomes visible\".\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[270,440,0,0]}\"\u003EAs to who is responsible - I'd say either the person or group who wrote the offending code (mostly for newer code), or the group who owns owns it (mostly for older code).\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uxhvnz7rwr8d9g69","postId":"uxiti3gvs7caa28e","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":[]},"uxitv4ltbeeipe0x":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unl2nb3os3lemrfv","articleTitle":"Topic:Unl2nb3os3lemrfv","revisionId":"uxitv4ltbeeipe0x","timestamp":"20190409084534","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=history","title":"History","text":"History"},"topic":{"url": "//www.mediawiki.org/wiki/Topic:Unl2nb3os3lemrfv","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_showPostId=uxitv4ltbeeipe0x#flow-post-uxitv4ltbeeipe0x","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026topic_postId=uxitv4ltbeeipe0x\u0026topic_revId=uxitv4ltbeeipe0x\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=reply\u0026topic_postId=unl2nb3os3lemrfv#flow-post-unl2nb3os3lemrfv","title":"Reply","text":"Reply"},"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"1194"},"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,336,0,0]}\"\u003EDocumentation of architecture and information flow should ideally be written before the code (as specifications, plans, RFCs, etc). They should be required to be merged into the repo along with the code, just like test, and just like method-level and class-level documentation. Documentation (and testing) should not be an afterthought.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[338,724,0,0]}\"\u003EDocumentation for end-users and wiki-owners will generally not live in the same repo as the code, since it's less \"bound\" to the code, but it should, ideally, also be written *before* the code, as user stories, UI designs, etc. Turning the plan into proper documentation may happen after the fact, but then it's the responsibility of the team who deployed the feature to make it happen.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[726,1194,0,0]}\"\u003EIn my mind though, the architecture principles don't really apply to documentation for end-users and wiki-owners. Combined with the lead sentence of the section, the principles reads: \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[910,1068,2,2]}\"\u003E\"To maintain a code base that can be modified with confidence and readily understood, comprehensive documentation MUST be maintained along with the code.\"\u003C/i\u003E I think it's pretty clear that this refers to documentation of the \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1136,1144,2,2]}\"\u003Ecode\u003C/i\u003E. Do you think this should be made more explicite?\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"unl2nb3os3lemrfv","postId":"uxitv4ltbeeipe0x","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":[]},"uups18r2rt2d916a":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uups18r2rr3c4z76","articleTitle":"Topic:Uups18r2rr3c4z76","revisionId":"uups18r2rt2d916a","timestamp":"20190223000317","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:Uups18r2rr3c4z76\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uups18r2rr3c4z76","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026topic_showPostId=uups18r2rr3c4z76#flow-post-uups18r2rr3c4z76","title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026topic_revId=uups18r2rt2d916a\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=reply\u0026topic_postId=uups18r2rr3c4z76#flow-post-uups18r2rr3c4z76-form-content","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"29"},"author":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false, "content":{"content":"Intended scope of application","format":"topic-title-html","plaintext":"Intended scope of application"},"watchable":false,"replyToId":null,"postId":"uups18r2rr3c4z76","isMaxThreadingDepth":false,"creator":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"isNewPage":false,"replies":["uups18r2rv1ed35e","uv4hdkzholea2086","uvg77ceci10a8vj4","uvis2m0u17hfqa4g","uvqu5tct6s77vanx"],"reply_count":5,"last_updated_readable":"15:19, 11 March 2019","last_updated":1552317563000},"uups18r2rv1ed35e":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked", "isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uups18r2rr3c4z76","articleTitle":"Topic:Uups18r2rr3c4z76","revisionId":"uups18r2rv1ed35e","timestamp":"20190223000317","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uups18r2rr3c4z76","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026topic_showPostId=uups18r2rv1ed35e#flow-post-uups18r2rv1ed35e","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026topic_postId=uups18r2rv1ed35e\u0026topic_revId=uups18r2rv1ed35e\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=reply\u0026topic_postId=uups18r2rv1ed35e#flow-post-uups18r2rv1ed35e","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"658"},"author":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url": "/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,241,0,0]}\"\u003EIt is not completely clear to me what scope of software engineering activities this document is intended to apply to. From the title I can infer that MediaWiki is in scope, but \"other Wikimedia engineering endeavors\" is really, really vague.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[243,260,0,0]}\"\u003EDoes it apply to:\u003C/p\u003E\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[261,658,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[261,310,1,0]}\"\u003EPuppet code used to automate Wikimedia servers?\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[311,405,1,0]}\"\u003ENon-MediaWiki user facing web applications (for example \u003Ca rel=\"mw:ExtLink\" class=\"external free\" href=\"https://scholarships.wikimedia.org\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;url\u0026quot;,\u0026quot;dsr\u0026quot;:[369,403,0,0]}\"\u003Ehttps://scholarships.wikimedia.org\u003C/a\u003E)?\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[406,506,1,0]}\"\u003EIndirectly user facing services (for example the dynamicproxy deployments used by Cloud Services)?\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[507,575,1,0]}\"\u003ENon-MediaWiki cli tools developed by Wikimedia (for example scap)?\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[576,618,1,0]}\"\u003EGadget code deployed to Wikimedia wikis?\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[619,658,1,0]}\"\u003ELua code deployed to Wikimedia wikis?\u003C/li\u003E\u003C/ul\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uups18r2rr3c4z76","postId":"uups18r2rv1ed35e","isMaxThreadingDepth":false,"creator":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"isNewPage":true,"replies":[]},"uv4hdkzholea2086":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uups18r2rr3c4z76","articleTitle":"Topic:Uups18r2rr3c4z76","revisionId":"uv4hdkzholea2086","timestamp":"20190301142822","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated" :false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uups18r2rr3c4z76","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026topic_showPostId=uv4hdkzholea2086#flow-post-uv4hdkzholea2086","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026topic_postId=uv4hdkzholea2086\u0026topic_revId=uv4hdkzholea2086\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=reply\u0026topic_postId=uv4hdkzholea2086#flow-post-uv4hdkzholea2086","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"349"},"author":{"name":"Faidon Liambotis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Faidon_Liambotis_(WMF)","title":"Contributions/Faidon Liambotis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Faidon_Liambotis_(WMF)","title":"Faidon Liambotis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Faidon_Liambotis_(WMF)","title":"User talk:Faidon Liambotis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":891149},"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,349,0,0]}\"\u003EThanks Bryan -- that was one of my concerns as well. Similarly, it talks about \"software that interacts with users\", but it's unclear to me what that is envisioned to be. Is it wiki-users, third-party MediaWiki users (so e.g. sysadmins), users of third-party MediaWiki installs, API consumers, development communities, Cloud Services users etc. etc.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uups18r2rr3c4z76","postId":"uv4hdkzholea2086","isMaxThreadingDepth":false,"creator":{"name":"Faidon Liambotis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Faidon_Liambotis_(WMF)","title":"Contributions/Faidon Liambotis (WMF)","exists":true,"_BC_bools":["exists"]}, "userpage":{"url":"/wiki/User:Faidon_Liambotis_(WMF)","title":"Faidon Liambotis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Faidon_Liambotis_(WMF)","title":"User talk:Faidon Liambotis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":891149},"isNewPage":false,"replies":[]},"uvg77ceci10a8vj4":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uups18r2rr3c4z76","articleTitle":"Topic:Uups18r2rr3c4z76","revisionId":"uvg77ceci10a8vj4","timestamp":"20190306204251","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uups18r2rr3c4z76","title":"topic","text":"topic"},"post":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026topic_showPostId=uvg77ceci10a8vj4#flow-post-uvg77ceci10a8vj4","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026topic_postId=uvg77ceci10a8vj4\u0026topic_revId=uvg77ceci10a8vj4\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=reply\u0026topic_postId=uvg77ceci10a8vj4#flow-post-uvg77ceci10a8vj4","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=edit-topic-summary","title":"Summarize", "text":"Summarize"}},"size":{"old":"0","new":"406"},"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,115,0,0]}\"\u003E\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,40,2,2]}\"\u003E\"software that interacts with users\"\u003C/i\u003E should perhaps be clarified by adding \"though a graphical user interface\".\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[117,406,0,0]}\"\u003EThe idea is that this document should govern all engineering decisions, including all the areas mentioned by Bryan - but of course, not all principles are applicable in all contexts. dynamicproxy doesn't need internationalization, and puppet code doesn't need to be re-usable as a library.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uups18r2rr3c4z76","postId":"uvg77ceci10a8vj4","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":[]},"uvis2m0u17hfqa4g":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uups18r2rr3c4z76","articleTitle":"Topic:Uups18r2rr3c4z76","revisionId":"uvis2m0u17hfqa4g","timestamp":"20190308003026","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=history","title":"History","text":"History"},"topic":{"url": "//www.mediawiki.org/wiki/Topic:Uups18r2rr3c4z76","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026topic_showPostId=uvis2m0u17hfqa4g#flow-post-uvis2m0u17hfqa4g","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026topic_postId=uvis2m0u17hfqa4g\u0026topic_revId=uvis2m0u17hfqa4g\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=reply\u0026topic_postId=uvis2m0u17hfqa4g#flow-post-uvis2m0u17hfqa4g","title":"Reply","text":"Reply"},"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"251"},"author":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"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,251,0,0]}\"\u003EAre developers considered users in this context? For example, should API sandboxes support i18n? Or things like Quarry? If the answer is yes I'm not sure a MUST requirement is realistic (although we should certainly strive for it more than we do now).\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uups18r2rr3c4z76","postId":"uvis2m0u17hfqa4g","isMaxThreadingDepth":false,"creator":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"isNewPage":false, "replies":[]},"uvqu5tct6s77vanx":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uups18r2rr3c4z76","articleTitle":"Topic:Uups18r2rr3c4z76","revisionId":"uvqu5tct6s77vanx","timestamp":"20190311151923","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uups18r2rr3c4z76","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026topic_showPostId=uvqu5tct6s77vanx#flow-post-uvqu5tct6s77vanx","title":"post","text":"post"},"post-revision":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026topic_postId=uvqu5tct6s77vanx\u0026topic_revId=uvqu5tct6s77vanx\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=reply\u0026topic_postId=uups18r2rr3c4z76#flow-post-uups18r2rr3c4z76","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"336"},"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,336,0,0]}\"\u003EYes, developers should be considered users, and the UIs of developer tools should be localized. The Special:ApiSandbox is already fully localized (yay!). Quarry should be, at least if it's an official WMF tool. For tools written by volunteers, the principles can of course not be enforced, but following them should still be encouraged.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uups18r2rr3c4z76","postId":"uvqu5tct6s77vanx","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":[]},"unr4x0ic2wkcfiqw":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unr4x0ic2ulbbgrs","articleTitle":"Topic:Unr4x0ic2ulbbgrs","revisionId":"unr4x0ic2wkcfiqw","timestamp":"20181102114042","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:Unr4x0ic2ulbbgrs\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unr4x0ic2ulbbgrs","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026topic_showPostId=unr4x0ic2ulbbgrs#flow-post-unr4x0ic2ulbbgrs","title": "post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026topic_revId=unr4x0ic2wkcfiqw\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=reply\u0026topic_postId=unr4x0ic2ulbbgrs#flow-post-unr4x0ic2ulbbgrs-form-content","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"68"},"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":"Should a layered architecture be part of the engineering principles?","format":"topic-title-html","plaintext":"Should a layered architecture be part of the engineering principles?"},"watchable":false,"replyToId":null,"postId":"unr4x0ic2ulbbgrs","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":["unr4x0ic2yjdjkq0","unty16132xam6r6k","uo0v9lvdsxw5j7hr","uo15u9h3g605sung","uvg7ehtl8j89p3dx"],"reply_count":5,"last_updated_readable":"20:46, 6 March 2019","last_updated":1551905185000},"unr4x0ic2yjdjkq0":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unr4x0ic2ulbbgrs","articleTitle":"Topic:Unr4x0ic2ulbbgrs","revisionId":"unr4x0ic2yjdjkq0","timestamp":"20181102114042","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unr4x0ic2ulbbgrs","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026topic_showPostId=unr4x0ic2yjdjkq0#flow-post-unr4x0ic2yjdjkq0","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026topic_postId=unr4x0ic2yjdjkq0\u0026topic_revId=unr4x0ic2yjdjkq0\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=reply\u0026topic_postId=unr4x0ic2yjdjkq0#flow-post-unr4x0ic2yjdjkq0","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"667"},"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": "\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,206,0,0]}\"\u003EA separation into three \"layers\" seems to be industry standard: storage, process, and presentation (note that this is conceptually analogous to, but different from, the MVC pattern used in user interfaces).\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[208,510,0,0]}\"\u003EThis separation of concerns would help to allow the implementation of different interactions/flows and different representations for different users, use cases, and devices. It's not the only way to achieve this, but it seems to be an obvious win. Should it thus be part of the architecture principles?\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[512,667,0,0]}\"\u003ESuggested wording: \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[531,667,2,2]}\"\u003EThe software stack SHOULD be separated into three layers: storage/persistence, processing/application, and presentation/interaction.\u003C/i\u003E\u003C/p\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"unr4x0ic2ulbbgrs","postId":"unr4x0ic2yjdjkq0","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":[]},"unty16132xam6r6k":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unr4x0ic2ulbbgrs","articleTitle":"Topic:Unr4x0ic2ulbbgrs","revisionId":"unty16132xam6r6k","timestamp":"20181103175622","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent": true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unr4x0ic2ulbbgrs","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026topic_showPostId=unty16132xam6r6k#flow-post-unty16132xam6r6k","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026topic_postId=unty16132xam6r6k\u0026topic_revId=unty16132xam6r6k\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=reply\u0026topic_postId=unty16132xam6r6k#flow-post-unty16132xam6r6k","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"606"},"author":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,606,0,0]}\"\u003EI don't think this is useful without further clarification. For example, MediaWiki has a database abstraction layer; is that the same as the storage layer, or is a storage layer expected to encompass all knowledge of DB structure? What about caching and cookies (technically all forms of persistence but often awkward to separate from processing logic)? What is \"interaction\", does that include processing request data? How do these apply to an application where a significant part of the logic is frontend code and \"interaction\" has very different meaning from the request/response based web applications?\u003C/p\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unr4x0ic2ulbbgrs","postId":"unty16132xam6r6k","isMaxThreadingDepth":false,"creator":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)", "exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"isNewPage":false,"replies":[]},"uo0v9lvdsxw5j7hr":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unr4x0ic2ulbbgrs","articleTitle":"Topic:Unr4x0ic2ulbbgrs","revisionId":"uo0v9lvdsxw5j7hr","timestamp":"20181106203143","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unr4x0ic2ulbbgrs","title":"topic","text":"topic"},"post":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026topic_showPostId=uo0v9lvdsxw5j7hr#flow-post-uo0v9lvdsxw5j7hr","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026topic_postId=uo0v9lvdsxw5j7hr\u0026topic_revId=uo0v9lvdsxw5j7hr\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=reply\u0026topic_postId=uo0v9lvdsxw5j7hr#flow-post-uo0v9lvdsxw5j7hr","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=edit-topic-summary","title":"Summarize", "text":"Summarize"}},"size":{"old":"0","new":"640"},"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": "\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,517,0,0]}\"\u003EIn my mind, the storage layer should abstract all knowledge of what technology is used for storage, and what schemas we use in these technologies. Ideally, application logic is completely isolated from that. Cookies should be handled by the Request/Response layer (\"presentation\" layer is misleading, since it also deals with request parameters, input validation, and user sessions). Caching can happen in all layers. The storage infrastructure behind caching and session should be encapsulated in the storage layer.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[519,640,0,0]}\"\u003ESo yea... this seems too specific for \"architecture principles\". These are more \"architecture techniques\" or something...\u003C/p\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unr4x0ic2ulbbgrs","postId":"uo0v9lvdsxw5j7hr","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":[]},"uo15u9h3g605sung":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unr4x0ic2ulbbgrs","articleTitle":"Topic:Unr4x0ic2ulbbgrs","revisionId":"uo15u9h3g605sung","timestamp":"20181106234135","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=history","title":"History","text": "History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unr4x0ic2ulbbgrs","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026topic_showPostId=uo15u9h3g605sung#flow-post-uo15u9h3g605sung","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026topic_postId=uo15u9h3g605sung\u0026topic_revId=uo15u9h3g605sung\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=reply\u0026topic_postId=uo15u9h3g605sung#flow-post-uo15u9h3g605sung","title":"Reply","text":"Reply"},"summarize":{ "url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"457"},"author":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,457,0,0]}\"\u003EMaybe you could articulate the reasons for having separate storage etc. layers, and try to turn those reasons into principles. Is it to minimize the amount of code that depends on technology choices (such as storage engine)? To minimize the amount of code that deals with data in an uncertain format (user input, old data from storage)? To separate code that is expected to change often from that which isn't? To enable certain types of site customizations?\u003C/p\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unr4x0ic2ulbbgrs","postId":"uo15u9h3g605sung","isMaxThreadingDepth":false,"creator":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url": "/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"isNewPage":false,"replies":[]},"uvg7ehtl8j89p3dx":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"unr4x0ic2ulbbgrs","articleTitle":"Topic:Unr4x0ic2ulbbgrs","revisionId":"uvg7ehtl8j89p3dx","timestamp":"20190306204625","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Unr4x0ic2ulbbgrs","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026topic_showPostId=uvg7ehtl8j89p3dx#flow-post-uvg7ehtl8j89p3dx","title":"post","text":"post"},"post-revision":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026topic_postId=uvg7ehtl8j89p3dx\u0026topic_revId=uvg7ehtl8j89p3dx\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=reply\u0026topic_postId=unr4x0ic2ulbbgrs#flow-post-unr4x0ic2ulbbgrs","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"6"},"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,6,0,0]}\"\u003Eyes ;)\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"unr4x0ic2ulbbgrs","postId":"uvg7ehtl8j89p3dx","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":[]},"uupsn72f6rp91kxt":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uupsn72f6pq7xiyp","articleTitle":"Topic:Uupsn72f6pq7xiyp","revisionId":"uupsn72f6rp91kxt","timestamp":"20190223001414","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:Uupsn72f6pq7xiyp\u0026action=history","title":"History","text":"History"}, "topic":{"url":"//www.mediawiki.org/wiki/Topic:Uupsn72f6pq7xiyp","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026topic_showPostId=uupsn72f6pq7xiyp#flow-post-uupsn72f6pq7xiyp","title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026topic_revId=uupsn72f6rp91kxt\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=reply\u0026topic_postId=uupsn72f6pq7xiyp#flow-post-uupsn72f6pq7xiyp-form-content","title":"Reply","text":"Reply"},"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"29"},"author":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"Definition of MUST/MAY/SHOULD","format":"topic-title-html","plaintext":"Definition of MUST/MAY/SHOULD"},"watchable":false,"replyToId":null,"postId":"uupsn72f6pq7xiyp","isMaxThreadingDepth" :false,"creator":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"isNewPage":false,"replies":["uupsn72f6toa5mwx","uvg7czovqbgbf8d1"],"reply_count":2,"last_updated_readable":"20:45, 6 March 2019","last_updated":1551905140000},"uupsn72f6toa5mwx":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uupsn72f6pq7xiyp","articleTitle":"Topic:Uupsn72f6pq7xiyp","revisionId":"uupsn72f6toa5mwx","timestamp":"20190223001414","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true, "isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uupsn72f6pq7xiyp","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026topic_showPostId=uupsn72f6toa5mwx#flow-post-uupsn72f6toa5mwx","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026topic_postId=uupsn72f6toa5mwx\u0026topic_revId=uupsn72f6toa5mwx\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=reply\u0026topic_postId=uupsn72f6toa5mwx#flow-post-uupsn72f6toa5mwx","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"274"},"author":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{ "content":"\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,274,0,0]}\"\u003EAre the MUST/MAY/SHOULD keywords intended to be interpreted according to \u003Ca rel=\"nofollow mw:ExtLink\" class=\"external free\" href=\"https://www.ietf.org/rfc/rfc2119.txt\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;url\u0026quot;,\u0026quot;dsr\u0026quot;:[73,109,0,0]}\"\u003Ehttps://www.ietf.org/rfc/rfc2119.txt\u003C/a\u003E? If so, this should be explicitly stated in the document. If not, the intended meanings MUST be defined in the document or a prominantly linked definition document.\u003C/p\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uupsn72f6pq7xiyp","postId":"uupsn72f6toa5mwx","isMaxThreadingDepth":false,"creator":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)", "title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"isNewPage":true,"replies":[]},"uvg7czovqbgbf8d1":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uupsn72f6pq7xiyp","articleTitle":"Topic:Uupsn72f6pq7xiyp","revisionId":"uvg7czovqbgbf8d1","timestamp":"20190306204540","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uupsn72f6pq7xiyp","title":"topic","text":"topic"},"post":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026topic_showPostId=uvg7czovqbgbf8d1#flow-post-uvg7czovqbgbf8d1","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026topic_postId=uvg7czovqbgbf8d1\u0026topic_revId=uvg7czovqbgbf8d1\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=reply\u0026topic_postId=uupsn72f6pq7xiyp#flow-post-uupsn72f6pq7xiyp","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp\u0026action=edit-topic-summary","title":"Summarize", "text":"Summarize"}},"size":{"old":"0","new":"104"},"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,104,0,0]}\"\u003EIdeally yes, but see my comment about the interpretation of MUST in the \"More MUST, less SHOULD\" thread.\u003C/p\u003E\u003C/section\u003E","format": "fixed-html"},"watchable":false,"replyToId":"uupsn72f6pq7xiyp","postId":"uvg7czovqbgbf8d1","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":[]},"uv4lml4qpts44ei3":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uv4lml4qprt30ciz","articleTitle":"Topic:Uv4lml4qprt30ciz","revisionId":"uv4lml4qpts44ei3","timestamp":"20190301154441","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:Uv4lml4qprt30ciz\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uv4lml4qprt30ciz","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_showPostId=uv4lml4qprt30ciz#flow-post-uv4lml4qprt30ciz","title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_revId=uv4lml4qpts44ei3\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=reply\u0026topic_postId=uv4lml4qprt30ciz#flow-post-uv4lml4qprt30ciz-form-content","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"21"},"author":{"name":"Ryan Kaldari (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Ryan_Kaldari_(WMF)","title":"Contributions/Ryan Kaldari (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Ryan_Kaldari_(WMF)","title":"Ryan Kaldari (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Ryan_Kaldari_(WMF)","title":"User talk:Ryan Kaldari (WMF)","exists":true,"_BC_bools":["exists"]}},"id":280192},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null, "isLocked":false,"isModeratedNotLocked":false,"content":{"content":"abstract domain model","format":"topic-title-html","plaintext":"abstract domain model"},"watchable":false,"replyToId":null,"postId":"uv4lml4qprt30ciz","isMaxThreadingDepth":false,"creator":{"name":"Ryan Kaldari (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Ryan_Kaldari_(WMF)","title":"Contributions/Ryan Kaldari (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Ryan_Kaldari_(WMF)","title":"Ryan Kaldari (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Ryan_Kaldari_(WMF)","title":"User talk:Ryan Kaldari (WMF)","exists":true,"_BC_bools":["exists"]}},"id":280192},"isNewPage":false,"replies":["uv4lml4qpvr58gh7","uvbmrkfjtyp35011","uvg6utazicpkk80h","uvg864mroz2701oi","uvhxd9lukd3eb6dl"],"reply_count":6,"last_updated_readable":"00:10, 8 March 2019","last_updated":1552003815000},"uv4lml4qpvr58gh7":{"_BC_bools":[ "isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uv4lml4qprt30ciz","articleTitle":"Topic:Uv4lml4qprt30ciz","revisionId":"uv4lml4qpvr58gh7","timestamp":"20190301154441","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uv4lml4qprt30ciz","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_showPostId=uv4lml4qpvr58gh7#flow-post-uv4lml4qpvr58gh7","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_postId=uv4lml4qpvr58gh7\u0026topic_revId=uv4lml4qpvr58gh7\u0026action=single-view","title":"post revision","text": "post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=reply\u0026topic_postId=uv4lml4qpvr58gh7#flow-post-uv4lml4qpvr58gh7","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"122"},"author":{"name":"Ryan Kaldari (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Ryan_Kaldari_(WMF)","title":"Contributions/Ryan Kaldari (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Ryan_Kaldari_(WMF)","title":"Ryan Kaldari (WMF)", "exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Ryan_Kaldari_(WMF)","title":"User talk:Ryan Kaldari (WMF)","exists":true,"_BC_bools":["exists"]}},"id":280192},"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,122,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 What is an \"abstract domain model\"? Would it be possible to use less jargony language here?\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uv4lml4qprt30ciz","postId":"uv4lml4qpvr58gh7","isMaxThreadingDepth":false,"creator":{"name":"Ryan Kaldari (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Ryan_Kaldari_(WMF)","title":"Contributions/Ryan Kaldari (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Ryan_Kaldari_(WMF)","title":"Ryan Kaldari (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Ryan_Kaldari_(WMF)","title":"User talk:Ryan Kaldari (WMF)","exists":true,"_BC_bools":["exists"]}},"id":280192},"isNewPage":true,"replies":[]},"uvbmrkfjtyp35011":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uv4lml4qprt30ciz","articleTitle":"Topic:Uv4lml4qprt30ciz","revisionId":"uvbmrkfjtyp35011","timestamp":"20190304193008","changeType":"reply","dateFormats":[],"properties" :[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uv4lml4qprt30ciz","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_showPostId=uvbmrkfjtyp35011#flow-post-uvbmrkfjtyp35011","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_postId=uvbmrkfjtyp35011\u0026topic_revId=uvbmrkfjtyp35011\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=reply\u0026topic_postId=uvbmrkfjtyp35011#flow-post-uvbmrkfjtyp35011","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"521"},"author":{"name":"KHarlan (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/KHarlan_(WMF)","title":"Contributions/KHarlan (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:KHarlan_(WMF)","title":"KHarlan (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:KHarlan_(WMF)","title":"User talk:KHarlan (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14096723},"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,206,0,0]}\"\u003EI came here to say something similar; in general, one useful addition to many of these principles would be specific examples where SHOULD/MUST have been followed correctly and places where we could improve.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[208,521,0,0]}\"\u003EI think I understand what is meant by \"APIs geared towards a specific user interface MUST be considered part of the component that implements that user interface, and MAY be considered private to that component\" but I'm not sure what specific instances/examples (if any) this statement was written in response to.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uv4lml4qprt30ciz","postId":"uvbmrkfjtyp35011","isMaxThreadingDepth":false,"creator":{"name":"KHarlan (WMF)","wiki":"mediawikiwiki","gender": "unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/KHarlan_(WMF)","title":"Contributions/KHarlan (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:KHarlan_(WMF)","title":"KHarlan (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:KHarlan_(WMF)","title":"User talk:KHarlan (WMF)","exists":true,"_BC_bools":["exists"]}},"id":14096723},"isNewPage":false,"replies":[]},"uvg6wg8xx4dafaek":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uv4lml4qprt30ciz","articleTitle":"Topic:Uv4lml4qprt30ciz","revisionId":"uvg6wg8xx4dafaek","timestamp":"20190306203725","changeType":"edit-post","dateFormats":[],"properties":[],"isOriginalContent":false,"isModerated":false,"links":{"post-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=history\u0026topic_postId=uvg6utazicpkk80h","title":"History","text" :"History"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uv4lml4qprt30ciz","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_showPostId=uvg6utazicpkk80h#flow-post-uvg6utazicpkk80h","title":"post","text":"post"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=compare-post-revisions\u0026topic_newRevision=uvg6wg8xx4dafaek","title":"diff","text":"diff"},"diff-prev":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=compare-post-revisions\u0026topic_newRevision=uvg6wg8xx4dafaek","title":"prev","text":"prev"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_postId=uvg6utazicpkk80h\u0026topic_revId=uvg6wg8xx4dafaek\u0026action=single-view","title":"post revision", "text":"post revision"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=reply\u0026topic_postId=uvg6utazicpkk80h#flow-post-uvg6utazicpkk80h","title":"Reply","text":"Reply"}},"size":{"old":"456","new":"607"},"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":"uvg6wg8xx4dafaek","previousRevisionId":"uvg6utazicpkk80h","isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,37,0,0]}\"\u003E\u0026gt; What is an \"abstract domain model\"?\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[39,456,0,0]}\"\u003EFor example, \"title\", \"page\", and \"revision\" are entities in mediawiki's abstract domain model. APIs should be built around such concepts. In contrast, and API that exposes internals, like the database schema, should be avoided. APIs that cater to a specific client are OK (e.g. CategoryTree has an API foe returning rendered sub-trees), but should not be used by anything else (they are \"private to that component\").\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[458,607,0,0]}\"\u003EI'm not sure how to rephrase these points to make them clearer. We can add examples, I just fear that it will clutter the page too much. Suggestions?\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"}, "watchable":false,"replyToId":"uv4lml4qprt30ciz","postId":"uvg6utazicpkk80h","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":["uviqy5ajy5dohlpm"]},"uvg864mroz2701oi":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uv4lml4qprt30ciz","articleTitle":"Topic:Uv4lml4qprt30ciz","revisionId":"uvg864mroz2701oi","timestamp":"20190306210012","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true, "isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uv4lml4qprt30ciz","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_showPostId=uvg864mroz2701oi#flow-post-uvg864mroz2701oi","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_postId=uvg864mroz2701oi\u0026topic_revId=uvg864mroz2701oi\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=reply\u0026topic_postId=uvg864mroz2701oi#flow-post-uvg864mroz2701oi","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"459"},"author":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"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,65,0,0]}\"\u003E\u0026gt; I'm not sure how to rephrase these points to make them clearer.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[67,459,0,0]}\"\u003ELink to Wikipedia articles on the first use of each \"term of art\" in the doc? If you are using terms of art that are so obscure to not be covered at least as a sub-topic on an enwiki article then that might be a good guide on rewording. Unless of course the term of art is purely of local origin; in that case I would hope there is a mw.o or wikitech page you could link to for clarification.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uv4lml4qprt30ciz","postId":"uvg864mroz2701oi","isMaxThreadingDepth":false,"creator":{"name":"BDavis (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url": "/wiki/Special:Contributions/BDavis_(WMF)","title":"Contributions/BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:BDavis_(WMF)","title":"BDavis (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:BDavis_(WMF)","title":"User talk:BDavis (WMF)","exists":true,"_BC_bools":["exists"]}},"id":957628},"isNewPage":false,"replies":[]},"uvhxegwszd9n97a4":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uv4lml4qprt30ciz","articleTitle":"Topic:Uv4lml4qprt30ciz","revisionId":"uvhxegwszd9n97a4","timestamp":"20190307151942","changeType":"edit-post","dateFormats":[],"properties":[],"isOriginalContent":false,"isModerated":false,"links":{"post-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=history\u0026topic_postId=uvhxd9lukd3eb6dl","title":"History","text":"History"},"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uv4lml4qprt30ciz","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_showPostId=uvhxd9lukd3eb6dl#flow-post-uvhxd9lukd3eb6dl","title":"post","text":"post"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=compare-post-revisions\u0026topic_newRevision=uvhxegwszd9n97a4","title":"diff","text":"diff"},"diff-prev":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=compare-post-revisions\u0026topic_newRevision=uvhxegwszd9n97a4","title":"prev","text":"prev"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_postId=uvhxd9lukd3eb6dl\u0026topic_revId=uvhxegwszd9n97a4\u0026action=single-view","title":"post revision","text":"post revision"}},"actions":{ "reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=reply\u0026topic_postId=uv4lml4qprt30ciz#flow-post-uv4lml4qprt30ciz","title":"Reply","text":"Reply"}},"size":{"old":"88","new":"81"},"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":"uvhxegwszd9n97a4","previousRevisionId":"uvhxd9lukd3eb6dl","isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,19,0,0]}\"\u003EOk, I'll add links.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[21,81,0,0]}\"\u003EFor the case at hand, see \u003Ca rel=\"mw:WikiLink/Interwiki\" href=\"https://en.wikipedia.org/wiki/Domain%20model\" title=\"en:Domain model\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;piped\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;https://en.wikipedia.org/wiki/Domain%20model\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;:en:Domain model\u0026quot;},\u0026quot;isIW\u0026quot;:true,\u0026quot;dsr\u0026quot;:[47,80,19,2]}\"\u003Edomain model\u003C/a\u003E.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uv4lml4qprt30ciz","postId":"uvhxd9lukd3eb6dl","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":[]},"uviqy5ajy5dohlpm":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uv4lml4qprt30ciz","articleTitle":"Topic:Uv4lml4qprt30ciz","revisionId":"uviqy5ajy5dohlpm","timestamp":"20190308001015","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=history","title":"History","text":"History"},"topic":{ "url":"//www.mediawiki.org/wiki/Topic:Uv4lml4qprt30ciz","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_showPostId=uviqy5ajy5dohlpm#flow-post-uviqy5ajy5dohlpm","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026topic_postId=uviqy5ajy5dohlpm\u0026topic_revId=uviqy5ajy5dohlpm\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=reply\u0026topic_postId=uvg6utazicpkk80h#flow-post-uvg6utazicpkk80h","title":"Reply","text":"Reply"},"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"76"},"author":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"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,76,0,0]}\"\u003ESo should that say \"SHOULD be considered private to that component\" instead?\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uvg6utazicpkk80h","postId":"uviqy5ajy5dohlpm","isMaxThreadingDepth":false,"creator":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"isNewPage":false,"replies":[]},"uvixayupgaqdx1z5":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"], "workflowId":"uvixayupg8rct001","articleTitle":"Topic:Uvixayupg8rct001","revisionId":"uvixayupgaqdx1z5","timestamp":"20190308020423","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:Uvixayupg8rct001\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvixayupg8rct001","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026topic_showPostId=uvixayupg8rct001#flow-post-uvixayupg8rct001","title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026topic_revId=uvixayupgaqdx1z5\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=reply\u0026topic_postId=uvixayupg8rct001#flow-post-uvixayupg8rct001-form-content","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"21"},"author":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url": "/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"API future-proof-ness","format":"topic-title-html","plaintext":"API future-proof-ness"},"watchable":false,"replyToId":null,"postId":"uvixayupg8rct001","isMaxThreadingDepth":false,"creator":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"isNewPage":false,"replies":["uvixayupgcpf13y9","uvqur2eqbs5722fi"],"reply_count":2, "last_updated_readable":"12:32, 18 March 2019","last_updated":1552912349000},"uvixayupgcpf13y9":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvixayupg8rct001","articleTitle":"Topic:Uvixayupg8rct001","revisionId":"uvixayupgcpf13y9","timestamp":"20190308020423","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvixayupg8rct001","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026topic_showPostId=uvixayupgcpf13y9#flow-post-uvixayupgcpf13y9","title":"post","text":"post"},"post-revision":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026topic_postId=uvixayupgcpf13y9\u0026topic_revId=uvixayupgcpf13y9\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=reply\u0026topic_postId=uvixayupgcpf13y9#flow-post-uvixayupgcpf13y9","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"716"},"author":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url": "/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"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,35,0,0]}\"\u003ESome things maybe worth mentioning:\u003C/p\u003E\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[36,716,0,0]}\"\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[36,226,1,0]}\"\u003Einterfaces should be written with ease of extensibility without B/C breaks in mind. (E.g. use an option array instead a list of arguments, return an associative array instead of a scalar.)\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[227,716,1,0]}\"\u003EAPIs (or published data, more generally) should support the use case of history reconstruction, to the extent it is feasible. (E.g. think of all the reasons creating the \u003Ca rel=\"mw:WikiLink/Interwiki\" href=\"https://wikitech.wikimedia.org/wiki/Analytics/Data_Lake/Edits\" title=\"wikitech:Analytics/Data Lake/Edits\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;piped\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;https://wikitech.wikimedia.org/wiki/Analytics/Data_Lake/Edits\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;wikitech:Analytics/Data_Lake/Edits\u0026quot;},\u0026quot;isIW\u0026quot;:true,\u0026quot;dsr\u0026quot;:[399,450,37,2]}\"\u003Eedit dataset\u003C/a\u003E was hard.) The same generic principle is relevant to other use cases as well (e.g. page_props being hard to match to revisions), not sure how to articulate it. Data that gets exposed should always be versioned? (Not in the \"schema version\" sense, but individually.)\u003C/li\u003E\n\u003C/ul\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uvixayupg8rct001","postId":"uvixayupgcpf13y9","isMaxThreadingDepth":false,"creator":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"isNewPage":true,"replies":[]},"uw668654oe62but9":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvixayupg8rct001","articleTitle":"Topic:Uvixayupg8rct001","revisionId":"uw668654oe62but9","timestamp":"20190318123229","changeType":"edit-post","dateFormats":[],"properties":[],"isOriginalContent":false,"isModerated":false,"links":{ "post-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=history\u0026topic_postId=uvqur2eqbs5722fi","title":"History","text":"History"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvixayupg8rct001","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026topic_showPostId=uvqur2eqbs5722fi#flow-post-uvqur2eqbs5722fi","title":"post","text":"post"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=compare-post-revisions\u0026topic_newRevision=uw668654oe62but9","title":"diff","text":"diff"},"diff-prev":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=compare-post-revisions\u0026topic_newRevision=uw668654oe62but9","title":"prev","text":"prev"},"post-revision":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026topic_postId=uvqur2eqbs5722fi\u0026topic_revId=uw668654oe62but9\u0026action=single-view","title":"post revision","text":"post revision"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001\u0026action=reply\u0026topic_postId=uvixayupg8rct001#flow-post-uvixayupg8rct001","title":"Reply","text":"Reply"}},"size":{"old":"749","new":"748"},"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":"uw668654oe62but9","previousRevisionId":"uvqur2eqbs5722fi","isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,437,0,0]}\"\u003ERe \"ease of extensibility\": We already have \"\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[45,282,2,2]}\"\u003Eour software architecture SHOULD be modular, with components exposing narrow interfaces, to allow components to be replaced and refactored while maintaining a stable interface towards other components as well as 3rd party extensions.\u003C/i\u003E\" Maybe we can add \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[301,435,2,2]}\"\u003E\"Extension points MUST be clearly documented as such, and SHOULD be designed in a way that allows them to remain stable over time\"\u003C/i\u003E. \u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[439,748,0,0]}\"\u003ERe \"history construction\": I know what you mean, but I see no good way of phrasing this as a principle. Maybe \"\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[550,655,2,2]}\"\u003EAPIs SHOULD provide mechanisms that allow consistent data sets to be retrieved with multiple requests\u003C/i\u003E\"? This would certainly be nice, but hard to do in general. This seems really aspirational...\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uvixayupg8rct001","postId":"uvqur2eqbs5722fi","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":[]},"uvzq1ng81oeqx48y":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvzq1ng81mfpt29u","articleTitle":"Topic:Uvzq1ng81mfpt29u","revisionId":"uvzq1ng81oeqx48y","timestamp":"20190315150321","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:Uvzq1ng81mfpt29u\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvzq1ng81mfpt29u","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_showPostId=uvzq1ng81mfpt29u#flow-post-uvzq1ng81mfpt29u","title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_revId=uvzq1ng81oeqx48y\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=reply\u0026topic_postId=uvzq1ng81mfpt29u#flow-post-uvzq1ng81mfpt29u-form-content","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"30"},"author":{"name":"ABaso (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/ABaso_(WMF)","title":"Contributions/ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:ABaso_(WMF)","title":"ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:ABaso_(WMF)","title":"User talk:ABaso (WMF)","exists":true,"_BC_bools":["exists"]}},"id":851642},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content": {"content":"Audiences Engineering Feedback","format":"topic-title-html","plaintext":"Audiences Engineering Feedback"},"watchable":false,"replyToId":null,"postId":"uvzq1ng81mfpt29u","isMaxThreadingDepth":false,"creator":{"name":"ABaso (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/ABaso_(WMF)","title":"Contributions/ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:ABaso_(WMF)","title":"ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:ABaso_(WMF)","title":"User talk:ABaso (WMF)","exists":true,"_BC_bools":["exists"]}},"id":851642},"isNewPage":false,"replies":["uvzq1ng81qds1682","uvzs4byqkfk4jdik","uvzsgd0j42qdu96x","uwsmz45s4mpc3h6y","uwu9g2yysqpx1043","uwuok78e8zclu6z2"],"reply_count":11,"last_updated_readable":"18:42, 1 April 2019","last_updated":1554144127000},"uvzq1ng81qds1682":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked", "isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvzq1ng81mfpt29u","articleTitle":"Topic:Uvzq1ng81mfpt29u","revisionId":"uvzq1ng81qds1682","timestamp":"20190315150321","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvzq1ng81mfpt29u","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_showPostId=uvzq1ng81qds1682#flow-post-uvzq1ng81qds1682","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_postId=uvzq1ng81qds1682\u0026topic_revId=uvzq1ng81qds1682\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=reply\u0026topic_postId=uvzq1ng81qds1682#flow-post-uvzq1ng81qds1682","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"3591"},"author":{"name":"ABaso (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/ABaso_(WMF)","title":"Contributions/ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:ABaso_(WMF)","title":"ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url": "/wiki/User_talk:ABaso_(WMF)","title":"User talk:ABaso (WMF)","exists":true,"_BC_bools":["exists"]}},"id":851642},"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,368,0,0]}\"\u003E\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,368,2,2]}\"\u003EWe’ve consulted with the engineering units in the Audiences department at the Wikimedia Foundation and following are our recommendations. We generally agree with the sentiment of the document, although want to express our strong support for a heightened emphasis on security and user privacy, as well as our consensus view on re-use and contemporary deployability.\u003C/i\u003E\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[370,447,0,0]}\"\u003E\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[370,447,2,2]}\"\u003E-Audiences Engineering leads: Runa Bhattacharjee, Ryan Kaldari, Adam Baso\u003C/i\u003E\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[449,613,0,0]}\"\u003EBefore we dig into other items, first, the phrase “MediaWiki Platform Architecture Principles” should be changed to “Wikimedia Engineering Architecture Principles”.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[615,642,0,0]}\"\u003E\u003Cu data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[615,642,3,4]}\"\u003EMajor Considerations\u003C/u\u003E\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[644,1020,0,0]}\"\u003EThe framing of the document should make clear that the goal is not to stop all software development, but instead these principles describe the sort of architecture we’d like in the future. We suggest that the “Application” section be amended to note that investment in improving engineering sustainability should be in a healthy balance with investment in feature development.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1022,1075,0,0]}\"\u003EThe following three items should be changed to MUSTs:\u003C/p\u003E\n\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1077,1533,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1077,1281,1,0]}\"\u003E\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1079,1281,2,2]}\"\u003Eour software and infrastructure SHOULD be designed in such a way to prevent unauthorized access to sensitive information, and to minimize the the impact of individual components getting compromised.\u003C/i\u003E\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1282,1416,1,0]}\"\u003E\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1284,1416,2,2]}\"\u003Eresilience against data corruption SHOULD be a design goal for our system architecture, and be built into the software we write.\u003C/i\u003E\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1417,1533,1,0]}\"\u003E\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1419,1533,2,2]}\"\u003Eour software systems SHOULD be designed to only collect data we need, and retain it only as long as necessary.\u003C/i\u003E\u003C/li\u003E\u003C/ul\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1535,1892,0,0]}\"\u003EThe requirement “software components SHOULD be designed to be reusable, and be published for re-use” should be changed to “software components with broad applicability MUST be designed and published for re-use; software components limited to Wikimedia project-specific use MAY be designed without the need for re-use but MUST be published for auditability”.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1894,2426,0,0]}\"\u003EThe requirements “the MediaWiki stack SHOULD be easy to deploy on standard hosting platforms” and “small MediaWiki instances SHOULD function in low-budget hosting environments” should be amended to reflect the \u003Ca href=\"/wiki/Wikimedia_Technical_Conference/2018/Session_notes/Choosing_installation_methods_and_environments_for_3rd_party_users#Decisions\" title=\"Wikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users\" rel=\"mw:WikiLink\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;piped\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./Wikimedia_Technical_Conference/2018/Session_notes/Choosing_installation_methods_and_environments_for_3rd_party_users#Decisions\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;Wikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users#Decisions\u0026quot;},\u0026quot;dsr\u0026quot;:[2104,2279,129,2]}\"\u003EWikimedia Technical Conference 2018 decision\u003C/a\u003E about shared hosting. Additionally, they should be amended to ensure that for each component the target audience and platform should be specified.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[2428,2736,0,0]}\"\u003EWe’re unsure how this should be worded, but we believe that observability and analytic instrumentation should always be \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[2548,2562,2,2]}\"\u003Econsidered\u003C/i\u003E for Wikimedia project components. Not all new or changing components will require observability and analytic instrumentation, but there ought to be a pause to consider this.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[2738,2906,0,0]}\"\u003EThe phrase “as well as potentially limited connectivity” should be changed to “with tradeoffs explicitly considered in design for mobile form factors and connectivity.”\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[2908,2934,0,0]}\"\u003E\u003Cu data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[2908,2934,3,4]}\"\u003ETerminology Updates\u003C/u\u003E\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[2936,3003,0,0]}\"\u003E“scripting languages” should be changed to “programming languages”.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[3005,3060,0,0]}\"\u003EThe term “domain model” should be clarified where used.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[3062,3127,0,0]}\"\u003E“(annotated HTML)” should be changed to “(e.g., annotated HTML)”.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[3129,3153,0,0]}\"\u003E\u003Cu data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[3129,3153,3,4]}\"\u003EFollow Up Actions\u003C/u\u003E\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[3155,3591,0,0]}\"\u003EAs a follow on after ratification of the principles: there is a desire for more concrete examples. For example, there’s a desire for standards on “high granularity” and versioning of web APIs, defined test coverage targets, and guidance on processing existing/discovered technical debt. There is some consideration for these specific examples in Foundation planning, although more concrete examples and some uniformity would be welcome.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uvzq1ng81mfpt29u","postId":"uvzq1ng81qds1682","isMaxThreadingDepth":false,"creator":{"name":"ABaso (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/ABaso_(WMF)","title":"Contributions/ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:ABaso_(WMF)","title":"ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:ABaso_(WMF)","title":"User talk:ABaso (WMF)","exists":true,"_BC_bools":["exists"]}},"id":851642},"isNewPage":true,"replies":["uwsmcgl12xr82cnm","uwsn97furjee2zj9","uwt0zqkrtn2rio41"]},"uvzs4byqkfk4jdik":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvzq1ng81mfpt29u","articleTitle":"Topic:Uvzq1ng81mfpt29u","revisionId":"uvzs4byqkfk4jdik","timestamp":"20190315154036","changeType":"reply","dateFormats":[], "properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvzq1ng81mfpt29u","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_showPostId=uvzs4byqkfk4jdik#flow-post-uvzs4byqkfk4jdik","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_postId=uvzs4byqkfk4jdik\u0026topic_revId=uvzs4byqkfk4jdik\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{ "reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=reply\u0026topic_postId=uvzs4byqkfk4jdik#flow-post-uvzs4byqkfk4jdik","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"255"},"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,255,0,0]}\"\u003EThanks for the feedback! This all sounds pretty reasonable. I'll probably get around to incorporating this and some of the other feedback next week. I'll let you know once that is done, and we can discuss whether the changes I made seem sufficient to you.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uvzq1ng81mfpt29u","postId":"uvzs4byqkfk4jdik","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":[]},"uvzsgd0j42qdu96x":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvzq1ng81mfpt29u","articleTitle":"Topic:Uvzq1ng81mfpt29u","revisionId":"uvzsgd0j42qdu96x","timestamp":"20190315154636","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvzq1ng81mfpt29u","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_showPostId=uvzsgd0j42qdu96x#flow-post-uvzsgd0j42qdu96x","title":"post","text":"post"},"post-revision":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_postId=uvzsgd0j42qdu96x\u0026topic_revId=uvzsgd0j42qdu96x\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=reply\u0026topic_postId=uvzsgd0j42qdu96x#flow-post-uvzsgd0j42qdu96x","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"7"},"author":{"name":"ABaso (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url": "/wiki/Special:Contributions/ABaso_(WMF)","title":"Contributions/ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:ABaso_(WMF)","title":"ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:ABaso_(WMF)","title":"User talk:ABaso (WMF)","exists":true,"_BC_bools":["exists"]}},"id":851642},"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,7,0,0]}\"\u003EThanks!\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uvzq1ng81mfpt29u","postId":"uvzsgd0j42qdu96x","isMaxThreadingDepth":false,"creator":{"name":"ABaso (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/ABaso_(WMF)","title": "Contributions/ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:ABaso_(WMF)","title":"ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:ABaso_(WMF)","title":"User talk:ABaso (WMF)","exists":true,"_BC_bools":["exists"]}},"id":851642},"isNewPage":false,"replies":[]},"ux1xj5xi2m33js4q":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvzq1ng81mfpt29u","articleTitle":"Topic:Uvzq1ng81mfpt29u","revisionId":"ux1xj5xi2m33js4q","timestamp":"20190401184207","changeType":"edit-post","dateFormats":[],"properties":[],"isOriginalContent":false,"isModerated":false,"links":{"post-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=history\u0026topic_postId=uwsmcgl12xr82cnm","title":"History","text":"History"},"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvzq1ng81mfpt29u","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_showPostId=uwsmcgl12xr82cnm#flow-post-uwsmcgl12xr82cnm","title":"post","text":"post"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=compare-post-revisions\u0026topic_newRevision=ux1xj5xi2m33js4q","title":"diff","text":"diff"},"diff-prev":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=compare-post-revisions\u0026topic_newRevision=ux1xj5xi2m33js4q","title":"prev","text":"prev"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_postId=uwsmcgl12xr82cnm\u0026topic_revId=ux1xj5xi2m33js4q\u0026action=single-view","title":"post revision","text":"post revision"}},"actions":{ "reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=reply\u0026topic_postId=uwsmcgl12xr82cnm#flow-post-uwsmcgl12xr82cnm","title":"Reply","text":"Reply"}},"size":{"old":"1955","new":"1965"},"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":"ux1xj5xi2m33js4q","previousRevisionId":"uwsmcgl12xr82cnm","isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,67,0,0]}\"\u003EI have implemented several changes according to the feedback above:\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[67,256,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[79,243,0,0]}\"\u003EBefore we dig into other items, first, the phrase “MediaWiki Platform Architecture Principles” should be changed to “Wikimedia Engineering Architecture Principles”.\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[256,261,0,0]}\"\u003EDone.\u003C/p\u003E\n\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[263,716,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[263,466,1,0]}\"\u003E\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[264,466,2,2]}\"\u003Eour software and infrastructure SHOULD be designed in such a way to prevent unauthorized access to sensitive information, and to minimize the the impact of individual components getting compromised.\u003C/i\u003E\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[467,600,1,0]}\"\u003E\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[468,600,2,2]}\"\u003Eresilience against data corruption SHOULD be a design goal for our system architecture, and be built into the software we write.\u003C/i\u003E\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[601,716,1,0]}\"\u003E\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[602,716,2,2]}\"\u003Eour software systems SHOULD be designed to only collect data we need, and retain it only as long as necessary.\u003C/i\u003E\u003C/li\u003E\u003C/ul\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[716,722,0,0]}\"\u003E\n\nDone\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[722,1104,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[734,1091,0,0]}\"\u003EThe requirement “software components SHOULD be designed to be reusable, and be published for re-use” should be changed to “software components with broad applicability MUST be designed and published for re-use; software components limited to Wikimedia project-specific use MAY be designed without the need for re-use but MUST be published for auditability”.\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1104,1129,0,0]}\"\u003EDone somewhat differently\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[1129,1322,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1141,1309,0,0]}\"\u003EThe phrase “as well as potentially limited connectivity” should be changed to “with tradeoffs explicitly considered in design for mobile form factors and connectivity.”\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1322,1326,0,0]}\"\u003EDone\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[1326,1418,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1338,1405,0,0]}\"\u003E“scripting languages” should be changed to “programming languages”.\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1418,1676,0,0]}\"\u003EDone. \"community with ways to develop workflows using scripting languages\" was written with an eye to Scribunto and Gadgets, but I think there is no harm in a broader phrasing. The original wording contained the phrase \"on-wiki\", but that is gone now anyway.\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[1676,1756,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1688,1743,0,0]}\"\u003EThe term “domain model” should be clarified where used.\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1756,1856,0,0]}\"\u003EDone. Are there any other terms that need clarification, or should be linked to a wikipedia article?\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[1856,1946,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1868,1933,0,0]}\"\u003E“(annotated HTML)” should be changed to “(e.g., annotated HTML)”.\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1946,1965,0,0]}\"\u003EDone as well.\u003Cbr data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;selfClose\u0026quot;:true,\u0026quot;dsr\u0026quot;:[1959,1965,6,0]}\"/\u003E\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uvzq1ng81qds1682","postId":"uwsmcgl12xr82cnm","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":["uwt0wwbw0zqrpsq5","uwt8pkt9c0ug5689"]},"uwsn2q2paah5w66t":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvzq1ng81mfpt29u","articleTitle":"Topic:Uvzq1ng81mfpt29u","revisionId":"uwsn2q2paah5w66t","timestamp":"20190328143629","changeType":"edit-post","dateFormats" :[],"properties":[],"isOriginalContent":false,"isModerated":false,"links":{"post-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=history\u0026topic_postId=uwsmz45s4mpc3h6y","title":"History","text":"History"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvzq1ng81mfpt29u","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_showPostId=uwsmz45s4mpc3h6y#flow-post-uwsmz45s4mpc3h6y","title":"post","text":"post"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=compare-post-revisions\u0026topic_newRevision=uwsn2q2paah5w66t","title":"diff","text":"diff"},"diff-prev":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=compare-post-revisions\u0026topic_newRevision=uwsn2q2paah5w66t","title":"prev","text":"prev"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_postId=uwsmz45s4mpc3h6y\u0026topic_revId=uwsn2q2paah5w66t\u0026action=single-view","title":"post revision","text":"post revision"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=reply\u0026topic_postId=uwsmz45s4mpc3h6y#flow-post-uwsmz45s4mpc3h6y","title":"Reply","text":"Reply"}},"size":{"old":"1340","new":"1477"},"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":"uwsn2q2paah5w66t","previousRevisionId":"uwsmz45s4mpc3h6y","isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,10,0,0]}\"\u003EYou wrote:\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[10,567,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[22,554,0,0]}\"\u003EThe requirements “the MediaWiki stack SHOULD be easy to deploy on standard hosting platforms” and “small MediaWiki instances SHOULD function in low-budget hosting environments” should be amended to reflect the \u003Ca href=\"/wiki/Wikimedia_Technical_Conference/2018/Session_notes/Choosing_installation_methods_and_environments_for_3rd_party_users#Decisions\" title=\"Wikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users\" rel=\"mw:WikiLink\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;piped\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./Wikimedia_Technical_Conference/2018/Session_notes/Choosing_installation_methods_and_environments_for_3rd_party_users#Decisions\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;Wikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users#Decisions\u0026quot;},\u0026quot;dsr\u0026quot;:[232,407,129,2]}\"\u003EWikimedia Technical Conference 2018 decision\u003C/a\u003E about shared hosting. Additionally, they should be amended to ensure that for each component the target audience and platform should be specified.\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[567,579,0,0]}\"\u003EI now added:\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[579,720,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[591,707,0,0]}\"\u003Efor every component and feature, the intended target audience and supported target platform MUST be clearly defined.\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[720,799,0,0]}\"\u003EHowever, I'm unsure how to incorporate the decision made at TechConf. It reads:\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[799,1230,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[811,1217,0,0]}\"\u003EIf we commit to an easy-to-use tool for MW platform installation, configuration, and maintenance, then we can drop support of \"one-click installs\" on shared hosting environments; A special interest group is necessary to further these goals and facilitate implementation\n(see \u003Ca href=\"/wiki/Wikimedia_Technical_Conference/2018/Session_notes/Choosing_installation_methods_and_environments_for_3rd_party_users#Decisions\" title=\"Wikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users\" rel=\"mw:WikiLink\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;simple\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./Wikimedia_Technical_Conference/2018/Session_notes/Choosing_installation_methods_and_environments_for_3rd_party_users#Decisions\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;Wikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users#Decisions\u0026quot;},\u0026quot;dsr\u0026quot;:[1086,1216,2,2]}\"\u003EWikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users#Decisions\u003C/a\u003E)\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[1230,1477,0,0]}\"\u003EThe \"if\" part has not happened, there is no such commitment, and no such special interest group exists. I would be very happy to see this happening, but until then, the policy should document the status quo: MediaWiki has to run on shared hosting.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uvzq1ng81mfpt29u","postId":"uwsmz45s4mpc3h6y","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":[]},"uwsn97furjee2zj9":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvzq1ng81mfpt29u","articleTitle":"Topic:Uvzq1ng81mfpt29u","revisionId":"uwsn97furjee2zj9","timestamp":"20190328143943","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent": true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvzq1ng81mfpt29u","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_showPostId=uwsn97furjee2zj9#flow-post-uwsn97furjee2zj9","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_postId=uwsn97furjee2zj9\u0026topic_revId=uwsn97furjee2zj9\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=reply\u0026topic_postId=uwsn97furjee2zj9#flow-post-uwsn97furjee2zj9","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"522"},"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,8,0,0]}\"\u003ERe this:\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[8,341,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[20,328,0,0]}\"\u003EWe’re unsure how this should be worded, but we believe that observability and analytic instrumentation should always be \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[140,154,2,2]}\"\u003Econsidered\u003C/i\u003E for Wikimedia project components. Not all new or changing components will require observability and analytic instrumentation, but there ought to be a pause to consider this.\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[341,353,0,0]}\"\u003EI now added:\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[353,501,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[365,488,0,0]}\"\u003Eobservability and analytic instrumentation SHOULD be explicitly considered in in the design of new components and services.\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[501,522,0,0]}\"\u003EDoes that sound good?\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uvzq1ng81qds1682","postId":"uwsn97furjee2zj9","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":[]},"uwt0wwbw0zqrpsq5":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvzq1ng81mfpt29u","articleTitle":"Topic:Uvzq1ng81mfpt29u","revisionId":"uwt0wwbw0zqrpsq5","timestamp":"20190328184458","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent": true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvzq1ng81mfpt29u","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_showPostId=uwt0wwbw0zqrpsq5#flow-post-uwt0wwbw0zqrpsq5","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_postId=uwt0wwbw0zqrpsq5\u0026topic_revId=uwt0wwbw0zqrpsq5\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=reply\u0026topic_postId=uwt0wwbw0zqrpsq5#flow-post-uwt0wwbw0zqrpsq5","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"583"},"author":{"name":"ABaso (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/ABaso_(WMF)","title":"Contributions/ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:ABaso_(WMF)","title":"ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:ABaso_(WMF)","title":"User talk:ABaso (WMF)","exists":true,"_BC_bools":["exists"]}},"id":851642},"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,82,0,0]}\"\u003EThanks. Seeing as you asked about terms needing clarification, here are some more:\u003C/p\u003E\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[83,583,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[83,426,1,0]}\"\u003E\"APIs and libraries\" might at present read incorrectly to not include \"services\". This is always a difficult nomenclature problem, as an API often means the API interface at the class level as well as network exposed API, but services may or may not be network exposed. I usually throw my hands up at this point and use the term \"component\".\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[427,519,1,0]}\"\u003E\"through the integration of provenance information\" could use an illuminating for-example.\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[520,583,1,0]}\"\u003Ethe term \"standard hosting platform\" should be disambiguated.\u003C/li\u003E\u003C/ul\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uwsmcgl12xr82cnm","postId":"uwt0wwbw0zqrpsq5","isMaxThreadingDepth":false,"creator":{"name":"ABaso (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/ABaso_(WMF)","title":"Contributions/ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:ABaso_(WMF)","title":"ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:ABaso_(WMF)","title":"User talk:ABaso (WMF)","exists":true,"_BC_bools":["exists"]}},"id":851642},"isNewPage":false,"replies":[]},"uwt0zqkrtn2rio41":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvzq1ng81mfpt29u","articleTitle":"Topic:Uvzq1ng81mfpt29u","revisionId":"uwt0zqkrtn2rio41","timestamp":"20190328184623","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false ,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvzq1ng81mfpt29u","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_showPostId=uwt0zqkrtn2rio41#flow-post-uwt0zqkrtn2rio41","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_postId=uwt0zqkrtn2rio41\u0026topic_revId=uwt0zqkrtn2rio41\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=reply\u0026topic_postId=uvzq1ng81qds1682#flow-post-uvzq1ng81qds1682","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"122"},"author":{"name":"ABaso (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/ABaso_(WMF)","title":"Contributions/ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:ABaso_(WMF)","title":"ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:ABaso_(WMF)","title":"User talk:ABaso (WMF)","exists":true,"_BC_bools":["exists"]}},"id":851642},"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,122,0,0]}\"\u003EThat works. I think the translation here is that for new things there should be a solid reason for \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[99,106,2,2]}\"\u003Enot\u003C/i\u003E considering it.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uvzq1ng81qds1682","postId":"uwt0zqkrtn2rio41","isMaxThreadingDepth":false,"creator":{"name":"ABaso (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/ABaso_(WMF)","title":"Contributions/ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:ABaso_(WMF)","title":"ABaso (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:ABaso_(WMF)","title":"User talk:ABaso (WMF)","exists":true,"_BC_bools":["exists"]}},"id":851642},"isNewPage":false,"replies":[]},"uwt8pkt9c0ug5689" :{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvzq1ng81mfpt29u","articleTitle":"Topic:Uvzq1ng81mfpt29u","revisionId":"uwt8pkt9c0ug5689","timestamp":"20190328210458","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvzq1ng81mfpt29u","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_showPostId=uwt8pkt9c0ug5689#flow-post-uwt8pkt9c0ug5689","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_postId=uwt8pkt9c0ug5689\u0026topic_revId=uwt8pkt9c0ug5689\u0026action=single-view","title":"post revision", "text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=reply\u0026topic_postId=uwsmcgl12xr82cnm#flow-post-uwsmcgl12xr82cnm","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"1178"},"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\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[0,106,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[12,93,0,0]}\"\u003E\"APIs and libraries\" might at present read incorrectly to not include \"services\".\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[106,475,0,0]}\"\u003EWell, it includes the APIs of services. The kind of community maintained code we are talking about here includes Gadgets, Lua modules, extensions, and bots. All of these use APIs, and it would be nice if we could supply them with libraries. I will add \"services\", but it seems redundant - and may be taken to include service objects, as opposed to web-exposed services.\u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[475,551,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[487,538,0,0]}\"\u003E\"through the integration of provenance information\"\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[551,865,0,0]}\"\u003EWhat this really means is \"when exposing parts of a wiki page via an API, also expose the relevant citations\". But that seems too concrete for include in the policy. \n\nAlso, re-reading this, it seems like MUST is too strong here. This is rather hard to do. A MUST would block any new feature that doesn't do this. \u003C/p\u003E\u003Cblockquote data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;html\u0026quot;,\u0026quot;dsr\u0026quot;:[865,917,12,13]}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[877,904,0,0]}\"\u003E\"standard hosting platform\"\u003C/p\u003E\u003C/blockquote\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[917,1178,0,0]}\"\u003EThis was intended to be future-compatible. It currently means \"vanilla LAMP stack with no shell access and no admin rights\". But if node.js support becomes standard in such environments, the policy should allow us to make use of that without having to amend it.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uwsmcgl12xr82cnm","postId":"uwt8pkt9c0ug5689","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":[]},"uwu9g2yysqpx1043":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvzq1ng81mfpt29u","articleTitle":"Topic:Uvzq1ng81mfpt29u","revisionId":"uwu9g2yysqpx1043","timestamp":"20190329080437","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent": true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvzq1ng81mfpt29u","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_showPostId=uwu9g2yysqpx1043#flow-post-uwu9g2yysqpx1043","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_postId=uwu9g2yysqpx1043\u0026topic_revId=uwu9g2yysqpx1043\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=reply\u0026topic_postId=uwu9g2yysqpx1043#flow-post-uwu9g2yysqpx1043","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"590"},"author":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"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,307,0,0]}\"\u003EIMO the current wording is generic enough to incorporate that - if we provided, say, easy-to-use docker containers with a long-term support commitment, that would be a stack that's easy to deploy on standard low-budget hosting platforms (cloud providers being reasonably standard and low-budget these days).\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[309,590,0,0]}\"\u003EThe one thing I'd maybe change is \"SHOULD be easy to deploy \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[369,385,2,2]}\"\u003Eand maintain\u003C/i\u003E\" as containers often tend to be easier to deploy than to operate over an extended period of time and sufficient thought is not always given to how they can be kept up-to-date with OS security updates etc.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId": "uvzq1ng81mfpt29u","postId":"uwu9g2yysqpx1043","isMaxThreadingDepth":false,"creator":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"isNewPage":false,"replies":[]},"uwuok78e8zclu6z2":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uvzq1ng81mfpt29u","articleTitle":"Topic:Uvzq1ng81mfpt29u","revisionId":"uwuok78e8zclu6z2","timestamp":"20190329123601","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uvzq1ng81mfpt29u","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_showPostId=uwuok78e8zclu6z2#flow-post-uwuok78e8zclu6z2","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026topic_postId=uwuok78e8zclu6z2\u0026topic_revId=uwuok78e8zclu6z2\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=reply\u0026topic_postId=uvzq1ng81mfpt29u#flow-post-uvzq1ng81mfpt29u","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"267"},"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,72,0,0]}\"\u003EEase of maintainance is I think covered by the subsequent bullet points:\u003C/p\u003E\n\n\u003Cul data-parsoid=\"{\u0026quot;dsr\u0026quot;:[74,267,0,0]}\"\u003E\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[74,164,1,0]}\"\u003Eit SHOULD be possible to install and upgrade MediaWiki without much technical knowledge.\u003C/li\u003E\n\u003Cli data-parsoid=\"{\u0026quot;dsr\u0026quot;:[165,267,1,0]}\"\u003Eit MUST be possible to upgrade MediaWiki without the risk of losing content or disrupting operation.\u003C/li\u003E\u003C/ul\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uvzq1ng81mfpt29u","postId":"uwuok78e8zclu6z2","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":[]},"uy1a7wsw8lr1ai3l":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uxpkxrhzklew3ets","articleTitle":"Topic:Uxpkxrhzklew3ets","revisionId":"uy1a7wsw8lr1ai3l","timestamp":"20190417153459","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:Uxpkxrhzklew3ets","title":"topic","text":"topic"},"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=history","title":"History","text":"History"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=unwatch","title":"Unwatch","text":"Unwatch"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026topic_revId=uy1a7wsw8lr1ai3l\u0026action=single-view","title":"topic revision","text":"topic revision"}},"actions":[],"size":{"old":"129","new":"129"},"author":{"name":"JCrespo (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/JCrespo_(WMF)","title":"Contributions/JCrespo (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:JCrespo_(WMF)","title":"JCrespo (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url": "/wiki/User_talk:JCrespo_(WMF)","title":"User talk:JCrespo (WMF)","exists":true,"_BC_bools":["exists"]}},"id":2328845},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":"uxpkxrhzkndx7gsw","moderator":{"name":"JCrespo (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/JCrespo_(WMF)","title":"Contributions/JCrespo (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:JCrespo_(WMF)","title":"JCrespo (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:JCrespo_(WMF)","title":"User talk:JCrespo (WMF)","exists":true,"_BC_bools":["exists"]}},"id":2328845},"moderateState":"lock","moderateReason":{"content":"marked as resolved","format":"plaintext"},"isLocked":true,"isModeratedNotLocked":false,"content":{"content": "Where are the principles regarding maintenance, long term thinking, careful planning, collaboration and agreement, and ownership?","format":"topic-title-html","plaintext":"Where are the principles regarding maintenance, long term thinking, careful planning, collaboration and agreement, and ownership?"},"summary":{"revision":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked"],"workflowId":"uxpkxrhzklew3ets","articleTitle":"Topic:Uxpkxrhzklew3ets","revisionId":"uy1a96ihkmyxvyb5","timestamp":"20190417153537","changeType":"create-topic-summary","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uxpkxrhzklew3ets","title":"topic","text":"topic"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=history","title":"History","text":"History"},"watch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=unwatch","title":"Unwatch","text":"Unwatch"},"summary-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026topicsummary_revId=uy1a96ihkmyxvyb5\u0026action=view-topic-summary","title":"summary revision","text":"summary revision"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"58"},"author":{"name":"JCrespo (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/JCrespo_(WMF)","title":"Contributions/JCrespo (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:JCrespo_(WMF)","title":"JCrespo (WMF)","exists":true,"_BC_bools":["exists"]}, "talk":{"url":"/wiki/User_talk:JCrespo_(WMF)","title":"User talk:JCrespo (WMF)","exists":true,"_BC_bools":["exists"]}},"id":2328845},"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,58,0,0]}\"\u003EOut of scope, but will try to discuss this in other scope.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"creator":{"name":"JCrespo (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/JCrespo_(WMF)","title":"Contributions/JCrespo (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:JCrespo_(WMF)","title":"JCrespo (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:JCrespo_(WMF)","title":"User talk:JCrespo (WMF)","exists":true, "_BC_bools":["exists"]}},"id":2328845}}},"watchable":false,"replyToId":null,"postId":"uxpkxrhzklew3ets","isMaxThreadingDepth":false,"creator":{"name":"JCrespo (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/JCrespo_(WMF)","title":"Contributions/JCrespo (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:JCrespo_(WMF)","title":"JCrespo (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:JCrespo_(WMF)","title":"User talk:JCrespo (WMF)","exists":true,"_BC_bools":["exists"]}},"id":2328845},"isNewPage":false,"replies":["uxpkxrhzkpcybis0","uxplft2n4yqm19di"],"reply_count":2,"last_updated_readable":"15:34, 17 April 2019","last_updated":1555515299000},"uxpkxrhzkpcybis0":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uxpkxrhzklew3ets","articleTitle":"Topic:Uxpkxrhzklew3ets","revisionId" :"uxpkxrhzkpcybis0","timestamp":"20190412093017","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uxpkxrhzklew3ets","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026topic_showPostId=uxpkxrhzkpcybis0#flow-post-uxpkxrhzkpcybis0","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026topic_postId=uxpkxrhzkpcybis0\u0026topic_revId=uxpkxrhzkpcybis0\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"266"},"author":{"name":"JCrespo (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/JCrespo_(WMF)","title":"Contributions/JCrespo (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:JCrespo_(WMF)","title":"JCrespo (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:JCrespo_(WMF)","title":"User talk:JCrespo (WMF)","exists":true,"_BC_bools":["exists"]}},"id":2328845},"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,266,0,0]}\"\u003E\u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,32,2,2]}\"\u003E\"Extensible and Sustainable\"\u003C/i\u003E declares the rights, but not the obligations. \u003Ca href=\"/wiki/Technical_Collaboration_Guidance/Principles\" title=\"Technical Collaboration Guidance/Principles\" rel=\"mw:WikiLink\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;simple\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./Technical_Collaboration_Guidance/Principles\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;Technical Collaboration Guidance/Principles\u0026quot;},\u0026quot;dsr\u0026quot;:[79,126,2,2]}\"\u003ETechnical Collaboration Guidance/Principles\u003C/a\u003E doesn't say anything about that either. Forgive me if it is out of scope, but think is an important theme that is not (properly) mentioned.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uxpkxrhzklew3ets","postId":"uxpkxrhzkpcybis0","isMaxThreadingDepth":false,"creator":{"name":"JCrespo (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/JCrespo_(WMF)","title":"Contributions/JCrespo (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:JCrespo_(WMF)","title":"JCrespo (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:JCrespo_(WMF)","title":"User talk:JCrespo (WMF)","exists":true,"_BC_bools":["exists"]}},"id":2328845},"isNewPage":true,"replies":[]},"uxplgb491u8un095":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uxpkxrhzklew3ets","articleTitle":"Topic:Uxpkxrhzklew3ets","revisionId":"uxplgb491u8un095","timestamp":"20190412093932","changeType":"edit-post","dateFormats":[],"properties":[],"isOriginalContent":false, "isModerated":false,"links":{"post-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=history\u0026topic_postId=uxplft2n4yqm19di","title":"History","text":"History"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uxpkxrhzklew3ets","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026topic_showPostId=uxplft2n4yqm19di#flow-post-uxplft2n4yqm19di","title":"post","text":"post"},"diff":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=compare-post-revisions\u0026topic_newRevision=uxplgb491u8un095","title":"diff","text":"diff"},"diff-prev":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026action=compare-post-revisions\u0026topic_newRevision=uxplgb491u8un095","title":"prev","text":"prev"}, "post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets\u0026topic_postId=uxplft2n4yqm19di\u0026topic_revId=uxplgb491u8un095\u0026action=single-view","title":"post revision","text":"post revision"}},"actions":[],"size":{"old":"420","new":"403"},"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":"uxplgb491u8un095","previousRevisionId":"uxplft2n4yqm19di","isLocked":false,"isModeratedNotLocked":false,"content":{"content": "\u003Csection data-mw-section-id=\"0\" data-parsoid=\"{}\"\u003E\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[0,254,0,0]}\"\u003EThese are not principles of \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[28,44,2,2]}\"\u003Earchitecture\u003C/i\u003E, so they are out of scope. The closest we have here is the FAST/CHANGE point. I agree we should have guidelines for planning processes and strategic decision making, but that's not what this document is about.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[256,403,0,0]}\"\u003ELet's please keep the discussion on phabricator, though: \u003Ca rel=\"mw:WikiLink/Interwiki\" href=\"https://phabricator.wikimedia.org/T220657\" title=\"phab:T220657\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;simple\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;https://phabricator.wikimedia.org/T220657\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;phab:T220657\u0026quot;},\u0026quot;isIW\u0026quot;:true,\u0026quot;dsr\u0026quot;:[313,329,2,2]}\"\u003Ephab:T220657\u003C/a\u003E. If you want to discuss this further, please copy our conversation there.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uxpkxrhzklew3ets","postId":"uxplft2n4yqm19di","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":[]},"v8uzmq4kxc03dnaf":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uxquuo2ugvuh8ii0","articleTitle":"Topic:Uxquuo2ugvuh8ii0","revisionId":"v8uzmq4kxc03dnaf","timestamp":"20191009141231","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:Uxquuo2ugvuh8ii0","title":"topic","text":"topic"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=history","title":"History","text":"History"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=unwatch","title":"Unwatch","text":"Unwatch"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026topic_revId=v8uzmq4kxc03dnaf\u0026action=single-view","title":"topic revision","text":"topic revision"}},"actions":[],"size":{"old":"14","new":"14"},"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":"uxquuo2ugxtickh4","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":"Business Model","format":"topic-title-html","plaintext":"Business Model"},"summary":{"revision":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked"],"workflowId":"uxquuo2ugvuh8ii0","articleTitle":"Topic:Uxquuo2ugvuh8ii0","revisionId":"v8uzmtqhtkv8gsgs","timestamp":"20191009141234","changeType":"create-topic-summary","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uxquuo2ugvuh8ii0","title":"topic","text":"topic"},"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=history","title":"History","text":"History"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=unwatch","title":"Unwatch","text":"Unwatch"},"summary-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026topicsummary_revId=v8uzmtqhtkv8gsgs\u0026action=view-topic-summary","title":"summary revision","text":"summary revision"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"369"},"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,369,0,0]}\"\u003EReleasing MediaWiki as a software product for use by third parties has been part of WMF's \"business plan\" for as long as it has existed. Re-assessing the value of this for our mission would certainly be good, but as long as there is no decision to \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[248,256,2,2]}\"\u003Edrop\u003C/i\u003E the goal of releasing MediaWiki for third parties, it \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[311,317,2,2]}\"\u003Eis\u003C/i\u003E a goal, and it should be present in the principles.\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":"uxquuo2ugvuh8ii0","isMaxThreadingDepth":false,"creator":{"name":"DBarratt (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DBarratt_(WMF)","title":"Contributions/DBarratt (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DBarratt_(WMF)","title":"DBarratt (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DBarratt_(WMF)","title":"User talk:DBarratt (WMF)","exists":true,"_BC_bools":["exists"]}},"id":10189394},"isNewPage":false,"replies":[ "uxquuo2ugzsjgmg8","uxtkmxjhxya9sjsa","uxv2xatdybbmpd6u","uyh72uhhsytptwkh","uyh76uu38j599dc0"],"reply_count":5,"last_updated_readable":"14:12, 9 October 2019","last_updated":1570630351000},"uxquuo2ugzsjgmg8":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uxquuo2ugvuh8ii0","articleTitle":"Topic:Uxquuo2ugvuh8ii0","revisionId":"uxquuo2ugzsjgmg8","timestamp":"20190412231444","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uxquuo2ugvuh8ii0","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026topic_showPostId=uxquuo2ugzsjgmg8#flow-post-uxquuo2ugzsjgmg8","title":"post","text": "post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026topic_postId=uxquuo2ugzsjgmg8\u0026topic_revId=uxquuo2ugzsjgmg8\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"574"},"author":{"name":"DBarratt (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DBarratt_(WMF)","title":"Contributions/DBarratt (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DBarratt_(WMF)","title": "DBarratt (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DBarratt_(WMF)","title":"User talk:DBarratt (WMF)","exists":true,"_BC_bools":["exists"]}},"id":10189394},"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,574,0,0]}\"\u003EIt makes me sad that the architecture principles codify a \u003Ca rel=\"mw:WikiLink/Interwiki\" href=\"https://en.wikipedia.org/wiki/Business%20model\" title=\"wikipedia:Business model\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;piped\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;https://en.wikipedia.org/wiki/Business%20model\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;Wikipedia:Business model\u0026quot;},\u0026quot;isIW\u0026quot;:true,\u0026quot;dsr\u0026quot;:[58,101,27,2]}\"\u003Ebusiness model\u003C/a\u003E that is not backed up by any sort of research or strategy. I think the most pressing question that needs to be answered is: What problem(s) does MediaWiki solve and for \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[271,279,2,2]}\"\u003Ewhom\u003C/i\u003E does it solve them for? A lot of the principles attempt to answer this question, which is not a question that engineers could possibly have the answer to, and business people shouldn't attempt to answer it without a significant amount of \u003Ca rel=\"mw:WikiLink/Interwiki\" href=\"https://en.wikipedia.org/wiki/Customer%20development\" title=\"wikipedia:Customer development\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;piped\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;https://en.wikipedia.org/wiki/Customer%20development\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;Wikipedia:Customer development\u0026quot;},\u0026quot;isIW\u0026quot;:true,\u0026quot;dsr\u0026quot;:[518,573,33,2]}\"\u003Ecustomer development\u003C/a\u003E.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uxquuo2ugvuh8ii0","postId":"uxquuo2ugzsjgmg8","isMaxThreadingDepth":false,"creator":{"name":"DBarratt (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DBarratt_(WMF)","title":"Contributions/DBarratt (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DBarratt_(WMF)","title":"DBarratt (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DBarratt_(WMF)","title":"User talk:DBarratt (WMF)","exists":true,"_BC_bools":["exists"]}},"id":10189394},"isNewPage":true,"replies":[]},"uxtkmxjhxya9sjsa":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uxquuo2ugvuh8ii0","articleTitle":"Topic:Uxquuo2ugvuh8ii0","revisionId":"uxtkmxjhxya9sjsa","timestamp":"20190414043036","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent": true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uxquuo2ugvuh8ii0","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026topic_showPostId=uxtkmxjhxya9sjsa#flow-post-uxtkmxjhxya9sjsa","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026topic_postId=uxtkmxjhxya9sjsa\u0026topic_revId=uxtkmxjhxya9sjsa\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"118"},"author":{"name":"Greg (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Greg_(WMF)","title":"Contributions/Greg (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Greg_(WMF)","title":"Greg (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Greg_(WMF)","title":"User talk:Greg (WMF)","exists":true,"_BC_bools":["exists"]}},"id":832349},"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,118,0,0]}\"\u003EI thought I read the whole thing but could you point out where it codifies a business model for me? I'm dense I guess.\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uxquuo2ugvuh8ii0","postId":"uxtkmxjhxya9sjsa","isMaxThreadingDepth":false,"creator":{"name":"Greg (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/Greg_(WMF)","title":"Contributions/Greg (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Greg_(WMF)","title":"Greg (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Greg_(WMF)","title":"User talk:Greg (WMF)","exists":true,"_BC_bools":["exists"]}},"id":832349},"isNewPage":false,"replies":[]},"uxv2xatdybbmpd6u":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked", "isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uxquuo2ugvuh8ii0","articleTitle":"Topic:Uxquuo2ugvuh8ii0","revisionId":"uxv2xatdybbmpd6u","timestamp":"20190414204525","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uxquuo2ugvuh8ii0","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026topic_showPostId=uxv2xatdybbmpd6u#flow-post-uxv2xatdybbmpd6u","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026topic_postId=uxv2xatdybbmpd6u\u0026topic_revId=uxv2xatdybbmpd6u\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"984"},"author":{"name":"DBarratt (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DBarratt_(WMF)","title":"Contributions/DBarratt (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DBarratt_(WMF)","title":"DBarratt (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DBarratt_(WMF)","title":"User talk:DBarratt (WMF)","exists":true,"_BC_bools":["exists"]}},"id":10189394},"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,338,0,0]}\"\u003EMostly the points under: \"To provide a web application that can be freely used to collaboratively collect and share knowledge,\" which codifies who our \"customer\" is. It attempts to answer the question I asked above without actually having performed the \u003Ca rel=\"mw:WikiLink/Interwiki\" href=\"https://en.wikipedia.org/wiki/Customer%20development\" title=\"wikipedia:Customer development\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;piped\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;https://en.wikipedia.org/wiki/Customer%20development\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;Wikipedia:Customer development\u0026quot;},\u0026quot;isIW\u0026quot;:true,\u0026quot;dsr\u0026quot;:[253,308,33,2]}\"\u003Ecustomer development\u003C/a\u003E needed in order to answer it.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[340,984,0,0]}\"\u003EObviously, providing MediaWiki to \"be freely used to collectively collect and share knowledge\" is a noble purpose that is consistent with our mission, and is a valuable business strategy; however, I think it's important to know \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[568,576,2,2]}\"\u003Ewhat\u003C/i\u003E problem(s) MediaWiki solves and for \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[613,621,2,2]}\"\u003Ewhom\u003C/i\u003E it solves them for. Without knowing that, how could we know if MediaWiki is \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[698,710,2,2]}\"\u003Eactually\u003C/i\u003E solving our \"customers\" problem(s)? If it does, is it the \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[769,781,2,2]}\"\u003Ecomplete\u003C/i\u003E solution? What other products and services do they need to make it work? Are we going to provide these products and services (for a fee?) or are we going to partner with others in order to provide them?\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uxquuo2ugvuh8ii0","postId":"uxv2xatdybbmpd6u","isMaxThreadingDepth":false,"creator":{"name":"DBarratt (WMF)","wiki":"mediawikiwiki","gender":"unknown","links":{"contribs":{"url":"/wiki/Special:Contributions/DBarratt_(WMF)","title":"Contributions/DBarratt (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:DBarratt_(WMF)","title":"DBarratt (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:DBarratt_(WMF)","title":"User talk:DBarratt (WMF)","exists":true,"_BC_bools":["exists"]}},"id":10189394},"isNewPage":false,"replies":[]},"uyh72uhhsytptwkh":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uxquuo2ugvuh8ii0","articleTitle":"Topic:Uxquuo2ugvuh8ii0","revisionId":"uyh72uhhsytptwkh","timestamp":"20190424190128","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent": true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uxquuo2ugvuh8ii0","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026topic_showPostId=uyh72uhhsytptwkh#flow-post-uyh72uhhsytptwkh","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026topic_postId=uyh72uhhsytptwkh\u0026topic_revId=uyh72uhhsytptwkh\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"596"},"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,369,0,0]}\"\u003EReleasing MediaWiki as a software product for use by third parties has been part of WMF's \"business plan\" for as long as it has existed. Re-assessing the value of this for our mission would certainly be good, but as long as there is no decision to \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[248,256,2,2]}\"\u003Edrop\u003C/i\u003E the goal of releasing MediaWiki for third parties, it \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[311,317,2,2]}\"\u003Eis\u003C/i\u003E a goal, and it should be present in the principles.\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[371,596,0,0]}\"\u003EWhen the product goals and requirements change, the architecture principles change. The principles \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[470,479,2,2]}\"\u003Eapply\u003C/i\u003E the product goals to the technical realm. Such such, they indeed codify product goals. But they do not dictate them.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uxquuo2ugvuh8ii0","postId":"uyh72uhhsytptwkh","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":[]},"uyh76uu38j599dc0":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uxquuo2ugvuh8ii0","articleTitle":"Topic:Uxquuo2ugvuh8ii0","revisionId":"uyh76uu38j599dc0","timestamp":"20190424190328","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent": true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uxquuo2ugvuh8ii0","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026topic_showPostId=uyh76uu38j599dc0#flow-post-uyh76uu38j599dc0","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026topic_postId=uyh76uu38j599dc0\u0026topic_revId=uyh76uu38j599dc0\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"62"},"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,62,0,0]}\"\u003EAnyway, let'S pelase continue this on \u003Ca rel=\"mw:WikiLink/Interwiki\" href=\"https://phabricator.wikimedia.org/T220657#5135741\" title=\"phab:T220657\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;simple\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;https://phabricator.wikimedia.org/T220657#5135741\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;phab:T220657#5135741\u0026quot;},\u0026quot;isIW\u0026quot;:true,\u0026quot;dsr\u0026quot;:[38,62,2,2]}\"\u003Ephab:T220657#5135741\u003C/a\u003E\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uxquuo2ugvuh8ii0","postId":"uyh76uu38j599dc0","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":[]},"uxt2basxfzggm7fw":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uxt2basxfxhfi5gs","articleTitle":"Topic:Uxt2basxfxhfi5gs","revisionId":"uxt2basxfzggm7fw","timestamp":"20190413230135","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:Uxt2basxfxhfi5gs\u0026action=history","title":"History","text":"History"}, "topic":{"url":"//www.mediawiki.org/wiki/Topic:Uxt2basxfxhfi5gs","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026topic_showPostId=uxt2basxfxhfi5gs#flow-post-uxt2basxfxhfi5gs","title":"post","text":"post"},"topic-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026topic_revId=uxt2basxfzggm7fw\u0026action=single-view","title":"topic revision","text":"topic revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=reply\u0026topic_postId=uxt2basxfxhfi5gs#flow-post-uxt2basxfxhfi5gs-form-content","title":"Reply","text":"Reply"},"summarize":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"23"},"author":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"lastEditUser":{"name":null,"wiki":null,"gender":"unknown","links":[],"id":null},"lastEditId":null,"previousRevisionId":null,"isLocked":false,"isModeratedNotLocked":false,"content":{"content":"Architecture guidelines","format":"topic-title-html","plaintext":"Architecture guidelines"},"watchable":false,"replyToId":null,"postId":"uxt2basxfxhfi5gs","isMaxThreadingDepth":false,"creator":{"name": "Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"isNewPage":false,"replies":["uxt2basxg1fhq9f0","uxxc38w1iiiv5arc"],"reply_count":2,"last_updated_readable":"21:02, 15 April 2019","last_updated":1555362171000},"uxt2basxg1fhq9f0":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uxt2basxfxhfi5gs","articleTitle":"Topic:Uxt2basxfxhfi5gs","revisionId":"uxt2basxg1fhq9f0","timestamp":"20190413230135","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uxt2basxfxhfi5gs","title":"topic","text":"topic"},"post":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026topic_showPostId=uxt2basxg1fhq9f0#flow-post-uxt2basxg1fhq9f0","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026topic_postId=uxt2basxg1fhq9f0\u0026topic_revId=uxt2basxg1fhq9f0\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=reply\u0026topic_postId=uxt2basxg1fhq9f0#flow-post-uxt2basxg1fhq9f0","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=edit-topic-summary","title":"Summarize","text":"Summarize"}},"size":{"old":"0","new":"121"},"author":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title":"Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"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]}\"\u003EWhat's the relationship with \u003Ca href=\"/wiki/Architecture_guidelines\" title=\"Architecture guidelines\" rel=\"mw:WikiLink\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;simple\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./Architecture_guidelines\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;Architecture guidelines\u0026quot;},\u0026quot;dsr\u0026quot;:[29,56,2,2]}\"\u003EArchitecture guidelines\u003C/a\u003E? Should that be archived now? Or interlinked with this document?\u003C/p\u003E\u003C/section\u003E","format":"fixed-html"},"watchable":false,"replyToId":"uxt2basxfxhfi5gs","postId":"uxt2basxg1fhq9f0","isMaxThreadingDepth":false,"creator":{"name":"Tgr (WMF)","wiki":"mediawikiwiki","gender":"male","links":{"contribs":{"url":"/wiki/Special:Contributions/Tgr_(WMF)","title": "Contributions/Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"userpage":{"url":"/wiki/User:Tgr_(WMF)","title":"Tgr (WMF)","exists":true,"_BC_bools":["exists"]},"talk":{"url":"/wiki/User_talk:Tgr_(WMF)","title":"User talk:Tgr (WMF)","exists":true,"_BC_bools":["exists"]}},"id":1127507},"isNewPage":true,"replies":[]},"uxxc38w1iiiv5arc":{"_BC_bools":["isOriginalContent","isModerated","isLocked","isModeratedNotLocked","isWatched","watchable","isMaxThreadingDepth","isNewPage"],"workflowId":"uxt2basxfxhfi5gs","articleTitle":"Topic:Uxt2basxfxhfi5gs","revisionId":"uxxc38w1iiiv5arc","timestamp":"20190415210251","changeType":"reply","dateFormats":[],"properties":[],"isOriginalContent":true,"isModerated":false,"links":{"topic-history":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=history","title":"History","text":"History"},"topic":{"url":"//www.mediawiki.org/wiki/Topic:Uxt2basxfxhfi5gs","title":"topic","text":"topic"},"post":{"url": "//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026topic_showPostId=uxxc38w1iiiv5arc#flow-post-uxxc38w1iiiv5arc","title":"post","text":"post"},"post-revision":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026topic_postId=uxxc38w1iiiv5arc\u0026topic_revId=uxxc38w1iiiv5arc\u0026action=single-view","title":"post revision","text":"post revision"},"watch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=watch","title":"Watch","text":"Watch"},"unwatch-topic":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=unwatch","title":"Unwatch","text":"Unwatch"}},"actions":{"reply":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=reply\u0026topic_postId=uxt2basxfxhfi5gs#flow-post-uxt2basxfxhfi5gs","title":"Reply","text":"Reply"},"summarize":{"url":"//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs\u0026action=edit-topic-summary","title":"Summarize", "text":"Summarize"}},"size":{"old":"0","new":"595"},"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,471,0,0]}\"\u003EYou are right that the \u003Ca href=\"/wiki/Architecture_guidelines\" title=\"Architecture guidelines\" rel=\"mw:WikiLink\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;simple\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./Architecture_guidelines\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;Architecture guidelines\u0026quot;},\u0026quot;dsr\u0026quot;:[23,50,2,2]}\"\u003EArchitecture guidelines\u003C/a\u003E should be mentioned and the relationship clarified. The \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[107,121,2,2]}\"\u003Eguidelines\u003C/i\u003E are more concrete, and mostly about how to make changes to MediaWiki core. They are less about what we are trying to achieve. So I think they are much closer to what I have been writing on \u003Ca href=\"/wiki/User:DKinzler_(WMF)/Software_Design_Practices\" title=\"User:DKinzler (WMF)/Software Design Practices\" rel=\"mw:WikiLink\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;simple\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./User:DKinzler_(WMF)/Software_Design_Practices\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;User:DKinzler (WMF)/Software Design Practices\u0026quot;},\u0026quot;dsr\u0026quot;:[311,360,2,2]}\"\u003EUser:DKinzler (WMF)/Software Design Practices\u003C/a\u003E than to the \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[373,387,2,2]}\"\u003Eprinciples\u003C/i\u003E. I'll look into consolidating these (as well as \u003Ca href=\"/wiki/Manual:Coding_conventions/PHP\" title=\"Manual:Coding conventions/PHP\" rel=\"mw:WikiLink\" data-parsoid=\"{\u0026quot;stx\u0026quot;:\u0026quot;simple\u0026quot;,\u0026quot;a\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;./Manual:Coding_conventions/PHP\u0026quot;},\u0026quot;sa\u0026quot;:{\u0026quot;href\u0026quot;:\u0026quot;Manual:Coding_conventions/PHP\u0026quot;},\u0026quot;dsr\u0026quot;:[436,469,2,2]}\"\u003EManual:Coding_conventions/PHP\u003C/a\u003E).\u003C/p\u003E\n\n\u003Cp data-parsoid=\"{\u0026quot;dsr\u0026quot;:[473,595,0,0]}\"\u003EI have added a link from the \u003Ci data-parsoid=\"{\u0026quot;dsr\u0026quot;:[502,516,2,2]}\"\u003Eguidelines\u003C/i\u003E here. I'll link back to them from the non-normative section of the principles.\u003C/p\u003E\u003C/section\u003E" ,"format":"fixed-html"},"watchable":false,"replyToId":"uxt2basxfxhfi5gs","postId":"uxxc38w1iiiv5arc","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":[]}},"workflowId":"udfjucjyn56u6ugy","title":"Talk:Wikimedia Engineering Architecture Principles","actions":{"newtopic":{"url":"//www.mediawiki.org/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles\u0026action=new-topic","title":"Start a new topic","text":"Start a new topic"}},"links":{"board-sort":{"updated": "/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles\u0026topiclist_sortby=updated\u0026topiclist_savesortby=1","newest":"/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles\u0026topiclist_sortby=newest\u0026topiclist_savesortby=1"},"newtopic":"/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles\u0026action=new-topic","pagination":{"fwd":{"url":"//www.mediawiki.org/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles\u0026topiclist_offset-dir=fwd\u0026topiclist_limit=10\u0026topiclist_offset=20190306204540\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:Wikimedia_Engineering_Architecture_Principles\u0026action=watch"},"unwatch-board":{"url": "/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles\u0026action=unwatch"}},"toc":{"submitted":{"action":"view","toconly":true,"limit":50,"sortby":"updated"},"errors":[],"sortby":"updated","type":"topiclist","roots":["uxquuo2ugvuh8ii0","uxpkxrhzklew3ets","uxt2basxfxhfi5gs","unl2nb3os3lemrfv","uvzq1ng81mfpt29u","uvixayupg8rct001","uups18r2rr3c4z76","uv4lml4qprt30ciz","unr4x0ic2ulbbgrs","uupsn72f6pq7xiyp","uvbn3fgt9wtz1wr9","uvbn7ltxudmelcqy","uvbnduryyrq3g3hp","uvbqlfnp11zax32m","uvbnkxslw1bt7jr4","uvbmwuhqpytznxik","unl45pg3be5t47kl","uv4hzi3ho5lys80h","unl37mh2tn1gh49a","unl4gytvh4m5czsx","unl1feh0xazqj508","ull59se66jvgrk6u","ull4zw4i3gzrbs8h","ull4mp0bpemj7knd","ull49y0mz9it02yl","ull5g016w70dlmco","ulk068jfp8wb8nym","ull4f1omxdm6lnfq","ull4j87dkucstup1","ull4rxu784wpkxtw","udfnpxf7xhyiusyk","udhwq3hnrd2t50tt","udhwp7uu4gghfvdd","uefzyrdu7wl2viwy","ueg01nm0ydnk6duo","udfjuco16q1s0ds2","udhwrlcy41bem1bb"],"posts":{"uxquuo2ugvuh8ii0":["v8uzmq4kxc03dnaf"], "uxpkxrhzklew3ets":["uy1a7wsw8lr1ai3l"],"uxt2basxfxhfi5gs":["uxt2basxfzggm7fw"],"unl2nb3os3lemrfv":["unl2nlxfwadupeqn"],"uvzq1ng81mfpt29u":["uvzq1ng81oeqx48y"],"uvixayupg8rct001":["uvixayupgaqdx1z5"],"uups18r2rr3c4z76":["uups18r2rt2d916a"],"uv4lml4qprt30ciz":["uv4lml4qpts44ei3"],"unr4x0ic2ulbbgrs":["unr4x0ic2wkcfiqw"],"uupsn72f6pq7xiyp":["uupsn72f6rp91kxt"],"uvbn3fgt9wtz1wr9":["uvbn3fgt9yt05yqd"],"uvbn7ltxudmelcqy":["uvbn7ltxuflfpeq2"],"uvbnduryyrq3g3hp":["uvg6a9ih44iya8fm"],"uvbqlfnp11zax32m":["uvbqlfnp13yc151q"],"uvbnkxslw1bt7jr4":["uvbnkxslw3aublq8"],"uvbmwuhqpytznxik":["uvg5nqqyta5zhqlk"],"unl45pg3be5t47kl":["uvg5ij3dokwo39nk"],"uv4hzi3ho5lys80h":["uv4hzi3ho7kzw9zl"],"unl37mh2tn1gh49a":["unl37mh2tp0hl68e"],"unl4gytvh4m5czsx":["unl4gytvh6l6h1s1"],"unl1feh0xazqj508":["unrwld0n8bc8sg35"],"ull59se66jvgrk6u":["un114u7wefh5trap"],"ull4zw4i3gzrbs8h":["un114klg2axq7uad"],"ull4mp0bpemj7knd":["un113yxygysgxted"],"ull49y0mz9it02yl":["un10zk5p93q3jrxo"],"ull5g016w70dlmco":["un10vhehwulg3j42"], "ulk068jfp8wb8nym":["um1eogaov4h9m8g4"],"ull4f1omxdm6lnfq":["um1egwbbuv7wzhx2"],"ull4j87dkucstup1":["um1ee9ctu1nkef3x"],"ull4rxu784wpkxtw":["um1e6f5idrw0l3rh"],"udfnpxf7xhyiusyk":["uljzw156ignslcoe"],"udhwq3hnrd2t50tt":["uljzv8jnylgt6yew"],"udhwp7uu4gghfvdd":["uljztoo2rzxaqfho"],"uefzyrdu7wl2viwy":["uljzs4g1h7y96p9a"],"ueg01nm0ydnk6duo":["uljzqrjxw4i9qzbi"],"udfjuco16q1s0ds2":["uefhxv8q7x4imo9x"],"udhwrlcy41bem1bb":["udhwrlczo5r1y813"]},"revisions":{"v8uzmq4kxc03dnaf":{"content":{"content":"Business Model","format":"topic-title-wikitext","plaintext":"Business Model"},"last_updated":1570630351000,"isModerated":true,"moderateState":"lock"},"uy1a7wsw8lr1ai3l":{"content":{"content":"Where are the principles regarding maintenance, long term thinking, careful planning, collaboration and agreement, and ownership?","format":"topic-title-wikitext","plaintext":"Where are the principles regarding maintenance, long term thinking, careful planning, collaboration and agreement, and ownership?"}, "last_updated":1555515299000,"isModerated":true,"moderateState":"lock"},"uxt2basxfzggm7fw":{"content":{"content":"Architecture guidelines","format":"topic-title-wikitext","plaintext":"Architecture guidelines"},"last_updated":1555362171000,"isModerated":false},"unl2nlxfwadupeqn":{"content":{"content":"More MUST, less SHOULD","format":"topic-title-wikitext","plaintext":"More MUST, less SHOULD"},"last_updated":1554799534000,"isModerated":false},"uvzq1ng81oeqx48y":{"content":{"content":"Audiences Engineering Feedback","format":"topic-title-wikitext","plaintext":"Audiences Engineering Feedback"},"last_updated":1554144127000,"isModerated":false},"uvixayupgaqdx1z5":{"content":{"content":"API future-proof-ness","format":"topic-title-wikitext","plaintext":"API future-proof-ness"},"last_updated":1552912349000,"isModerated":false},"uups18r2rt2d916a":{"content":{"content":"Intended scope of application","format":"topic-title-wikitext","plaintext":"Intended scope of application"},"last_updated": 1552317563000,"isModerated":false},"uv4lml4qpts44ei3":{"content":{"content":"abstract domain model","format":"topic-title-wikitext","plaintext":"abstract domain model"},"last_updated":1552003815000,"isModerated":false},"unr4x0ic2wkcfiqw":{"content":{"content":"Should a layered architecture be part of the engineering principles?","format":"topic-title-wikitext","plaintext":"Should a layered architecture be part of the engineering principles?"},"last_updated":1551905185000,"isModerated":false},"uupsn72f6rp91kxt":{"content":{"content":"Definition of MUST/MAY/SHOULD","format":"topic-title-wikitext","plaintext":"Definition of MUST/MAY/SHOULD"},"last_updated":1551905140000,"isModerated":false},"uvbn3fgt9yt05yqd":{"content":{"content":"comprehensive documentation","format":"topic-title-wikitext","plaintext":"comprehensive documentation"},"last_updated":1551904282000,"isModerated":false},"uvbn7ltxuflfpeq2":{"content":{"content":"user interface tests","format":"topic-title-wikitext","plaintext" :"user interface tests"},"last_updated":1551904077000,"isModerated":false},"uvg6a9ih44iya8fm":{"content":{"content":"unit tests / integration tests","format":"topic-title-wikitext","plaintext":"unit tests / integration tests"},"last_updated":1551903981000,"isModerated":true,"moderateState":"lock"},"uvbqlfnp13yc151q":{"content":{"content":"To allow users to consume, create, and interact in a form suitable for their devices, with the connectivity they have, in a language they speak","format":"topic-title-wikitext","plaintext":"To allow users to consume, create, and interact in a form suitable for their devices, with the connectivity they have, in a language they speak"},"last_updated":1551903856000,"isModerated":false},"uvbnkxslw3aublq8":{"content":{"content":"technical debt","format":"topic-title-wikitext","plaintext":"technical debt"},"last_updated":1551903656000,"isModerated":false},"uvg5nqqyta5zhqlk":{"content":{"content":"internationalization + accessibility","format": "topic-title-wikitext","plaintext":"internationalization + accessibility"},"last_updated":1551903307000,"isModerated":true,"moderateState":"lock"},"uvg5ij3dokwo39nk":{"content":{"content":"How and where should the rationale behind individual principles be explained?","format":"topic-title-wikitext","plaintext":"How and where should the rationale behind individual principles be explained?"},"last_updated":1551903151000,"isModerated":true,"moderateState":"lock"},"uv4hzi3ho7kzw9zl":{"content":{"content":"Intermixing of orthogonal concerns","format":"topic-title-wikitext","plaintext":"Intermixing of orthogonal concerns"},"last_updated":1551903070000,"isModerated":false},"unl37mh2tp0hl68e":{"content":{"content":"What priority does reusability have?","format":"topic-title-wikitext","plaintext":"What priority does reusability have?"},"last_updated":1541548076000,"isModerated":false},"unl4gytvh6l6h1s1":{"content":{"content":"Good architecture needs stakeholder input","format": "topic-title-wikitext","plaintext":"Good architecture needs stakeholder input"},"last_updated":1541536323000,"isModerated":false},"unrwld0n8bc8sg35":{"content":{"content":"Change scope from \"architecture principles\" to \"engineering principles\"?","format":"topic-title-wikitext","plaintext":"Change scope from \"architecture principles\" to \"engineering principles\"?"},"last_updated":1541431957000,"isModerated":false},"un114u7wefh5trap":{"content":{"content":"Clarification on 'Engineering solution should be \"eventually consistent\": we should allow for experiments and make breaking changes where needed, but aim for convergence, not insular solutions.'","format":"topic-title-wikitext","plaintext":"Clarification on 'Engineering solution should be \"eventually consistent\": we should allow for experiments and make breaking changes where needed, but aim for convergence, not insular solutions.'"},"last_updated":1540146336000,"isModerated":true,"moderateState":"lock"},"un114klg2axq7uad":{ "content":{"content":"Specifying what types of contributors","format":"topic-title-wikitext","plaintext":"Specifying what types of contributors"},"last_updated":1540146328000,"isModerated":true,"moderateState":"lock"},"un113yxygysgxted":{"content":{"content":"Goal 7 bullet clarification","format":"topic-title-wikitext","plaintext":"Goal 7 bullet clarification"},"last_updated":1540146310000,"isModerated":true,"moderateState":"lock"},"un10zk5p93q3jrxo":{"content":{"content":"\"Be part of the ecosystem of the tools and libraries we use\"","format":"topic-title-wikitext","plaintext":"\"Be part of the ecosystem of the tools and libraries we use\""},"last_updated":1540146178000,"isModerated":true,"moderateState":"lock"},"un10vhehwulg3j42":{"content":{"content":"Software Versioning","format":"topic-title-wikitext","plaintext":"Software Versioning"},"last_updated":1540146056000,"isModerated":true,"moderateState":"lock"},"um1eogaov4h9m8g4":{"content":{"content": "Continuous Integration as an Architecture Principle","format":"topic-title-wikitext","plaintext":"Continuous Integration as an Architecture Principle"},"last_updated":1538764640000,"isModerated":true,"moderateState":"lock"},"um1egwbbuv7wzhx2":{"content":{"content":"\"Goal 5: Ensure programmer productivity by maintaining a code base that can be understood without needless difficulty and modified with confidence.\"","format":"topic-title-wikitext","plaintext":"\"Goal 5: Ensure programmer productivity by maintaining a code base that can be understood without needless difficulty and modified with confidence.\""},"last_updated":1538764414000,"isModerated":true,"moderateState":"lock"},"um1ee9ctu1nkef3x":{"content":{"content":"Goal 6 bullet clarification","format":"topic-title-wikitext","plaintext":"Goal 6 bullet clarification"},"last_updated":1538764335000,"isModerated":true,"moderateState":"lock"},"um1e6f5idrw0l3rh":{"content":{"content":"Clarifying wording on technical debt","format": "topic-title-wikitext","plaintext":"Clarifying wording on technical debt"},"last_updated":1538764100000,"isModerated":true,"moderateState":"lock"},"uljzw156ignslcoe":{"content":{"content":"Hackathon Notes 2018","format":"topic-title-wikitext","plaintext":"Hackathon Notes 2018"},"last_updated":1538089347000,"isModerated":true,"moderateState":"lock"},"uljzv8jnylgt6yew":{"content":{"content":"Which (spoken) language(s)?","format":"topic-title-wikitext","plaintext":"Which (spoken) language(s)?"},"last_updated":1538089324000,"isModerated":true,"moderateState":"lock"},"uljztoo2rzxaqfho":{"content":{"content":"Coverage","format":"topic-title-wikitext","plaintext":"Coverage"},"last_updated":1538089277000,"isModerated":true,"moderateState":"lock"},"uljzs4g1h7y96p9a":{"content":{"content":"Use boring technology","format":"topic-title-wikitext","plaintext":"Use boring technology"},"last_updated":1538089230000,"isModerated":true,"moderateState":"lock"},"uljzqrjxw4i9qzbi":{"content":{"content": "Going in circles?","format":"topic-title-wikitext","plaintext":"Going in circles?"},"last_updated":1538089190000,"isModerated":true,"moderateState":"lock"},"uefhxv8q7x4imo9x":{"content":{"content":"Goal 1, Principle 2 wording vagueness","format":"topic-title-wikitext","plaintext":"Goal 1, Principle 2 wording vagueness"},"last_updated":1528140846000,"isModerated":true,"moderateState":"lock"},"udhwrlczo5r1y813":{"content":{"content":"Does this ignore social aspects?","format":"topic-title-wikitext","plaintext":"Does this ignore social aspects?"},"last_updated":1527493453000,"isModerated":false}},"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&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&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:site_name" content="MediaWiki"> <meta property="og:title" content="Talk:Wikimedia Engineering Architecture Principles - MediaWiki"> <meta property="og:type" content="website"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//m.mediawiki.org/wiki/Talk:Wikimedia_Engineering_Architecture_Principles"> <link rel="alternate" type="application/x-wiki" title="Edit" href="/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles&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:Wikimedia_Engineering_Architecture_Principles"> <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&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_Wikimedia_Engineering_Architecture_Principles rootpage-Talk_Wikimedia_Engineering_Architecture_Principles 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's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?utm_source=donate&utm_medium=sidebar&utm_campaign=spontaneous&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-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&returnto=Talk%3AWikimedia+Engineering+Architecture+Principles" 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&returnto=Talk%3AWikimedia+Engineering+Architecture+Principles" 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&utm_medium=sidebar&utm_campaign=spontaneous&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&returnto=Talk%3AWikimedia+Engineering+Architecture+Principles" 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&returnto=Talk%3AWikimedia+Engineering+Architecture+Principles" 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:Wikimedia Engineering Architecture Principles</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/Wikimedia_Engineering_Architecture_Principles" 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:Wikimedia_Engineering_Architecture_Principles" 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:Wikimedia_Engineering_Architecture_Principles&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:Wikimedia_Engineering_Architecture_Principles&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:Wikimedia_Engineering_Architecture_Principles" 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:Wikimedia_Engineering_Architecture_Principles" 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:Wikimedia_Engineering_Architecture_Principles&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&url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FTalk%3AWikimedia_Engineering_Architecture_Principles"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FTalk%3AWikimedia_Engineering_Architecture_Principles"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Special:Book&bookcmd=book_creator&referer=Talk%3AWikimedia+Engineering+Architecture+Principles"><span>Create a book</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Talk%3AWikimedia_Engineering_Architecture_Principles&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:Wikimedia_Engineering_Architecture_Principles&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="udfjucjyn56u6ugy"> <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:Wikimedia_Engineering_Architecture_Principles&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'><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{"dsr":[0,159,0,0]}"><b data-parsoid="{"dsr":[0,159,3,3]}"><big data-parsoid="{"stx":"html","dsr":[3,156,5,6]}">This draft has entered the <a href="/wiki/RFC/Process" class="mw-redirect" title="RFC/Process" rel="mw:WikiLink" data-parsoid="{"stx":"piped","a":{"href":"./RFC/Process"},"sa":{"href":"RFC/Process"},"dsr":[35,62,14,2]}">RFC process</a>. Please continue any discussion on the associated phabricator ticket, <a rel="mw:WikiLink/Interwiki" href="https://phabricator.wikimedia.org/T220657" title="phab:T220657" data-parsoid="{"stx":"simple","a":{"href":"https://phabricator.wikimedia.org/T220657"},"sa":{"href":"phab:T220657"},"isIW":true,"dsr":[133,149,2,2]}">phab:T220657</a>.</big></b></p></section></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=Talk:Wikimedia_Engineering_Architecture_Principles&action=new-topic">Start a new topic</a> </div> <div class="flow-js"> <form action="//www.mediawiki.org/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles&action=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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">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="udfjucjyn56u6ugy" /> <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 flow-topic-moderatestate-lock flow-topic-moderated flow-element-collapsible flow-element-collapsed" id="flow-topic-uxquuo2ugvuh8ii0" data-flow-id="uxquuo2ugvuh8ii0" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1570630351000" > <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="Business Model" data-flow-load-handler="topicTitle" data-flow-interactive-handler="collapserCollapsibleToggle" > <span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-check"></span> Business Model</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" >5 comments</a> • <a href="//www.mediawiki.org/w/index.php?title=Topic:Uxquuo2ugvuh8ii0&action=history" class="flow-timestamp-anchor"> <span datetime="1570630351" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">14:12, 9 October 2019</span> <span id="" class="flow-timestamp-ago">5 years ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">5</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="{"dsr":[0,369,0,0]}">Releasing MediaWiki as a software product for use by third parties has been part of WMF's "business plan" for as long as it has existed. Re-assessing the value of this for our mission would certainly be good, but as long as there is no decision to <i data-parsoid="{"dsr":[248,256,2,2]}">drop</i> the goal of releasing MediaWiki for third parties, it <i data-parsoid="{"dsr":[311,317,2,2]}">is</i> a goal, and it should be present in the principles.</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=Topic:Uxquuo2ugvuh8ii0&action=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:Uxquuo2ugvuh8ii0"><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-uxquuo2ugzsjgmg8" class="flow-post" data-flow-id="uxquuo2ugzsjgmg8" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DBarratt_(WMF)" class="mw-userlink"> <bdi>DBarratt (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DBarratt_(WMF)" class="" title="User talk:DBarratt (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DBarratt_(WMF)" title="Contributions/DBarratt (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="{"dsr":[0,574,0,0]}">It makes me sad that the architecture principles codify a <a rel="mw:WikiLink/Interwiki" href="https://en.wikipedia.org/wiki/Business%20model" title="wikipedia:Business model" data-parsoid="{"stx":"piped","a":{"href":"https://en.wikipedia.org/wiki/Business%20model"},"sa":{"href":"Wikipedia:Business model"},"isIW":true,"dsr":[58,101,27,2]}">business model</a> that is not backed up by any sort of research or strategy. I think the most pressing question that needs to be answered is: What problem(s) does MediaWiki solve and for <i data-parsoid="{"dsr":[271,279,2,2]}">whom</i> does it solve them for? A lot of the principles attempt to answer this question, which is not a question that engineers could possibly have the answer to, and business people shouldn't attempt to answer it without a significant amount of <a rel="mw:WikiLink/Interwiki" href="https://en.wikipedia.org/wiki/Customer%20development" title="wikipedia:Customer development" data-parsoid="{"stx":"piped","a":{"href":"https://en.wikipedia.org/wiki/Customer%20development"},"sa":{"href":"Wikipedia:Customer development"},"isIW":true,"dsr":[518,573,33,2]}">customer development</a>.</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=Topic:Uxquuo2ugvuh8ii0&action=history" class="flow-timestamp-anchor"> <span datetime="1555110884" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">23:14, 12 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uxquuo2ugvuh8ii0&topic_showPostId=uxquuo2ugzsjgmg8#flow-post-uxquuo2ugzsjgmg8"><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-uxtkmxjhxya9sjsa" class="flow-post" data-flow-id="uxtkmxjhxya9sjsa" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Greg_(WMF)" class="mw-userlink"> <bdi>Greg (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Greg_(WMF)" class="" title="User talk:Greg (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Greg_(WMF)" title="Contributions/Greg (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="{"dsr":[0,118,0,0]}">I thought I read the whole thing but could you point out where it codifies a business model for me? I'm dense I guess.</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=Topic:Uxquuo2ugvuh8ii0&action=history" class="flow-timestamp-anchor"> <span datetime="1555216236" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">04:30, 14 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uxquuo2ugvuh8ii0&topic_showPostId=uxtkmxjhxya9sjsa#flow-post-uxtkmxjhxya9sjsa"><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-uxv2xatdybbmpd6u" class="flow-post" data-flow-id="uxv2xatdybbmpd6u" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:DBarratt_(WMF)" class="mw-userlink"> <bdi>DBarratt (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:DBarratt_(WMF)" class="" title="User talk:DBarratt (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/DBarratt_(WMF)" title="Contributions/DBarratt (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="{"dsr":[0,338,0,0]}">Mostly the points under: "To provide a web application that can be freely used to collaboratively collect and share knowledge," which codifies who our "customer" is. It attempts to answer the question I asked above without actually having performed the <a rel="mw:WikiLink/Interwiki" href="https://en.wikipedia.org/wiki/Customer%20development" title="wikipedia:Customer development" data-parsoid="{"stx":"piped","a":{"href":"https://en.wikipedia.org/wiki/Customer%20development"},"sa":{"href":"Wikipedia:Customer development"},"isIW":true,"dsr":[253,308,33,2]}">customer development</a> needed in order to answer it.</p> <p data-parsoid="{"dsr":[340,984,0,0]}">Obviously, providing MediaWiki to "be freely used to collectively collect and share knowledge" is a noble purpose that is consistent with our mission, and is a valuable business strategy; however, I think it's important to know <i data-parsoid="{"dsr":[568,576,2,2]}">what</i> problem(s) MediaWiki solves and for <i data-parsoid="{"dsr":[613,621,2,2]}">whom</i> it solves them for. Without knowing that, how could we know if MediaWiki is <i data-parsoid="{"dsr":[698,710,2,2]}">actually</i> solving our "customers" problem(s)? If it does, is it the <i data-parsoid="{"dsr":[769,781,2,2]}">complete</i> solution? What other products and services do they need to make it work? Are we going to provide these products and services (for a fee?) or are we going to partner with others in order to provide them?</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=Topic:Uxquuo2ugvuh8ii0&action=history" class="flow-timestamp-anchor"> <span datetime="1555274725" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">20:45, 14 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uxquuo2ugvuh8ii0&topic_showPostId=uxv2xatdybbmpd6u#flow-post-uxv2xatdybbmpd6u"><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-uyh72uhhsytptwkh" class="flow-post" data-flow-id="uyh72uhhsytptwkh" > <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="{"dsr":[0,369,0,0]}">Releasing MediaWiki as a software product for use by third parties has been part of WMF's "business plan" for as long as it has existed. Re-assessing the value of this for our mission would certainly be good, but as long as there is no decision to <i data-parsoid="{"dsr":[248,256,2,2]}">drop</i> the goal of releasing MediaWiki for third parties, it <i data-parsoid="{"dsr":[311,317,2,2]}">is</i> a goal, and it should be present in the principles.</p> <p data-parsoid="{"dsr":[371,596,0,0]}">When the product goals and requirements change, the architecture principles change. The principles <i data-parsoid="{"dsr":[470,479,2,2]}">apply</i> the product goals to the technical realm. Such such, they indeed codify product goals. But they do not dictate them.</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=Topic:Uxquuo2ugvuh8ii0&action=history" class="flow-timestamp-anchor"> <span datetime="1556132488" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">19:01, 24 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uxquuo2ugvuh8ii0&topic_showPostId=uyh72uhhsytptwkh#flow-post-uyh72uhhsytptwkh"><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-uyh76uu38j599dc0" class="flow-post" data-flow-id="uyh76uu38j599dc0" > <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="{"dsr":[0,62,0,0]}">Anyway, let'S pelase continue this on <a rel="mw:WikiLink/Interwiki" href="https://phabricator.wikimedia.org/T220657#5135741" title="phab:T220657" data-parsoid="{"stx":"simple","a":{"href":"https://phabricator.wikimedia.org/T220657#5135741"},"sa":{"href":"phab:T220657#5135741"},"isIW":true,"dsr":[38,62,2,2]}">phab:T220657#5135741</a></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=Topic:Uxquuo2ugvuh8ii0&action=history" class="flow-timestamp-anchor"> <span datetime="1556132608" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">19:03, 24 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uxquuo2ugvuh8ii0&topic_showPostId=uyh76uu38j599dc0#flow-post-uyh76uu38j599dc0"><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-uxquuo2ugvuh8ii0" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="uxquuo2ugvuh8ii0" /> <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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-uxquuo2ugvuh8ii0-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to "Business Model"" 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 flow-topic-moderatestate-lock flow-topic-moderated flow-element-collapsible flow-element-collapsed" id="flow-topic-uxpkxrhzklew3ets" data-flow-id="uxpkxrhzklew3ets" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1555515299000" > <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="Where are the principles regarding maintenance, long term thinking, careful planning, collaboration and agreement, and ownership?" data-flow-load-handler="topicTitle" data-flow-interactive-handler="collapserCollapsibleToggle" > <span class="mw-ui-icon mw-ui-icon-before mw-ui-icon-check"></span> Where are the principles regarding maintenance, long term thinking, careful planning, collaboration and agreement, and ownership?</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" >2 comments</a> • <a href="//www.mediawiki.org/w/index.php?title=Topic:Uxpkxrhzklew3ets&action=history" class="flow-timestamp-anchor"> <span datetime="1555515299" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:34, 17 April 2019</span> <span id="" class="flow-timestamp-ago">5 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 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 JCrespo (WMF) </div> <div class="flow-topic-summary-content mw-parser-output"> <section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{"dsr":[0,58,0,0]}">Out of scope, but will try to discuss this in other scope.</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=Topic:Uxpkxrhzklew3ets&action=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:Uxpkxrhzklew3ets"><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-uxpkxrhzkpcybis0" class="flow-post" data-flow-id="uxpkxrhzkpcybis0" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:JCrespo_(WMF)" class="mw-userlink"> <bdi>JCrespo (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:JCrespo_(WMF)" class="" title="User talk:JCrespo (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/JCrespo_(WMF)" title="Contributions/JCrespo (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="{"dsr":[0,266,0,0]}"><i data-parsoid="{"dsr":[0,32,2,2]}">"Extensible and Sustainable"</i> declares the rights, but not the obligations. <a href="/wiki/Technical_Collaboration_Guidance/Principles" title="Technical Collaboration Guidance/Principles" rel="mw:WikiLink" data-parsoid="{"stx":"simple","a":{"href":"./Technical_Collaboration_Guidance/Principles"},"sa":{"href":"Technical Collaboration Guidance/Principles"},"dsr":[79,126,2,2]}">Technical Collaboration Guidance/Principles</a> doesn't say anything about that either. Forgive me if it is out of scope, but think is an important theme that is not (properly) mentioned.</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=Topic:Uxpkxrhzklew3ets&action=history" class="flow-timestamp-anchor"> <span datetime="1555061417" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">09:30, 12 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uxpkxrhzklew3ets&topic_showPostId=uxpkxrhzkpcybis0#flow-post-uxpkxrhzkpcybis0"><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-uxplft2n4yqm19di" class="flow-post" data-flow-id="uxplft2n4yqm19di" > <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="{"dsr":[0,254,0,0]}">These are not principles of <i data-parsoid="{"dsr":[28,44,2,2]}">architecture</i>, so they are out of scope. The closest we have here is the FAST/CHANGE point. I agree we should have guidelines for planning processes and strategic decision making, but that's not what this document is about.</p> <p data-parsoid="{"dsr":[256,403,0,0]}">Let's please keep the discussion on phabricator, though: <a rel="mw:WikiLink/Interwiki" href="https://phabricator.wikimedia.org/T220657" title="phab:T220657" data-parsoid="{"stx":"simple","a":{"href":"https://phabricator.wikimedia.org/T220657"},"sa":{"href":"phab:T220657"},"isIW":true,"dsr":[313,329,2,2]}">phab:T220657</a>. If you want to discuss this further, please copy our conversation there.</p></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=Topic:Uxpkxrhzklew3ets&action=compare-post-revisions&topic_newRevision=uxplgb491u8un095" class="flow-timestamp-anchor"> <span datetime="1555061972" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">09:39, 12 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uxpkxrhzklew3ets&topic_showPostId=uxplft2n4yqm19di#flow-post-uxplft2n4yqm19di"><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-uxpkxrhzklew3ets" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="uxpkxrhzklew3ets" /> <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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-uxpkxrhzklew3ets-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to "Where are the principles regarding maintenance, long term thinking, careful planning, collaboration and agreement, and ownership?"" 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-uxt2basxfxhfi5gs" data-flow-id="uxt2basxfxhfi5gs" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1555362171000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="Architecture guidelines" data-flow-load-handler="topicTitle" > Architecture guidelines</h2> <div class="flow-topic-meta"> 2 comments • <a href="//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs&action=history" class="flow-timestamp-anchor"> <span datetime="1555362171" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">21:02, 15 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uxt2basxfxhfi5gs&action=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:Uxt2basxfxhfi5gs"><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=Topic:Uxt2basxfxhfi5gs&action=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-uxt2basxg1fhq9f0" class="flow-post" data-flow-id="uxt2basxg1fhq9f0" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Tgr_(WMF)" class="mw-userlink"> <bdi>Tgr (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Tgr_(WMF)" class="" title="User talk:Tgr (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Tgr_(WMF)" title="Contributions/Tgr (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="{"dsr":[0,121,0,0]}">What's the relationship with <a href="/wiki/Architecture_guidelines" title="Architecture guidelines" rel="mw:WikiLink" data-parsoid="{"stx":"simple","a":{"href":"./Architecture_guidelines"},"sa":{"href":"Architecture guidelines"},"dsr":[29,56,2,2]}">Architecture guidelines</a>? Should that be archived now? Or interlinked with this document?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs&action=reply&topic_postId=uxt2basxg1fhq9f0#flow-post-uxt2basxg1fhq9f0" 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=Topic:Uxt2basxfxhfi5gs&action=history" class="flow-timestamp-anchor"> <span datetime="1555196495" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">23:01, 13 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uxt2basxfxhfi5gs&topic_showPostId=uxt2basxg1fhq9f0#flow-post-uxt2basxg1fhq9f0"><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-uxxc38w1iiiv5arc" class="flow-post" data-flow-id="uxxc38w1iiiv5arc" > <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="{"dsr":[0,471,0,0]}">You are right that the <a href="/wiki/Architecture_guidelines" title="Architecture guidelines" rel="mw:WikiLink" data-parsoid="{"stx":"simple","a":{"href":"./Architecture_guidelines"},"sa":{"href":"Architecture guidelines"},"dsr":[23,50,2,2]}">Architecture guidelines</a> should be mentioned and the relationship clarified. The <i data-parsoid="{"dsr":[107,121,2,2]}">guidelines</i> are more concrete, and mostly about how to make changes to MediaWiki core. They are less about what we are trying to achieve. So I think they are much closer to what I have been writing on <a href="/wiki/User:DKinzler_(WMF)/Software_Design_Practices" title="User:DKinzler (WMF)/Software Design Practices" rel="mw:WikiLink" data-parsoid="{"stx":"simple","a":{"href":"./User:DKinzler_(WMF)/Software_Design_Practices"},"sa":{"href":"User:DKinzler (WMF)/Software Design Practices"},"dsr":[311,360,2,2]}">User:DKinzler (WMF)/Software Design Practices</a> than to the <i data-parsoid="{"dsr":[373,387,2,2]}">principles</i>. I'll look into consolidating these (as well as <a href="/wiki/Manual:Coding_conventions/PHP" title="Manual:Coding conventions/PHP" rel="mw:WikiLink" data-parsoid="{"stx":"simple","a":{"href":"./Manual:Coding_conventions/PHP"},"sa":{"href":"Manual:Coding_conventions/PHP"},"dsr":[436,469,2,2]}">Manual:Coding_conventions/PHP</a>).</p> <p data-parsoid="{"dsr":[473,595,0,0]}">I have added a link from the <i data-parsoid="{"dsr":[502,516,2,2]}">guidelines</i> here. I'll link back to them from the non-normative section of the principles.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uxt2basxfxhfi5gs&action=reply&topic_postId=uxt2basxfxhfi5gs#flow-post-uxt2basxfxhfi5gs" 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=Topic:Uxt2basxfxhfi5gs&action=history" class="flow-timestamp-anchor"> <span datetime="1555362171" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">21:02, 15 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uxt2basxfxhfi5gs&topic_showPostId=uxxc38w1iiiv5arc#flow-post-uxxc38w1iiiv5arc"><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=Topic:Uxt2basxfxhfi5gs&action=reply&topic_postId=uxt2basxfxhfi5gs#flow-post-uxt2basxfxhfi5gs-form-content" id="flow-reply-uxt2basxfxhfi5gs" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="uxt2basxfxhfi5gs" /> <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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-uxt2basxfxhfi5gs-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to "Architecture guidelines"" 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=Topic:Uxt2basxfxhfi5gs&action=reply&topic_postId=uxt2basxfxhfi5gs#flow-post-uxt2basxfxhfi5gs-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to "Architecture guidelines"</a> </div> <div class="flow-topic flow-load-interactive" id="flow-topic-unl2nb3os3lemrfv" data-flow-id="unl2nb3os3lemrfv" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1554799534000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="More MUST, less SHOULD" data-flow-load-handler="topicTitle" > More MUST, less SHOULD</h2> <div class="flow-topic-meta"> 16 comments • <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1554799534" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">08:45, 9 April 2019</span> <span id="" class="flow-timestamp-ago">5 years ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">16</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=Topic:Unl2nb3os3lemrfv&action=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:Unl2nb3os3lemrfv"><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=Topic:Unl2nb3os3lemrfv&action=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-unl2nb3os7jguve3" class="flow-post" data-flow-id="unl2nb3os7jguve3" > <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"><p data-parsoid="{"dsr":[0,160,0,0]}">Perhaps more goals should be made into strong requirements (MUST), e.g. the principle of "data austerity", to collect and retain only the data we actually need.</p> <p data-parsoid="{"dsr":[162,544,0,0]}">While we should be careful not to create hard requirements that we cannot always meet, which would lead to such requirements to not be taken seriously, we shouldn't be "doubly soft": We can for instance say that horizontal scalability MUST be a design goal for services with high load - it being a goal does not mean the software cannot be deployed if this goal is not be fully met.</p></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=unl2nb3os7jguve3#flow-post-unl2nb3os7jguve3" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1540923682" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">18:21, 30 October 2018</span> <span id="" class="flow-timestamp-ago">6 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=unl2nb3os7jguve3#flow-post-unl2nb3os7jguve3"><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-uuprmt3c35gl5sqq" class="flow-post" data-flow-id="uuprmt3c35gl5sqq" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:BDavis_(WMF)" class="mw-userlink"> <bdi>BDavis (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:BDavis_(WMF)" class="" title="User talk:BDavis (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/BDavis_(WMF)" title="Contributions/BDavis (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><p data-parsoid="{"dsr":[0,28,0,0]}">Currently the document uses:</p> <ul data-parsoid="{"dsr":[29,80,0,0]}"><li data-parsoid="{"dsr":[29,48,1,0]}">SHOULD - 49 times</li> <li data-parsoid="{"dsr":[49,65,1,0]}">MUST - 8 times</li> <li data-parsoid="{"dsr":[66,80,1,0]}">MAY - 1 time</li></ul> <p data-parsoid="{"dsr":[82,225,0,0]}">I just read the whole thing for the first time, and honestly it felt like a passive aggressive attack from someone giving drive-by code review.</p></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uuprmt3c35gl5sqq#flow-post-uuprmt3c35gl5sqq" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1550879765" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">23:56, 22 February 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uuprmt3c35gl5sqq#flow-post-uuprmt3c35gl5sqq"><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-uups3ukubex3lw9d" class="flow-post" data-flow-id="uups3ukubex3lw9d" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:BDavis_(WMF)" class="mw-userlink"> <bdi>BDavis (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:BDavis_(WMF)" class="" title="User talk:BDavis (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/BDavis_(WMF)" title="Contributions/BDavis (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><p data-parsoid="{"dsr":[0,94,0,0]}">Even the document itself only has a SHOULD endorsement from the Wikimedia Technical Committee.</p></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uups3ukubex3lw9d#flow-post-uups3ukubex3lw9d" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1550880275" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">00:04, 23 February 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uups3ukubex3lw9d#flow-post-uups3ukubex3lw9d"><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-uvdgfw9lu6zimm7c" class="flow-post" data-flow-id="uvdgfw9lu6zimm7c" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:MHolloway_(WMF)" class="mw-userlink"> <bdi>MHolloway (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:MHolloway_(WMF)" class="" title="User talk:MHolloway (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/MHolloway_(WMF)" title="Contributions/MHolloway (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="{"dsr":[0,302,0,0]}">Agreed. This struck me right away when reading the document. As a reflection of current reality, it seems pretty accurate, but if it's meant to be prescriptive (as I assume is the case), I'd like to see stronger stands, or at least some written justification of why SHOULDs are SHOULDs and not MUSTs.</p> <p data-parsoid="{"dsr":[304,378,0,0]}">Personally, I consider at least the following current SHOULDs to be MUSTs:</p> <ul data-parsoid="{"dsr":[380,1117,0,0]}"> <li data-parsoid="{"dsr":[380,509,1,0]}">All points under the heading "To ensure the data integrity of the content on WMF systems, and protect the privacy of our users"</li> <li data-parsoid="{"dsr":[510,733,1,0]}">software that interacts with users MUST be designed to make key functionality available on devices with a variety of capability and restrictions <i data-parsoid="{"dsr":[657,688,2,2]}">[I'd also add form factors]</i>, as well as potentially limited connectivity</li> <li data-parsoid="{"dsr":[734,807,1,0]}">software that interacts with users MUST follow accessibility guidelines</li> <li data-parsoid="{"dsr":[808,968,1,0]}">data formats and APIs that provide access to user generated content MUST be designed to ensure verifiability through the integration of provenance information</li> <li data-parsoid="{"dsr":[969,1117,1,0]}">data formats and APIs that provide access to user generated content MUST be designed to provide easy access to all necessary licensing information</li> </ul></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uvdgfw9lu6zimm7c#flow-post-uvdgfw9lu6zimm7c" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1551798566" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:09, 5 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uvdgfw9lu6zimm7c#flow-post-uvdgfw9lu6zimm7c"><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-uvdrhxduxe9bhuie" class="flow-post" data-flow-id="uvdrhxduxe9bhuie" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Kaldari" class="mw-userlink"> <bdi>Kaldari</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Kaldari" class="" title="User talk:Kaldari">talk</a></span><span><a href="/wiki/Special:Contributions/Kaldari" title="Contributions/Kaldari">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><section data-mw-section-id="0" data-parsoid="{}"><p data-parsoid="{"dsr":[0,339,0,0]}">Would be nice to change "comprehensive documentation SHOULD be maintained along with the code" to MUST. I don't think that would be controversial. I don't agree with MHolloway about making "follow accessibility guidelines" a MUST. There are rare cases where other considerations (including accessibility) override accessibility guidelines.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uvdrhxduxe9bhuie#flow-post-uvdrhxduxe9bhuie" 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=Topic:Unl2nb3os3lemrfv&action=compare-post-revisions&topic_newRevision=uvdrolyvnkllgmix" class="flow-timestamp-anchor"> <span datetime="1551810678" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">18:31, 5 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uvdrhxduxe9bhuie#flow-post-uvdrhxduxe9bhuie"><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-uvfq4l6abp548pzl" class="flow-post" data-flow-id="uvfq4l6abp548pzl" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:CPettet_(WMF)" class="mw-userlink"> <bdi>CPettet (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:CPettet_(WMF)" class="" title="User talk:CPettet (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/CPettet_(WMF)" title="Contributions/CPettet (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="{"dsr":[0,58,0,0]}">What does 'MUST' mean in this case? Is there teeth to it?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uvfq4l6abp548pzl#flow-post-uvfq4l6abp548pzl" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1551886573" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:36, 6 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uvfq4l6abp548pzl#flow-post-uvfq4l6abp548pzl"><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-uvg4yijq8ippbo2o" class="flow-post" data-flow-id="uvg4yijq8ippbo2o" > <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="{"dsr":[0,60,0,0]}">> What does 'MUST' mean in this case? Is there teeth to it?</p> <p data-parsoid="{"dsr":[62,229,0,0]}">The "teeth" depend on the people enforcing this. At the very minimum, RFCs that violate a MUST will not be approved. Ideally, no code that violates a MUST is deployed.</p> <p data-parsoid="{"dsr":[231,559,0,0]}">If we are serious about the MUST, any code that is currently live but violates a MUST would have to be pulled. If we made everything suggested in this thread a MUST and pulled everything that doesn't comply, we'd have to shut down the site tomorrow. That's actually the reason for having a lot of SHOULD and not that many MUSTs.</p> <p data-parsoid="{"dsr":[561,788,0,0]}">Maybe it makes more sense to go with a softer interpretation on MUST, that essentially only applies it to new code and major changes and rewrites. If we interpret it that way, we can have a lot more MUSTs. Does that sound good?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uvg4yijq8ippbo2o#flow-post-uvg4yijq8ippbo2o" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1551902552" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">20:02, 6 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uvg4yijq8ippbo2o#flow-post-uvg4yijq8ippbo2o"><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-uvg8j4key4pmzxyl" class="flow-post" data-flow-id="uvg8j4key4pmzxyl" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:BDavis_(WMF)" class="mw-userlink"> <bdi>BDavis (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:BDavis_(WMF)" class="" title="User talk:BDavis (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/BDavis_(WMF)" title="Contributions/BDavis (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="{"dsr":[0,280,0,0]}">I think it would be better to write the standard that the working group wants even if there are parts that are aspirational. A list of "grandfathered" applications with known violations could be offered as an appendix if needed and be footnoted into the standard when appropriate.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uvg8j4key4pmzxyl#flow-post-uvg8j4key4pmzxyl" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1551906401" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">21:06, 6 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uvg8j4key4pmzxyl#flow-post-uvg8j4key4pmzxyl"><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-uvirakrz9iklz1ng" class="flow-post" data-flow-id="uvirakrz9iklz1ng" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Tgr_(WMF)" class="mw-userlink"> <bdi>Tgr (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Tgr_(WMF)" class="" title="User talk:Tgr (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Tgr_(WMF)" title="Contributions/Tgr (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="{"dsr":[0,557,0,0]}">Uppercase MUST invokes RfC 2119 (<i data-parsoid="{"dsr":[33,163,2,2]}">MUST: This word, or the terms "REQUIRED" or "SHALL", mean that the definition is an absolute requirement of the specification.</i>) to anyone familiar with it. I'd rather use it less often than water it up. We can make allowances for legacy code that's already in production, but for new code or changes to existing code MUST should really mean that anything violating that will not be merged or deployed ever, even if there's a deadline or a grant or a mob of editors with pitchforks at the WMF office entrance or whatever.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uvirakrz9iklz1ng#flow-post-uvirakrz9iklz1ng" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1552004187" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">00:16, 8 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uvirakrz9iklz1ng#flow-post-uvirakrz9iklz1ng"><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-uvirtnn3cdveb1uk" class="flow-post" data-flow-id="uvirtnn3cdveb1uk" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Tgr_(WMF)" class="mw-userlink"> <bdi>Tgr (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Tgr_(WMF)" class="" title="User talk:Tgr (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Tgr_(WMF)" title="Contributions/Tgr (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="{"dsr":[0,397,0,0]}">Also, maybe it would be a worthwhile exercise to list what existing practice (ie. not legacy code but development practices we follow today) violate any of the MUSTs? E.g. "data we offer for re-use MUST use clearly specified data schemas" is probably not true for most things (wikitext? Action API response formats? file metadata? ...I guess it comes down to what exactly is meant by data schema).</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uvirtnn3cdveb1uk#flow-post-uvirtnn3cdveb1uk" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1552004758" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">00:25, 8 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uvirtnn3cdveb1uk#flow-post-uvirtnn3cdveb1uk"><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-uvquaw74pyesmb8l" class="flow-post" data-flow-id="uvquaw74pyesmb8l" > <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="{"dsr":[0,107,0,0]}">I'm happy with more MUST if we are really serious about enforcing it, and nobody comes crying once we do...</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uvquaw74pyesmb8l#flow-post-uvquaw74pyesmb8l" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1552317715" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:21, 11 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uvquaw74pyesmb8l#flow-post-uvquaw74pyesmb8l"><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-uwsny60n44i29iut" class="flow-post" data-flow-id="uwsny60n44i29iut" > <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="{"dsr":[0,89,0,0]}">I changed a number of MUSTs to SHOULDs now. The document now has 43 SHOULDs and 21 MUSTs.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uwsny60n44i29iut#flow-post-uwsny60n44i29iut" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1553784730" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">14:52, 28 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uwsny60n44i29iut#flow-post-uwsny60n44i29iut"><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-uxhvnz7rwr8d9g69" class="flow-post" data-flow-id="uxhvnz7rwr8d9g69" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Tgr_(WMF)" class="mw-userlink"> <bdi>Tgr (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Tgr_(WMF)" class="" title="User talk:Tgr (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Tgr_(WMF)" title="Contributions/Tgr (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="{"dsr":[0,420,0,0]}">The document now says "When existing code is discovered to violate a MUST or SHOULD principle, steps for making the code compliant with the architecture principles need to be planned." which is ambitious, but maybe that's a good thing<span typeof="mw:DisplaySpace mw:Placeholder" data-parsoid="{"src":" ","isDisplayHack":true,"dsr":[234,235,null,0]}"> </span>:) Any plans on how this should work in practice? If I find such code, where do I report it, who is responsible for planning the steps, who is responsible for actually making it happen?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uxhvnz7rwr8d9g69#flow-post-uxhvnz7rwr8d9g69" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1554762689" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">22:31, 8 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uxhvnz7rwr8d9g69#flow-post-uxhvnz7rwr8d9g69"><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"> <!-- eachPost nested replies --> <div id="flow-post-uxiti3gvs7caa28e" class="flow-post" data-flow-id="uxiti3gvs7caa28e" > <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="{"dsr":[0,179,0,0]}">The concrete steps necessary will be very different from case to case. Some such changes only take a 20 minute patch, some may need major refactoring or changes in infrastructure.</p> <p data-parsoid="{"dsr":[181,268,0,0]}">The only general answer I can give is "track it on phabricator, so it becomes visible".</p> <p data-parsoid="{"dsr":[270,440,0,0]}">As to who is responsible - I'd say either the person or group who wrote the offending code (mostly for newer code), or the group who owns owns it (mostly for older code).</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uxhvnz7rwr8d9g69#flow-post-uxhvnz7rwr8d9g69" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1554799144" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">08:39, 9 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uxiti3gvs7caa28e#flow-post-uxiti3gvs7caa28e"><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> </div> </div> <!-- eachPost topic --> <div id="flow-post-uxhvrr57zzl8i5gc" class="flow-post" data-flow-id="uxhvrr57zzl8i5gc" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Tgr_(WMF)" class="mw-userlink"> <bdi>Tgr (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Tgr_(WMF)" class="" title="User talk:Tgr (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Tgr_(WMF)" title="Contributions/Tgr (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="{"dsr":[0,283,0,0]}">Also comprehensive documentation is now a MUST. While most other things can be enforced in the planning or code review phase, documentation normally only happens when the code is live (at which point code authors often lose interest). How do we ensure that it does not get forgotten?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=uxhvrr57zzl8i5gc#flow-post-uxhvrr57zzl8i5gc" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1554762802" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">22:33, 8 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uxhvrr57zzl8i5gc#flow-post-uxhvrr57zzl8i5gc"><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-uxitv4ltbeeipe0x" class="flow-post" data-flow-id="uxitv4ltbeeipe0x" > <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="{"dsr":[0,336,0,0]}">Documentation of architecture and information flow should ideally be written before the code (as specifications, plans, RFCs, etc). They should be required to be merged into the repo along with the code, just like test, and just like method-level and class-level documentation. Documentation (and testing) should not be an afterthought.</p> <p data-parsoid="{"dsr":[338,724,0,0]}">Documentation for end-users and wiki-owners will generally not live in the same repo as the code, since it's less "bound" to the code, but it should, ideally, also be written *before* the code, as user stories, UI designs, etc. Turning the plan into proper documentation may happen after the fact, but then it's the responsibility of the team who deployed the feature to make it happen.</p> <p data-parsoid="{"dsr":[726,1194,0,0]}">In my mind though, the architecture principles don't really apply to documentation for end-users and wiki-owners. Combined with the lead sentence of the section, the principles reads: <i data-parsoid="{"dsr":[910,1068,2,2]}">"To maintain a code base that can be modified with confidence and readily understood, comprehensive documentation MUST be maintained along with the code."</i> I think it's pretty clear that this refers to documentation of the <i data-parsoid="{"dsr":[1136,1144,2,2]}">code</i>. Do you think this should be made more explicite?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=unl2nb3os3lemrfv#flow-post-unl2nb3os3lemrfv" 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=Topic:Unl2nb3os3lemrfv&action=history" class="flow-timestamp-anchor"> <span datetime="1554799534" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">08:45, 9 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unl2nb3os3lemrfv&topic_showPostId=uxitv4ltbeeipe0x#flow-post-uxitv4ltbeeipe0x"><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=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=unl2nb3os3lemrfv#flow-post-unl2nb3os3lemrfv-form-content" id="flow-reply-unl2nb3os3lemrfv" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="unl2nb3os3lemrfv" /> <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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-unl2nb3os3lemrfv-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to "More MUST, less SHOULD"" 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=Topic:Unl2nb3os3lemrfv&action=reply&topic_postId=unl2nb3os3lemrfv#flow-post-unl2nb3os3lemrfv-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to "More MUST, less SHOULD"</a> </div> <div class="flow-topic flow-load-interactive" id="flow-topic-uvzq1ng81mfpt29u" data-flow-id="uvzq1ng81mfpt29u" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1554144127000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="Audiences Engineering Feedback" data-flow-load-handler="topicTitle" > Audiences Engineering Feedback</h2> <div class="flow-topic-meta"> 11 comments • <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u&action=history" class="flow-timestamp-anchor"> <span datetime="1554144127" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">18:42, 1 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvzq1ng81mfpt29u&action=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:Uvzq1ng81mfpt29u"><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=Topic:Uvzq1ng81mfpt29u&action=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-uvzq1ng81qds1682" class="flow-post" data-flow-id="uvzq1ng81qds1682" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:ABaso_(WMF)" class="mw-userlink"> <bdi>ABaso (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:ABaso_(WMF)" class="" title="User talk:ABaso (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/ABaso_(WMF)" title="Contributions/ABaso (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="{"dsr":[0,368,0,0]}"><i data-parsoid="{"dsr":[0,368,2,2]}">We’ve consulted with the engineering units in the Audiences department at the Wikimedia Foundation and following are our recommendations. We generally agree with the sentiment of the document, although want to express our strong support for a heightened emphasis on security and user privacy, as well as our consensus view on re-use and contemporary deployability.</i></p> <p data-parsoid="{"dsr":[370,447,0,0]}"><i data-parsoid="{"dsr":[370,447,2,2]}">-Audiences Engineering leads: Runa Bhattacharjee, Ryan Kaldari, Adam Baso</i></p> <p data-parsoid="{"dsr":[449,613,0,0]}">Before we dig into other items, first, the phrase “MediaWiki Platform Architecture Principles” should be changed to “Wikimedia Engineering Architecture Principles”.</p> <p data-parsoid="{"dsr":[615,642,0,0]}"><u data-parsoid="{"stx":"html","dsr":[615,642,3,4]}">Major Considerations</u></p> <p data-parsoid="{"dsr":[644,1020,0,0]}">The framing of the document should make clear that the goal is not to stop all software development, but instead these principles describe the sort of architecture we’d like in the future. We suggest that the “Application” section be amended to note that investment in improving engineering sustainability should be in a healthy balance with investment in feature development.</p> <p data-parsoid="{"dsr":[1022,1075,0,0]}">The following three items should be changed to MUSTs:</p> <ul data-parsoid="{"dsr":[1077,1533,0,0]}"><li data-parsoid="{"dsr":[1077,1281,1,0]}"><i data-parsoid="{"dsr":[1079,1281,2,2]}">our software and infrastructure SHOULD be designed in such a way to prevent unauthorized access to sensitive information, and to minimize the the impact of individual components getting compromised.</i></li> <li data-parsoid="{"dsr":[1282,1416,1,0]}"><i data-parsoid="{"dsr":[1284,1416,2,2]}">resilience against data corruption SHOULD be a design goal for our system architecture, and be built into the software we write.</i></li> <li data-parsoid="{"dsr":[1417,1533,1,0]}"><i data-parsoid="{"dsr":[1419,1533,2,2]}">our software systems SHOULD be designed to only collect data we need, and retain it only as long as necessary.</i></li></ul> <p data-parsoid="{"dsr":[1535,1892,0,0]}">The requirement “software components SHOULD be designed to be reusable, and be published for re-use” should be changed to “software components with broad applicability MUST be designed and published for re-use; software components limited to Wikimedia project-specific use MAY be designed without the need for re-use but MUST be published for auditability”.</p> <p data-parsoid="{"dsr":[1894,2426,0,0]}">The requirements “the MediaWiki stack SHOULD be easy to deploy on standard hosting platforms” and “small MediaWiki instances SHOULD function in low-budget hosting environments” should be amended to reflect the <a href="/wiki/Wikimedia_Technical_Conference/2018/Session_notes/Choosing_installation_methods_and_environments_for_3rd_party_users#Decisions" title="Wikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users" rel="mw:WikiLink" data-parsoid="{"stx":"piped","a":{"href":"./Wikimedia_Technical_Conference/2018/Session_notes/Choosing_installation_methods_and_environments_for_3rd_party_users#Decisions"},"sa":{"href":"Wikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users#Decisions"},"dsr":[2104,2279,129,2]}">Wikimedia Technical Conference 2018 decision</a> about shared hosting. Additionally, they should be amended to ensure that for each component the target audience and platform should be specified.</p> <p data-parsoid="{"dsr":[2428,2736,0,0]}">We’re unsure how this should be worded, but we believe that observability and analytic instrumentation should always be <i data-parsoid="{"dsr":[2548,2562,2,2]}">considered</i> for Wikimedia project components. Not all new or changing components will require observability and analytic instrumentation, but there ought to be a pause to consider this.</p> <p data-parsoid="{"dsr":[2738,2906,0,0]}">The phrase “as well as potentially limited connectivity” should be changed to “with tradeoffs explicitly considered in design for mobile form factors and connectivity.”</p> <p data-parsoid="{"dsr":[2908,2934,0,0]}"><u data-parsoid="{"stx":"html","dsr":[2908,2934,3,4]}">Terminology Updates</u></p> <p data-parsoid="{"dsr":[2936,3003,0,0]}">“scripting languages” should be changed to “programming languages”.</p> <p data-parsoid="{"dsr":[3005,3060,0,0]}">The term “domain model” should be clarified where used.</p> <p data-parsoid="{"dsr":[3062,3127,0,0]}">“(annotated HTML)” should be changed to “(e.g., annotated HTML)”.</p> <p data-parsoid="{"dsr":[3129,3153,0,0]}"><u data-parsoid="{"stx":"html","dsr":[3129,3153,3,4]}">Follow Up Actions</u></p> <p data-parsoid="{"dsr":[3155,3591,0,0]}">As a follow on after ratification of the principles: there is a desire for more concrete examples. For example, there’s a desire for standards on “high granularity” and versioning of web APIs, defined test coverage targets, and guidance on processing existing/discovered technical debt. There is some consideration for these specific examples in Foundation planning, although more concrete examples and some uniformity would be welcome.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u&action=reply&topic_postId=uvzq1ng81qds1682#flow-post-uvzq1ng81qds1682" 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=Topic:Uvzq1ng81mfpt29u&action=history" class="flow-timestamp-anchor"> <span datetime="1552662201" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:03, 15 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvzq1ng81mfpt29u&topic_showPostId=uvzq1ng81qds1682#flow-post-uvzq1ng81qds1682"><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"> <!-- eachPost nested replies --> <div id="flow-post-uwsmcgl12xr82cnm" class="flow-post" data-flow-id="uwsmcgl12xr82cnm" > <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="{"dsr":[0,67,0,0]}">I have implemented several changes according to the feedback above:</p><blockquote data-parsoid="{"stx":"html","dsr":[67,256,12,13]}"><p data-parsoid="{"dsr":[79,243,0,0]}">Before we dig into other items, first, the phrase “MediaWiki Platform Architecture Principles” should be changed to “Wikimedia Engineering Architecture Principles”.</p></blockquote><p data-parsoid="{"dsr":[256,261,0,0]}">Done.</p> <ul data-parsoid="{"dsr":[263,716,0,0]}"><li data-parsoid="{"dsr":[263,466,1,0]}"><i data-parsoid="{"dsr":[264,466,2,2]}">our software and infrastructure SHOULD be designed in such a way to prevent unauthorized access to sensitive information, and to minimize the the impact of individual components getting compromised.</i></li> <li data-parsoid="{"dsr":[467,600,1,0]}"><i data-parsoid="{"dsr":[468,600,2,2]}">resilience against data corruption SHOULD be a design goal for our system architecture, and be built into the software we write.</i></li> <li data-parsoid="{"dsr":[601,716,1,0]}"><i data-parsoid="{"dsr":[602,716,2,2]}">our software systems SHOULD be designed to only collect data we need, and retain it only as long as necessary.</i></li></ul><p data-parsoid="{"dsr":[716,722,0,0]}"> Done</p><blockquote data-parsoid="{"stx":"html","dsr":[722,1104,12,13]}"><p data-parsoid="{"dsr":[734,1091,0,0]}">The requirement “software components SHOULD be designed to be reusable, and be published for re-use” should be changed to “software components with broad applicability MUST be designed and published for re-use; software components limited to Wikimedia project-specific use MAY be designed without the need for re-use but MUST be published for auditability”.</p></blockquote><p data-parsoid="{"dsr":[1104,1129,0,0]}">Done somewhat differently</p><blockquote data-parsoid="{"stx":"html","dsr":[1129,1322,12,13]}"><p data-parsoid="{"dsr":[1141,1309,0,0]}">The phrase “as well as potentially limited connectivity” should be changed to “with tradeoffs explicitly considered in design for mobile form factors and connectivity.”</p></blockquote><p data-parsoid="{"dsr":[1322,1326,0,0]}">Done</p><blockquote data-parsoid="{"stx":"html","dsr":[1326,1418,12,13]}"><p data-parsoid="{"dsr":[1338,1405,0,0]}">“scripting languages” should be changed to “programming languages”.</p></blockquote><p data-parsoid="{"dsr":[1418,1676,0,0]}">Done. "community with ways to develop workflows using scripting languages" was written with an eye to Scribunto and Gadgets, but I think there is no harm in a broader phrasing. The original wording contained the phrase "on-wiki", but that is gone now anyway.</p><blockquote data-parsoid="{"stx":"html","dsr":[1676,1756,12,13]}"><p data-parsoid="{"dsr":[1688,1743,0,0]}">The term “domain model” should be clarified where used.</p></blockquote><p data-parsoid="{"dsr":[1756,1856,0,0]}">Done. Are there any other terms that need clarification, or should be linked to a wikipedia article?</p><blockquote data-parsoid="{"stx":"html","dsr":[1856,1946,12,13]}"><p data-parsoid="{"dsr":[1868,1933,0,0]}">“(annotated HTML)” should be changed to “(e.g., annotated HTML)”.</p></blockquote><p data-parsoid="{"dsr":[1946,1965,0,0]}">Done as well.<br data-parsoid="{"stx":"html","selfClose":true,"dsr":[1959,1965,6,0]}"/></p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u&action=reply&topic_postId=uwsmcgl12xr82cnm#flow-post-uwsmcgl12xr82cnm" 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=Topic:Uvzq1ng81mfpt29u&action=compare-post-revisions&topic_newRevision=ux1xj5xi2m33js4q" class="flow-timestamp-anchor"> <span datetime="1554144127" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">18:42, 1 April 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvzq1ng81mfpt29u&topic_showPostId=uwsmcgl12xr82cnm#flow-post-uwsmcgl12xr82cnm"><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"> <!-- eachPost nested replies --> <div id="flow-post-uwt0wwbw0zqrpsq5" class="flow-post" data-flow-id="uwt0wwbw0zqrpsq5" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:ABaso_(WMF)" class="mw-userlink"> <bdi>ABaso (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:ABaso_(WMF)" class="" title="User talk:ABaso (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/ABaso_(WMF)" title="Contributions/ABaso (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="{"dsr":[0,82,0,0]}">Thanks. Seeing as you asked about terms needing clarification, here are some more:</p> <ul data-parsoid="{"dsr":[83,583,0,0]}"><li data-parsoid="{"dsr":[83,426,1,0]}">"APIs and libraries" might at present read incorrectly to not include "services". This is always a difficult nomenclature problem, as an API often means the API interface at the class level as well as network exposed API, but services may or may not be network exposed. I usually throw my hands up at this point and use the term "component".</li> <li data-parsoid="{"dsr":[427,519,1,0]}">"through the integration of provenance information" could use an illuminating for-example.</li> <li data-parsoid="{"dsr":[520,583,1,0]}">the term "standard hosting platform" should be disambiguated.</li></ul></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u&action=reply&topic_postId=uwt0wwbw0zqrpsq5#flow-post-uwt0wwbw0zqrpsq5" 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=Topic:Uvzq1ng81mfpt29u&action=history" class="flow-timestamp-anchor"> <span datetime="1553798698" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">18:44, 28 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvzq1ng81mfpt29u&topic_showPostId=uwt0wwbw0zqrpsq5#flow-post-uwt0wwbw0zqrpsq5"><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 nested replies --> <div id="flow-post-uwt8pkt9c0ug5689" class="flow-post" data-flow-id="uwt8pkt9c0ug5689" > <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="{}"><blockquote data-parsoid="{"stx":"html","dsr":[0,106,12,13]}"><p data-parsoid="{"dsr":[12,93,0,0]}">"APIs and libraries" might at present read incorrectly to not include "services".</p></blockquote><p data-parsoid="{"dsr":[106,475,0,0]}">Well, it includes the APIs of services. The kind of community maintained code we are talking about here includes Gadgets, Lua modules, extensions, and bots. All of these use APIs, and it would be nice if we could supply them with libraries. I will add "services", but it seems redundant - and may be taken to include service objects, as opposed to web-exposed services.</p><blockquote data-parsoid="{"stx":"html","dsr":[475,551,12,13]}"><p data-parsoid="{"dsr":[487,538,0,0]}">"through the integration of provenance information"</p></blockquote><p data-parsoid="{"dsr":[551,865,0,0]}">What this really means is "when exposing parts of a wiki page via an API, also expose the relevant citations". But that seems too concrete for include in the policy. Also, re-reading this, it seems like MUST is too strong here. This is rather hard to do. A MUST would block any new feature that doesn't do this. </p><blockquote data-parsoid="{"stx":"html","dsr":[865,917,12,13]}"><p data-parsoid="{"dsr":[877,904,0,0]}">"standard hosting platform"</p></blockquote><p data-parsoid="{"dsr":[917,1178,0,0]}">This was intended to be future-compatible. It currently means "vanilla LAMP stack with no shell access and no admin rights". But if node.js support becomes standard in such environments, the policy should allow us to make use of that without having to amend it.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u&action=reply&topic_postId=uwsmcgl12xr82cnm#flow-post-uwsmcgl12xr82cnm" 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=Topic:Uvzq1ng81mfpt29u&action=history" class="flow-timestamp-anchor"> <span datetime="1553807098" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">21:04, 28 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvzq1ng81mfpt29u&topic_showPostId=uwt8pkt9c0ug5689#flow-post-uwt8pkt9c0ug5689"><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> </div> </div> <!-- eachPost nested replies --> <div id="flow-post-uwsn97furjee2zj9" class="flow-post" data-flow-id="uwsn97furjee2zj9" > <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="{"dsr":[0,8,0,0]}">Re this:</p><blockquote data-parsoid="{"stx":"html","dsr":[8,341,12,13]}"><p data-parsoid="{"dsr":[20,328,0,0]}">We’re unsure how this should be worded, but we believe that observability and analytic instrumentation should always be <i data-parsoid="{"dsr":[140,154,2,2]}">considered</i> for Wikimedia project components. Not all new or changing components will require observability and analytic instrumentation, but there ought to be a pause to consider this.</p></blockquote><p data-parsoid="{"dsr":[341,353,0,0]}">I now added:</p><blockquote data-parsoid="{"stx":"html","dsr":[353,501,12,13]}"><p data-parsoid="{"dsr":[365,488,0,0]}">observability and analytic instrumentation SHOULD be explicitly considered in in the design of new components and services.</p></blockquote><p data-parsoid="{"dsr":[501,522,0,0]}">Does that sound good?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u&action=reply&topic_postId=uwsn97furjee2zj9#flow-post-uwsn97furjee2zj9" 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=Topic:Uvzq1ng81mfpt29u&action=history" class="flow-timestamp-anchor"> <span datetime="1553783983" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">14:39, 28 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvzq1ng81mfpt29u&topic_showPostId=uwsn97furjee2zj9#flow-post-uwsn97furjee2zj9"><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 nested replies --> <div id="flow-post-uwt0zqkrtn2rio41" class="flow-post" data-flow-id="uwt0zqkrtn2rio41" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:ABaso_(WMF)" class="mw-userlink"> <bdi>ABaso (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:ABaso_(WMF)" class="" title="User talk:ABaso (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/ABaso_(WMF)" title="Contributions/ABaso (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="{"dsr":[0,122,0,0]}">That works. I think the translation here is that for new things there should be a solid reason for <i data-parsoid="{"dsr":[99,106,2,2]}">not</i> considering it.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u&action=reply&topic_postId=uvzq1ng81qds1682#flow-post-uvzq1ng81qds1682" 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=Topic:Uvzq1ng81mfpt29u&action=history" class="flow-timestamp-anchor"> <span datetime="1553798783" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">18:46, 28 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvzq1ng81mfpt29u&topic_showPostId=uwt0zqkrtn2rio41#flow-post-uwt0zqkrtn2rio41"><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> </div> </div> <!-- eachPost topic --> <div id="flow-post-uvzs4byqkfk4jdik" class="flow-post" data-flow-id="uvzs4byqkfk4jdik" > <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="{"dsr":[0,255,0,0]}">Thanks for the feedback! This all sounds pretty reasonable. I'll probably get around to incorporating this and some of the other feedback next week. I'll let you know once that is done, and we can discuss whether the changes I made seem sufficient to you.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u&action=reply&topic_postId=uvzs4byqkfk4jdik#flow-post-uvzs4byqkfk4jdik" 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=Topic:Uvzq1ng81mfpt29u&action=history" class="flow-timestamp-anchor"> <span datetime="1552664436" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:40, 15 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvzq1ng81mfpt29u&topic_showPostId=uvzs4byqkfk4jdik#flow-post-uvzs4byqkfk4jdik"><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-uvzsgd0j42qdu96x" class="flow-post" data-flow-id="uvzsgd0j42qdu96x" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:ABaso_(WMF)" class="mw-userlink"> <bdi>ABaso (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:ABaso_(WMF)" class="" title="User talk:ABaso (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/ABaso_(WMF)" title="Contributions/ABaso (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="{"dsr":[0,7,0,0]}">Thanks!</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u&action=reply&topic_postId=uvzsgd0j42qdu96x#flow-post-uvzsgd0j42qdu96x" 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=Topic:Uvzq1ng81mfpt29u&action=history" class="flow-timestamp-anchor"> <span datetime="1552664796" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:46, 15 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvzq1ng81mfpt29u&topic_showPostId=uvzsgd0j42qdu96x#flow-post-uvzsgd0j42qdu96x"><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-uwsmz45s4mpc3h6y" class="flow-post" data-flow-id="uwsmz45s4mpc3h6y" > <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="{"dsr":[0,10,0,0]}">You wrote:</p><blockquote data-parsoid="{"stx":"html","dsr":[10,567,12,13]}"><p data-parsoid="{"dsr":[22,554,0,0]}">The requirements “the MediaWiki stack SHOULD be easy to deploy on standard hosting platforms” and “small MediaWiki instances SHOULD function in low-budget hosting environments” should be amended to reflect the <a href="/wiki/Wikimedia_Technical_Conference/2018/Session_notes/Choosing_installation_methods_and_environments_for_3rd_party_users#Decisions" title="Wikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users" rel="mw:WikiLink" data-parsoid="{"stx":"piped","a":{"href":"./Wikimedia_Technical_Conference/2018/Session_notes/Choosing_installation_methods_and_environments_for_3rd_party_users#Decisions"},"sa":{"href":"Wikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users#Decisions"},"dsr":[232,407,129,2]}">Wikimedia Technical Conference 2018 decision</a> about shared hosting. Additionally, they should be amended to ensure that for each component the target audience and platform should be specified.</p></blockquote><p data-parsoid="{"dsr":[567,579,0,0]}">I now added:</p><blockquote data-parsoid="{"stx":"html","dsr":[579,720,12,13]}"><p data-parsoid="{"dsr":[591,707,0,0]}">for every component and feature, the intended target audience and supported target platform MUST be clearly defined.</p></blockquote><p data-parsoid="{"dsr":[720,799,0,0]}">However, I'm unsure how to incorporate the decision made at TechConf. It reads:</p><blockquote data-parsoid="{"stx":"html","dsr":[799,1230,12,13]}"><p data-parsoid="{"dsr":[811,1217,0,0]}">If we commit to an easy-to-use tool for MW platform installation, configuration, and maintenance, then we can drop support of "one-click installs" on shared hosting environments; A special interest group is necessary to further these goals and facilitate implementation (see <a href="/wiki/Wikimedia_Technical_Conference/2018/Session_notes/Choosing_installation_methods_and_environments_for_3rd_party_users#Decisions" title="Wikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users" rel="mw:WikiLink" data-parsoid="{"stx":"simple","a":{"href":"./Wikimedia_Technical_Conference/2018/Session_notes/Choosing_installation_methods_and_environments_for_3rd_party_users#Decisions"},"sa":{"href":"Wikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users#Decisions"},"dsr":[1086,1216,2,2]}">Wikimedia Technical Conference/2018/Session notes/Choosing installation methods and environments for 3rd party users#Decisions</a>)</p></blockquote><p data-parsoid="{"dsr":[1230,1477,0,0]}">The "if" part has not happened, there is no such commitment, and no such special interest group exists. I would be very happy to see this happening, but until then, the policy should document the status quo: MediaWiki has to run on shared hosting.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u&action=reply&topic_postId=uwsmz45s4mpc3h6y#flow-post-uwsmz45s4mpc3h6y" 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=Topic:Uvzq1ng81mfpt29u&action=compare-post-revisions&topic_newRevision=uwsn2q2paah5w66t" class="flow-timestamp-anchor"> <span datetime="1553783789" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">14:36, 28 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvzq1ng81mfpt29u&topic_showPostId=uwsmz45s4mpc3h6y#flow-post-uwsmz45s4mpc3h6y"><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-uwu9g2yysqpx1043" class="flow-post" data-flow-id="uwu9g2yysqpx1043" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Tgr_(WMF)" class="mw-userlink"> <bdi>Tgr (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Tgr_(WMF)" class="" title="User talk:Tgr (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Tgr_(WMF)" title="Contributions/Tgr (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="{"dsr":[0,307,0,0]}">IMO the current wording is generic enough to incorporate that - if we provided, say, easy-to-use docker containers with a long-term support commitment, that would be a stack that's easy to deploy on standard low-budget hosting platforms (cloud providers being reasonably standard and low-budget these days).</p> <p data-parsoid="{"dsr":[309,590,0,0]}">The one thing I'd maybe change is "SHOULD be easy to deploy <i data-parsoid="{"dsr":[369,385,2,2]}">and maintain</i>" as containers often tend to be easier to deploy than to operate over an extended period of time and sufficient thought is not always given to how they can be kept up-to-date with OS security updates etc.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u&action=reply&topic_postId=uwu9g2yysqpx1043#flow-post-uwu9g2yysqpx1043" 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=Topic:Uvzq1ng81mfpt29u&action=history" class="flow-timestamp-anchor"> <span datetime="1553846677" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">08:04, 29 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvzq1ng81mfpt29u&topic_showPostId=uwu9g2yysqpx1043#flow-post-uwu9g2yysqpx1043"><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-uwuok78e8zclu6z2" class="flow-post" data-flow-id="uwuok78e8zclu6z2" > <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="{"dsr":[0,72,0,0]}">Ease of maintainance is I think covered by the subsequent bullet points:</p> <ul data-parsoid="{"dsr":[74,267,0,0]}"><li data-parsoid="{"dsr":[74,164,1,0]}">it SHOULD be possible to install and upgrade MediaWiki without much technical knowledge.</li> <li data-parsoid="{"dsr":[165,267,1,0]}">it MUST be possible to upgrade MediaWiki without the risk of losing content or disrupting operation.</li></ul></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvzq1ng81mfpt29u&action=reply&topic_postId=uvzq1ng81mfpt29u#flow-post-uvzq1ng81mfpt29u" 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=Topic:Uvzq1ng81mfpt29u&action=history" class="flow-timestamp-anchor"> <span datetime="1553862961" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">12:36, 29 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvzq1ng81mfpt29u&topic_showPostId=uwuok78e8zclu6z2#flow-post-uwuok78e8zclu6z2"><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=Topic:Uvzq1ng81mfpt29u&action=reply&topic_postId=uvzq1ng81mfpt29u#flow-post-uvzq1ng81mfpt29u-form-content" id="flow-reply-uvzq1ng81mfpt29u" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="uvzq1ng81mfpt29u" /> <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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-uvzq1ng81mfpt29u-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to "Audiences Engineering Feedback"" 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=Topic:Uvzq1ng81mfpt29u&action=reply&topic_postId=uvzq1ng81mfpt29u#flow-post-uvzq1ng81mfpt29u-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to "Audiences Engineering Feedback"</a> </div> <div class="flow-topic flow-load-interactive" id="flow-topic-uvixayupg8rct001" data-flow-id="uvixayupg8rct001" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1552912349000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="API future-proof-ness" data-flow-load-handler="topicTitle" > API future-proof-ness</h2> <div class="flow-topic-meta"> 2 comments • <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001&action=history" class="flow-timestamp-anchor"> <span datetime="1552912349" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">12:32, 18 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvixayupg8rct001&action=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:Uvixayupg8rct001"><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=Topic:Uvixayupg8rct001&action=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-uvixayupgcpf13y9" class="flow-post" data-flow-id="uvixayupgcpf13y9" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Tgr_(WMF)" class="mw-userlink"> <bdi>Tgr (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Tgr_(WMF)" class="" title="User talk:Tgr (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Tgr_(WMF)" title="Contributions/Tgr (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="{"dsr":[0,35,0,0]}">Some things maybe worth mentioning:</p> <ul data-parsoid="{"dsr":[36,716,0,0]}"> <li data-parsoid="{"dsr":[36,226,1,0]}">interfaces should be written with ease of extensibility without B/C breaks in mind. (E.g. use an option array instead a list of arguments, return an associative array instead of a scalar.)</li> <li data-parsoid="{"dsr":[227,716,1,0]}">APIs (or published data, more generally) should support the use case of history reconstruction, to the extent it is feasible. (E.g. think of all the reasons creating the <a rel="mw:WikiLink/Interwiki" href="https://wikitech.wikimedia.org/wiki/Analytics/Data_Lake/Edits" title="wikitech:Analytics/Data Lake/Edits" data-parsoid="{"stx":"piped","a":{"href":"https://wikitech.wikimedia.org/wiki/Analytics/Data_Lake/Edits"},"sa":{"href":"wikitech:Analytics/Data_Lake/Edits"},"isIW":true,"dsr":[399,450,37,2]}">edit dataset</a> was hard.) The same generic principle is relevant to other use cases as well (e.g. page_props being hard to match to revisions), not sure how to articulate it. Data that gets exposed should always be versioned? (Not in the "schema version" sense, but individually.)</li> </ul></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001&action=reply&topic_postId=uvixayupgcpf13y9#flow-post-uvixayupgcpf13y9" 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=Topic:Uvixayupg8rct001&action=history" class="flow-timestamp-anchor"> <span datetime="1552010663" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">02:04, 8 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvixayupg8rct001&topic_showPostId=uvixayupgcpf13y9#flow-post-uvixayupgcpf13y9"><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-uvqur2eqbs5722fi" class="flow-post" data-flow-id="uvqur2eqbs5722fi" > <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="{"dsr":[0,437,0,0]}">Re "ease of extensibility": We already have "<i data-parsoid="{"dsr":[45,282,2,2]}">our software architecture SHOULD be modular, with components exposing narrow interfaces, to allow components to be replaced and refactored while maintaining a stable interface towards other components as well as 3rd party extensions.</i>" Maybe we can add <i data-parsoid="{"dsr":[301,435,2,2]}">"Extension points MUST be clearly documented as such, and SHOULD be designed in a way that allows them to remain stable over time"</i>. </p> <p data-parsoid="{"dsr":[439,748,0,0]}">Re "history construction": I know what you mean, but I see no good way of phrasing this as a principle. Maybe "<i data-parsoid="{"dsr":[550,655,2,2]}">APIs SHOULD provide mechanisms that allow consistent data sets to be retrieved with multiple requests</i>"? This would certainly be nice, but hard to do in general. This seems really aspirational...</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uvixayupg8rct001&action=reply&topic_postId=uvixayupg8rct001#flow-post-uvixayupg8rct001" 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=Topic:Uvixayupg8rct001&action=compare-post-revisions&topic_newRevision=uw668654oe62but9" class="flow-timestamp-anchor"> <span datetime="1552912349" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">12:32, 18 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uvixayupg8rct001&topic_showPostId=uvqur2eqbs5722fi#flow-post-uvqur2eqbs5722fi"><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=Topic:Uvixayupg8rct001&action=reply&topic_postId=uvixayupg8rct001#flow-post-uvixayupg8rct001-form-content" id="flow-reply-uvixayupg8rct001" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="uvixayupg8rct001" /> <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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-uvixayupg8rct001-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to "API future-proof-ness"" 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=Topic:Uvixayupg8rct001&action=reply&topic_postId=uvixayupg8rct001#flow-post-uvixayupg8rct001-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to "API future-proof-ness"</a> </div> <div class="flow-topic flow-load-interactive" id="flow-topic-uups18r2rr3c4z76" data-flow-id="uups18r2rr3c4z76" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1552317563000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="Intended scope of application" data-flow-load-handler="topicTitle" > Intended scope of application</h2> <div class="flow-topic-meta"> 5 comments • <a href="//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76&action=history" class="flow-timestamp-anchor"> <span datetime="1552317563" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:19, 11 March 2019</span> <span id="" class="flow-timestamp-ago">5 years ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">5</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=Topic:Uups18r2rr3c4z76&action=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:Uups18r2rr3c4z76"><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=Topic:Uups18r2rr3c4z76&action=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-uups18r2rv1ed35e" class="flow-post" data-flow-id="uups18r2rv1ed35e" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:BDavis_(WMF)" class="mw-userlink"> <bdi>BDavis (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:BDavis_(WMF)" class="" title="User talk:BDavis (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/BDavis_(WMF)" title="Contributions/BDavis (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><p data-parsoid="{"dsr":[0,241,0,0]}">It is not completely clear to me what scope of software engineering activities this document is intended to apply to. From the title I can infer that MediaWiki is in scope, but "other Wikimedia engineering endeavors" is really, really vague.</p> <p data-parsoid="{"dsr":[243,260,0,0]}">Does it apply to:</p> <ul data-parsoid="{"dsr":[261,658,0,0]}"><li data-parsoid="{"dsr":[261,310,1,0]}">Puppet code used to automate Wikimedia servers?</li> <li data-parsoid="{"dsr":[311,405,1,0]}">Non-MediaWiki user facing web applications (for example <a rel="mw:ExtLink" class="external free" href="https://scholarships.wikimedia.org" data-parsoid="{"stx":"url","dsr":[369,403,0,0]}">https://scholarships.wikimedia.org</a>)?</li> <li data-parsoid="{"dsr":[406,506,1,0]}">Indirectly user facing services (for example the dynamicproxy deployments used by Cloud Services)?</li> <li data-parsoid="{"dsr":[507,575,1,0]}">Non-MediaWiki cli tools developed by Wikimedia (for example scap)?</li> <li data-parsoid="{"dsr":[576,618,1,0]}">Gadget code deployed to Wikimedia wikis?</li> <li data-parsoid="{"dsr":[619,658,1,0]}">Lua code deployed to Wikimedia wikis?</li></ul></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76&action=reply&topic_postId=uups18r2rv1ed35e#flow-post-uups18r2rv1ed35e" 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=Topic:Uups18r2rr3c4z76&action=history" class="flow-timestamp-anchor"> <span datetime="1550880197" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">00:03, 23 February 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uups18r2rr3c4z76&topic_showPostId=uups18r2rv1ed35e#flow-post-uups18r2rv1ed35e"><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-uv4hdkzholea2086" class="flow-post" data-flow-id="uv4hdkzholea2086" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Faidon_Liambotis_(WMF)" class="mw-userlink"> <bdi>Faidon Liambotis (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Faidon_Liambotis_(WMF)" class="" title="User talk:Faidon Liambotis (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Faidon_Liambotis_(WMF)" title="Contributions/Faidon Liambotis (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="{"dsr":[0,349,0,0]}">Thanks Bryan -- that was one of my concerns as well. Similarly, it talks about "software that interacts with users", but it's unclear to me what that is envisioned to be. Is it wiki-users, third-party MediaWiki users (so e.g. sysadmins), users of third-party MediaWiki installs, API consumers, development communities, Cloud Services users etc. etc.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76&action=reply&topic_postId=uv4hdkzholea2086#flow-post-uv4hdkzholea2086" 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=Topic:Uups18r2rr3c4z76&action=history" class="flow-timestamp-anchor"> <span datetime="1551450502" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">14:28, 1 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uups18r2rr3c4z76&topic_showPostId=uv4hdkzholea2086#flow-post-uv4hdkzholea2086"><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-uvg77ceci10a8vj4" class="flow-post" data-flow-id="uvg77ceci10a8vj4" > <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="{"dsr":[0,115,0,0]}"><i data-parsoid="{"dsr":[0,40,2,2]}">"software that interacts with users"</i> should perhaps be clarified by adding "though a graphical user interface".</p> <p data-parsoid="{"dsr":[117,406,0,0]}">The idea is that this document should govern all engineering decisions, including all the areas mentioned by Bryan - but of course, not all principles are applicable in all contexts. dynamicproxy doesn't need internationalization, and puppet code doesn't need to be re-usable as a library.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76&action=reply&topic_postId=uvg77ceci10a8vj4#flow-post-uvg77ceci10a8vj4" 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=Topic:Uups18r2rr3c4z76&action=history" class="flow-timestamp-anchor"> <span datetime="1551904971" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">20:42, 6 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uups18r2rr3c4z76&topic_showPostId=uvg77ceci10a8vj4#flow-post-uvg77ceci10a8vj4"><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-uvis2m0u17hfqa4g" class="flow-post" data-flow-id="uvis2m0u17hfqa4g" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Tgr_(WMF)" class="mw-userlink"> <bdi>Tgr (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Tgr_(WMF)" class="" title="User talk:Tgr (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Tgr_(WMF)" title="Contributions/Tgr (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="{"dsr":[0,251,0,0]}">Are developers considered users in this context? For example, should API sandboxes support i18n? Or things like Quarry? If the answer is yes I'm not sure a MUST requirement is realistic (although we should certainly strive for it more than we do now).</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76&action=reply&topic_postId=uvis2m0u17hfqa4g#flow-post-uvis2m0u17hfqa4g" 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=Topic:Uups18r2rr3c4z76&action=history" class="flow-timestamp-anchor"> <span datetime="1552005026" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">00:30, 8 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uups18r2rr3c4z76&topic_showPostId=uvis2m0u17hfqa4g#flow-post-uvis2m0u17hfqa4g"><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-uvqu5tct6s77vanx" class="flow-post" data-flow-id="uvqu5tct6s77vanx" > <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="{"dsr":[0,336,0,0]}">Yes, developers should be considered users, and the UIs of developer tools should be localized. The Special:ApiSandbox is already fully localized (yay!). Quarry should be, at least if it's an official WMF tool. For tools written by volunteers, the principles can of course not be enforced, but following them should still be encouraged.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uups18r2rr3c4z76&action=reply&topic_postId=uups18r2rr3c4z76#flow-post-uups18r2rr3c4z76" 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=Topic:Uups18r2rr3c4z76&action=history" class="flow-timestamp-anchor"> <span datetime="1552317563" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:19, 11 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uups18r2rr3c4z76&topic_showPostId=uvqu5tct6s77vanx#flow-post-uvqu5tct6s77vanx"><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=Topic:Uups18r2rr3c4z76&action=reply&topic_postId=uups18r2rr3c4z76#flow-post-uups18r2rr3c4z76-form-content" id="flow-reply-uups18r2rr3c4z76" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="uups18r2rr3c4z76" /> <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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-uups18r2rr3c4z76-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to "Intended scope of application"" 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=Topic:Uups18r2rr3c4z76&action=reply&topic_postId=uups18r2rr3c4z76#flow-post-uups18r2rr3c4z76-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to "Intended scope of application"</a> </div> <div class="flow-topic flow-load-interactive" id="flow-topic-uv4lml4qprt30ciz" data-flow-id="uv4lml4qprt30ciz" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1552003815000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="abstract domain model" data-flow-load-handler="topicTitle" > abstract domain model</h2> <div class="flow-topic-meta"> 6 comments • <a href="//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz&action=history" class="flow-timestamp-anchor"> <span datetime="1552003815" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">00:10, 8 March 2019</span> <span id="" class="flow-timestamp-ago">5 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 " > <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=Topic:Uv4lml4qprt30ciz&action=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:Uv4lml4qprt30ciz"><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=Topic:Uv4lml4qprt30ciz&action=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-uv4lml4qpvr58gh7" class="flow-post" data-flow-id="uv4lml4qpvr58gh7" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Ryan_Kaldari_(WMF)" class="mw-userlink"> <bdi>Ryan Kaldari (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Ryan_Kaldari_(WMF)" class="" title="User talk:Ryan Kaldari (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Ryan_Kaldari_(WMF)" title="Contributions/Ryan Kaldari (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="{"dsr":[0,122,0,0]}"><span about="#mwt1" typeof="mw:Transclusion" data-parsoid="{"pi":[[{"k":"1"}]],"dsr":[0,30,null,null]}" data-mw="{"parts":[{"template":{"target":{"wt":"FlowMention","href":"./Template:FlowMention"},"params":{"1":{"wt":"DKinzler (WMF)"}},"i":0}}]}">@</span><a href="/wiki/User:DKinzler_(WMF)" title="User:DKinzler (WMF)" rel="mw:WikiLink" about="#mwt1" data-parsoid="{"stx":"piped","a":{"href":"./User:DKinzler_(WMF)"},"sa":{"href":"User:DKinzler (WMF)"}}">DKinzler (WMF)</a> What is an "abstract domain model"? Would it be possible to use less jargony language here?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz&action=reply&topic_postId=uv4lml4qpvr58gh7#flow-post-uv4lml4qpvr58gh7" 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=Topic:Uv4lml4qprt30ciz&action=history" class="flow-timestamp-anchor"> <span datetime="1551455081" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:44, 1 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uv4lml4qprt30ciz&topic_showPostId=uv4lml4qpvr58gh7#flow-post-uv4lml4qpvr58gh7"><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-uvbmrkfjtyp35011" class="flow-post" data-flow-id="uvbmrkfjtyp35011" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:KHarlan_(WMF)" class="mw-userlink"> <bdi>KHarlan (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:KHarlan_(WMF)" class="" title="User talk:KHarlan (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/KHarlan_(WMF)" title="Contributions/KHarlan (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="{"dsr":[0,206,0,0]}">I came here to say something similar; in general, one useful addition to many of these principles would be specific examples where SHOULD/MUST have been followed correctly and places where we could improve.</p> <p data-parsoid="{"dsr":[208,521,0,0]}">I think I understand what is meant by "APIs geared towards a specific user interface MUST be considered part of the component that implements that user interface, and MAY be considered private to that component" but I'm not sure what specific instances/examples (if any) this statement was written in response to.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz&action=reply&topic_postId=uvbmrkfjtyp35011#flow-post-uvbmrkfjtyp35011" 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=Topic:Uv4lml4qprt30ciz&action=history" class="flow-timestamp-anchor"> <span datetime="1551727808" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">19:30, 4 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uv4lml4qprt30ciz&topic_showPostId=uvbmrkfjtyp35011#flow-post-uvbmrkfjtyp35011"><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-uvg6utazicpkk80h" class="flow-post" data-flow-id="uvg6utazicpkk80h" > <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="{"dsr":[0,37,0,0]}">> What is an "abstract domain model"?</p> <p data-parsoid="{"dsr":[39,456,0,0]}">For example, "title", "page", and "revision" are entities in mediawiki's abstract domain model. APIs should be built around such concepts. In contrast, and API that exposes internals, like the database schema, should be avoided. APIs that cater to a specific client are OK (e.g. CategoryTree has an API foe returning rendered sub-trees), but should not be used by anything else (they are "private to that component").</p> <p data-parsoid="{"dsr":[458,607,0,0]}">I'm not sure how to rephrase these points to make them clearer. We can add examples, I just fear that it will clutter the page too much. Suggestions?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz&action=reply&topic_postId=uvg6utazicpkk80h#flow-post-uvg6utazicpkk80h" 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=Topic:Uv4lml4qprt30ciz&action=compare-post-revisions&topic_newRevision=uvg6wg8xx4dafaek" class="flow-timestamp-anchor"> <span datetime="1551904645" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">20:37, 6 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uv4lml4qprt30ciz&topic_showPostId=uvg6utazicpkk80h#flow-post-uvg6utazicpkk80h"><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"> <!-- eachPost nested replies --> <div id="flow-post-uviqy5ajy5dohlpm" class="flow-post" data-flow-id="uviqy5ajy5dohlpm" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Tgr_(WMF)" class="mw-userlink"> <bdi>Tgr (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Tgr_(WMF)" class="" title="User talk:Tgr (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Tgr_(WMF)" title="Contributions/Tgr (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="{"dsr":[0,76,0,0]}">So should that say "SHOULD be considered private to that component" instead?</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz&action=reply&topic_postId=uvg6utazicpkk80h#flow-post-uvg6utazicpkk80h" 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=Topic:Uv4lml4qprt30ciz&action=history" class="flow-timestamp-anchor"> <span datetime="1552003815" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">00:10, 8 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uv4lml4qprt30ciz&topic_showPostId=uviqy5ajy5dohlpm#flow-post-uviqy5ajy5dohlpm"><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> </div> </div> <!-- eachPost topic --> <div id="flow-post-uvg864mroz2701oi" class="flow-post" data-flow-id="uvg864mroz2701oi" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:BDavis_(WMF)" class="mw-userlink"> <bdi>BDavis (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:BDavis_(WMF)" class="" title="User talk:BDavis (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/BDavis_(WMF)" title="Contributions/BDavis (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="{"dsr":[0,65,0,0]}">> I'm not sure how to rephrase these points to make them clearer.</p> <p data-parsoid="{"dsr":[67,459,0,0]}">Link to Wikipedia articles on the first use of each "term of art" in the doc? If you are using terms of art that are so obscure to not be covered at least as a sub-topic on an enwiki article then that might be a good guide on rewording. Unless of course the term of art is purely of local origin; in that case I would hope there is a mw.o or wikitech page you could link to for clarification.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz&action=reply&topic_postId=uvg864mroz2701oi#flow-post-uvg864mroz2701oi" 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=Topic:Uv4lml4qprt30ciz&action=history" class="flow-timestamp-anchor"> <span datetime="1551906012" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">21:00, 6 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uv4lml4qprt30ciz&topic_showPostId=uvg864mroz2701oi#flow-post-uvg864mroz2701oi"><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-uvhxd9lukd3eb6dl" class="flow-post" data-flow-id="uvhxd9lukd3eb6dl" > <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="{"dsr":[0,19,0,0]}">Ok, I'll add links.</p> <p data-parsoid="{"dsr":[21,81,0,0]}">For the case at hand, see <a rel="mw:WikiLink/Interwiki" href="https://en.wikipedia.org/wiki/Domain%20model" title="en:Domain model" data-parsoid="{"stx":"piped","a":{"href":"https://en.wikipedia.org/wiki/Domain%20model"},"sa":{"href":":en:Domain model"},"isIW":true,"dsr":[47,80,19,2]}">domain model</a>.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uv4lml4qprt30ciz&action=reply&topic_postId=uv4lml4qprt30ciz#flow-post-uv4lml4qprt30ciz" 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=Topic:Uv4lml4qprt30ciz&action=compare-post-revisions&topic_newRevision=uvhxegwszd9n97a4" class="flow-timestamp-anchor"> <span datetime="1551971982" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">15:19, 7 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uv4lml4qprt30ciz&topic_showPostId=uvhxd9lukd3eb6dl#flow-post-uvhxd9lukd3eb6dl"><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=Topic:Uv4lml4qprt30ciz&action=reply&topic_postId=uv4lml4qprt30ciz#flow-post-uv4lml4qprt30ciz-form-content" id="flow-reply-uv4lml4qprt30ciz" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="uv4lml4qprt30ciz" /> <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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-uv4lml4qprt30ciz-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to "abstract domain model"" 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=Topic:Uv4lml4qprt30ciz&action=reply&topic_postId=uv4lml4qprt30ciz#flow-post-uv4lml4qprt30ciz-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to "abstract domain model"</a> </div> <div class="flow-topic flow-load-interactive" id="flow-topic-unr4x0ic2ulbbgrs" data-flow-id="unr4x0ic2ulbbgrs" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1551905185000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="Should a layered architecture be part of the engineering principles?" data-flow-load-handler="topicTitle" > Should a layered architecture be part of the engineering principles?</h2> <div class="flow-topic-meta"> 5 comments • <a href="//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs&action=history" class="flow-timestamp-anchor"> <span datetime="1551905185" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">20:46, 6 March 2019</span> <span id="" class="flow-timestamp-ago">5 years ago</span> </span> </a> </div> <span class="flow-reply-count"><span class="flow-reply-count-number">5</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=Topic:Unr4x0ic2ulbbgrs&action=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:Unr4x0ic2ulbbgrs"><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=Topic:Unr4x0ic2ulbbgrs&action=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-unr4x0ic2yjdjkq0" class="flow-post" data-flow-id="unr4x0ic2yjdjkq0" > <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"><p data-parsoid="{"dsr":[0,206,0,0]}">A separation into three "layers" seems to be industry standard: storage, process, and presentation (note that this is conceptually analogous to, but different from, the MVC pattern used in user interfaces).</p> <p data-parsoid="{"dsr":[208,510,0,0]}">This separation of concerns would help to allow the implementation of different interactions/flows and different representations for different users, use cases, and devices. It's not the only way to achieve this, but it seems to be an obvious win. Should it thus be part of the architecture principles?</p> <p data-parsoid="{"dsr":[512,667,0,0]}">Suggested wording: <i data-parsoid="{"dsr":[531,667,2,2]}">The software stack SHOULD be separated into three layers: storage/persistence, processing/application, and presentation/interaction.</i></p></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs&action=reply&topic_postId=unr4x0ic2yjdjkq0#flow-post-unr4x0ic2yjdjkq0" 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=Topic:Unr4x0ic2ulbbgrs&action=history" class="flow-timestamp-anchor"> <span datetime="1541158842" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">11:40, 2 November 2018</span> <span id="" class="flow-timestamp-ago">6 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=Topic:Unr4x0ic2ulbbgrs&topic_showPostId=unr4x0ic2yjdjkq0#flow-post-unr4x0ic2yjdjkq0"><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-unty16132xam6r6k" class="flow-post" data-flow-id="unty16132xam6r6k" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Tgr_(WMF)" class="mw-userlink"> <bdi>Tgr (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Tgr_(WMF)" class="" title="User talk:Tgr (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Tgr_(WMF)" title="Contributions/Tgr (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><p data-parsoid="{"dsr":[0,606,0,0]}">I don't think this is useful without further clarification. For example, MediaWiki has a database abstraction layer; is that the same as the storage layer, or is a storage layer expected to encompass all knowledge of DB structure? What about caching and cookies (technically all forms of persistence but often awkward to separate from processing logic)? What is "interaction", does that include processing request data? How do these apply to an application where a significant part of the logic is frontend code and "interaction" has very different meaning from the request/response based web applications?</p></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs&action=reply&topic_postId=unty16132xam6r6k#flow-post-unty16132xam6r6k" 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=Topic:Unr4x0ic2ulbbgrs&action=history" class="flow-timestamp-anchor"> <span datetime="1541267782" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">17:56, 3 November 2018</span> <span id="" class="flow-timestamp-ago">6 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=Topic:Unr4x0ic2ulbbgrs&topic_showPostId=unty16132xam6r6k#flow-post-unty16132xam6r6k"><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-uo0v9lvdsxw5j7hr" class="flow-post" data-flow-id="uo0v9lvdsxw5j7hr" > <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"><p data-parsoid="{"dsr":[0,517,0,0]}">In my mind, the storage layer should abstract all knowledge of what technology is used for storage, and what schemas we use in these technologies. Ideally, application logic is completely isolated from that. Cookies should be handled by the Request/Response layer ("presentation" layer is misleading, since it also deals with request parameters, input validation, and user sessions). Caching can happen in all layers. The storage infrastructure behind caching and session should be encapsulated in the storage layer.</p> <p data-parsoid="{"dsr":[519,640,0,0]}">So yea... this seems too specific for "architecture principles". These are more "architecture techniques" or something...</p></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs&action=reply&topic_postId=uo0v9lvdsxw5j7hr#flow-post-uo0v9lvdsxw5j7hr" 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=Topic:Unr4x0ic2ulbbgrs&action=history" class="flow-timestamp-anchor"> <span datetime="1541536303" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">20:31, 6 November 2018</span> <span id="" class="flow-timestamp-ago">6 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=Topic:Unr4x0ic2ulbbgrs&topic_showPostId=uo0v9lvdsxw5j7hr#flow-post-uo0v9lvdsxw5j7hr"><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-uo15u9h3g605sung" class="flow-post" data-flow-id="uo15u9h3g605sung" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:Tgr_(WMF)" class="mw-userlink"> <bdi>Tgr (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:Tgr_(WMF)" class="" title="User talk:Tgr (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/Tgr_(WMF)" title="Contributions/Tgr (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><p data-parsoid="{"dsr":[0,457,0,0]}">Maybe you could articulate the reasons for having separate storage etc. layers, and try to turn those reasons into principles. Is it to minimize the amount of code that depends on technology choices (such as storage engine)? To minimize the amount of code that deals with data in an uncertain format (user input, old data from storage)? To separate code that is expected to change often from that which isn't? To enable certain types of site customizations?</p></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs&action=reply&topic_postId=uo15u9h3g605sung#flow-post-uo15u9h3g605sung" 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=Topic:Unr4x0ic2ulbbgrs&action=history" class="flow-timestamp-anchor"> <span datetime="1541547695" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">23:41, 6 November 2018</span> <span id="" class="flow-timestamp-ago">6 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=Topic:Unr4x0ic2ulbbgrs&topic_showPostId=uo15u9h3g605sung#flow-post-uo15u9h3g605sung"><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-uvg7ehtl8j89p3dx" class="flow-post" data-flow-id="uvg7ehtl8j89p3dx" > <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="{"dsr":[0,6,0,0]}">yes ;)</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Unr4x0ic2ulbbgrs&action=reply&topic_postId=unr4x0ic2ulbbgrs#flow-post-unr4x0ic2ulbbgrs" 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=Topic:Unr4x0ic2ulbbgrs&action=history" class="flow-timestamp-anchor"> <span datetime="1551905185" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">20:46, 6 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Unr4x0ic2ulbbgrs&topic_showPostId=uvg7ehtl8j89p3dx#flow-post-uvg7ehtl8j89p3dx"><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=Topic:Unr4x0ic2ulbbgrs&action=reply&topic_postId=unr4x0ic2ulbbgrs#flow-post-unr4x0ic2ulbbgrs-form-content" id="flow-reply-unr4x0ic2ulbbgrs" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="unr4x0ic2ulbbgrs" /> <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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-unr4x0ic2ulbbgrs-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to "Should a layered architecture be part of the engineering principles?"" 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=Topic:Unr4x0ic2ulbbgrs&action=reply&topic_postId=unr4x0ic2ulbbgrs#flow-post-unr4x0ic2ulbbgrs-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to "Should a layered architecture be part of the engineering principles?"</a> </div> <div class="flow-topic flow-load-interactive" id="flow-topic-uupsn72f6pq7xiyp" data-flow-id="uupsn72f6pq7xiyp" data-flow-load-handler="topic" data-flow-toc-scroll-target=".flow-topic-titlebar" data-flow-topic-timestamp-updated="1551905140000" > <div class="flow-topic-titlebar"> <div class="flow-topic-titlebar-container"> <h2 class="flow-topic-title flow-load-interactive " data-flow-topic-title="Definition of MUST/MAY/SHOULD" data-flow-load-handler="topicTitle" > Definition of MUST/MAY/SHOULD</h2> <div class="flow-topic-meta"> 2 comments • <a href="//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp&action=history" class="flow-timestamp-anchor"> <span datetime="1551905140" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">20:45, 6 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uupsn72f6pq7xiyp&action=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:Uupsn72f6pq7xiyp"><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=Topic:Uupsn72f6pq7xiyp&action=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-uupsn72f6toa5mwx" class="flow-post" data-flow-id="uupsn72f6toa5mwx" > <div class="flow-post-main"> <div class="flow-error-container"> </div> <span class="flow-author"> <a href="/wiki/User:BDavis_(WMF)" class="mw-userlink"> <bdi>BDavis (WMF)</bdi></a><span class="mw-usertoollinks flow-pipelist"> (<span><a href="/wiki/User_talk:BDavis_(WMF)" class="" title="User talk:BDavis (WMF)">talk</a></span><span><a href="/wiki/Special:Contributions/BDavis_(WMF)" title="Contributions/BDavis (WMF)">contribs</a></span>) </span> </span> <article class="flow-post-content mw-parser-output"><p data-parsoid="{"dsr":[0,274,0,0]}">Are the MUST/MAY/SHOULD keywords intended to be interpreted according to <a rel="nofollow mw:ExtLink" class="external free" href="https://www.ietf.org/rfc/rfc2119.txt" data-parsoid="{"stx":"url","dsr":[73,109,0,0]}">https://www.ietf.org/rfc/rfc2119.txt</a>? If so, this should be explicitly stated in the document. If not, the intended meanings MUST be defined in the document or a prominantly linked definition document.</p></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp&action=reply&topic_postId=uupsn72f6toa5mwx#flow-post-uupsn72f6toa5mwx" 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=Topic:Uupsn72f6pq7xiyp&action=history" class="flow-timestamp-anchor"> <span datetime="1550880854" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">00:14, 23 February 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uupsn72f6pq7xiyp&topic_showPostId=uupsn72f6toa5mwx#flow-post-uupsn72f6toa5mwx"><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-uvg7czovqbgbf8d1" class="flow-post" data-flow-id="uvg7czovqbgbf8d1" > <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="{"dsr":[0,104,0,0]}">Ideally yes, but see my comment about the interpretation of MUST in the "More MUST, less SHOULD" thread.</p></section></article> <div class="flow-post-meta"> <span class="flow-post-meta-actions"> <a href="//www.mediawiki.org/w/index.php?title=Topic:Uupsn72f6pq7xiyp&action=reply&topic_postId=uupsn72f6pq7xiyp#flow-post-uupsn72f6pq7xiyp" 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=Topic:Uupsn72f6pq7xiyp&action=history" class="flow-timestamp-anchor"> <span datetime="1551905140" class="flow-timestamp flow-load-interactive" data-flow-load-handler="timestamp"> <span class="flow-timestamp-user-formatted">20:45, 6 March 2019</span> <span id="" class="flow-timestamp-ago">5 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=Topic:Uupsn72f6pq7xiyp&topic_showPostId=uvg7czovqbgbf8d1#flow-post-uvg7czovqbgbf8d1"><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=Topic:Uupsn72f6pq7xiyp&action=reply&topic_postId=uupsn72f6pq7xiyp#flow-post-uupsn72f6pq7xiyp-form-content" id="flow-reply-uupsn72f6pq7xiyp" > <input type="hidden" name="wpEditToken" value="+\" /> <input type="hidden" name="topic_replyTo" value="uupsn72f6pq7xiyp" /> <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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">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%3AWikimedia_Engineering_Architecture_Principles">log in</a> or <a class="external text" href="https://www.mediawiki.org/wiki/Special:UserLogin/signup?returnto=Talk%3AWikimedia_Engineering_Architecture_Principles">create an account</a>.<span class="flow-ui-tooltip-triangle"></span> </div> </div> </flowprogressivescript></div> <div class="flow-editor"> <textarea id="flow-post-uupsn72f6pq7xiyp-form-content" name="topic_content" required class="mw-ui-input flow-click-interactive mw-editfont-monospace" type="text" placeholder="Reply to "Definition of MUST/MAY/SHOULD"" 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=Topic:Uupsn72f6pq7xiyp&action=reply&topic_postId=uupsn72f6pq7xiyp#flow-post-uupsn72f6pq7xiyp-form-content" title="Reply" class="flow-ui-input-replacement-anchor mw-ui-input" >Reply to "Definition of MUST/MAY/SHOULD"</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="< .flow-topics" data-flow-template="flow_topiclist_loop.partial" href="//www.mediawiki.org/w/index.php?title=Talk:Wikimedia_Engineering_Architecture_Principles&topiclist_offset-dir=fwd&topiclist_limit=10&topiclist_offset=20190306204540&topiclist_sortby=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:Wikimedia_Engineering_Architecture_Principles">https://www.mediawiki.org/wiki/Talk:Wikimedia_Engineering_Architecture_Principles</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:Wikimedia_Engineering_Architecture_Principles&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-pj8zz","wgBackendResponseTime":1288});});</script> </body> </html>