CINXE.COM
Readers/Structured Content - 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-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Readers/Structured Content - 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-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":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""], "wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"7cbad8d3-be3d-4c35-aa60-aaff82dca7a1","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Readers/Structured_Content","wgTitle":"Readers/Structured Content","wgCurRevisionId":6653767,"wgRevisionId":6653767,"wgArticleId":1046465,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["WMF Projects 2021q1","WMF Projects 2021q2","WMF Projects 2021q3","WMF Projects 2021q4","WMF Projects 2022q1","WMF Projects 2022q2","WMF Projects 2022q3","WMF Projects 2022q4","WMF Projects 2023q1","WMF Projects 2023q2","WMF Projects 2023q3","WMF Projects 2023q4","WMF Projects 2024q1","WMF Projects 2024q2","WMF Projects 2024q3","WMF Projects 2024q4","WMF Projects","Media handling extensions"],"wgPageViewLanguage":"en", "wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Readers/Structured_Content","wgRelevantArticleId":1046465,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgRedirectedFrom":"Readers/Structured_Data","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":20000,"wgInternalRedirectTargetUrl":"/wiki/Readers/Structured_Content","wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgDiscussionToolsFeaturesEnabled":{"replytool":true,"newtopictool":true,"sourcemodetoolbar":true,"topicsubscription":false,"autotopicsub":false,"visualenhancements": false,"visualenhancements_reply":false,"visualenhancements_pageframe":false},"wgDiscussionToolsFallbackEditMode":"visual","wgULSPosition":"personal","wgULSisCompactLinksEnabled":true,"wgVector2022LanguageInHeader":false,"wgULSisLanguageSelectorEmpty":false,"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","ext.discussionTools.init.styles":"ready","oojs-ui-core.styles":"ready","oojs-ui.styles.indicators":"ready","mediawiki.widgets.styles":"ready","oojs-ui-core.icons":"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","wikibase.client.init":"ready","ext.wikimediaBadges" :"ready"};RLPAGEMODULES=["mediawiki.action.view.redirect","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.syntaxhighlight-copy","ext.urlShortener.toolbar","ext.centralauth.centralautologin","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.discussionTools.init","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.discussionTools.init.styles%7Cext.uls.pt%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&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="Readers/Structured Content - MediaWiki"> <meta property="og:type" content="website"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//m.mediawiki.org/wiki/Readers/Structured_Content"> <link rel="alternate" type="application/x-wiki" title="Edit" href="/w/index.php?title=Readers/Structured_Content&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/Readers/Structured_Content"> <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="ext-discussiontools-replytool-enabled ext-discussiontools-newtopictool-enabled ext-discussiontools-sourcemodetoolbar-enabled skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Readers_Structured_Content rootpage-Readers 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="p-lang" class="vector-menu mw-portlet mw-portlet-lang" > <div class="vector-menu-heading"> In other languages </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-add wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:NewItem?site=mediawikiwiki&page=Readers%2FStructured+Content" title="Add interlanguage links" class="wbc-editpage">Add links</a></span></div> </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=Readers%2FStructured+Content" 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=Readers%2FStructured+Content" 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=Readers%2FStructured+Content" 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=Readers%2FStructured+Content" 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 class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Beginning</div> </a> </li> <li id="toc-Projects" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Projects"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Projects</span> </div> </a> <button aria-controls="toc-Projects-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Projects subsection</span> </button> <ul id="toc-Projects-sublist" class="vector-toc-list"> <li id="toc-Inactive_and_semi-active_projects" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Inactive_and_semi-active_projects"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1</span> <span>Inactive and semi-active projects</span> </div> </a> <ul id="toc-Inactive_and_semi-active_projects-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Team_Documentation" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Team_Documentation"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Team Documentation</span> </div> </a> <button aria-controls="toc-Team_Documentation-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Team Documentation subsection</span> </button> <ul id="toc-Team_Documentation-sublist" class="vector-toc-list"> <li id="toc-Team_process/working_agreements" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Team_process/working_agreements"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Team process/working agreements</span> </div> </a> <ul id="toc-Team_process/working_agreements-sublist" class="vector-toc-list"> <li id="toc-Phabricator_Boards" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Phabricator_Boards"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1.1</span> <span>Phabricator Boards</span> </div> </a> <ul id="toc-Phabricator_Boards-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Daily_Work" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Daily_Work"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1.2</span> <span>Daily Work</span> </div> </a> <ul id="toc-Daily_Work-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Regular_Communication" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Regular_Communication"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1.3</span> <span>Regular Communication</span> </div> </a> <ul id="toc-Regular_Communication-sublist" class="vector-toc-list"> <li id="toc-Slack_Channels" class="vector-toc-list-item vector-toc-level-4"> <a class="vector-toc-link" href="#Slack_Channels"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1.3.1</span> <span>Slack Channels</span> </div> </a> <ul id="toc-Slack_Channels-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Creating_New_Tickets" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Creating_New_Tickets"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1.4</span> <span>Creating New Tickets</span> </div> </a> <ul id="toc-Creating_New_Tickets-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Meetings" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Meetings"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Meetings</span> </div> </a> <ul id="toc-Meetings-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Code_review" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Code_review"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>Code review</span> </div> </a> <ul id="toc-Code_review-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Chores" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Chores"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.4</span> <span>Chores</span> </div> </a> <ul id="toc-Chores-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Vagrant_Development_Environment_Setup" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Vagrant_Development_Environment_Setup"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Vagrant Development Environment Setup</span> </div> </a> <button aria-controls="toc-Vagrant_Development_Environment_Setup-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Vagrant Development Environment Setup subsection</span> </button> <ul id="toc-Vagrant_Development_Environment_Setup-sublist" class="vector-toc-list"> <li id="toc-M1" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#M1"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>M1</span> </div> </a> <ul id="toc-M1-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Intel_Mac" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Intel_Mac"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>Intel Mac</span> </div> </a> <ul id="toc-Intel_Mac-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Readers/Structured Content</span></h1> <div class="mw-indicators"> <div id="mw-indicator-phabricator-project" class="mw-indicator"><div class="mw-parser-output"><div class="mw-parser-output"><style data-mw-deduplicate="TemplateStyles:r6605561">.mw-parser-output .tpl-badge{background-color:var(--background-color-progressive-subtle,#eaf3ff);color:var(--color-base,#202122);border-radius:10px;display:inline-block;font-size:90%;padding:5px 8px}</style><div class="tpl-badge"><a href="/wiki/Special:MyLanguage/Phabricator" title="Special:MyLanguage/Phabricator">Issue tracker</a>: <a href="https://phabricator.wikimedia.org/tag/structured-data-backlog/" class="extiw" title="phab:tag/structured-data-backlog/"><b>#Structured-Data-Backlog</b></a></div></div></div></div> </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="selected vector-tab-noicon mw-list-item"><a href="/wiki/Readers/Structured_Content" title="View the content page [c]" accesskey="c"><span>Page</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Readers/Structured_Content" rel="discussion" title="Discussion about the content page [t]" accesskey="t"><span>Discussion</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Readers/Structured_Content"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Readers/Structured_Content&action=edit" title="Edit the source code of this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Readers/Structured_Content&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Readers/Structured_Content"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Readers/Structured_Content&action=edit" title="Edit the source code of this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Readers/Structured_Content&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/Readers/Structured_Content" 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/Readers/Structured_Content" 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-permalink" class="mw-list-item"><a href="/w/index.php?title=Readers/Structured_Content&oldid=6653767" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Readers/Structured_Content&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Readers%2FStructured_Content&id=6653767&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FReaders%2FStructured_Content"><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%2FReaders%2FStructured_Content"><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=Readers%2FStructured+Content"><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=Readers%2FStructured_Content&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=Readers/Structured_Content&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 id="siteSub" class="noprint">From mediawiki.org</div> </div> <div id="contentSub"><div id="mw-content-subtitle"><div class="subpages">< <bdi dir="ltr"><a href="/wiki/Readers" title="Readers">Readers</a></bdi></div><span class="mw-redirectedfrom">(Redirected from <a href="/w/index.php?title=Readers/Structured_Data&redirect=no" class="mw-redirect" title="Readers/Structured Data">Readers/Structured Data</a>)</span></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r6651102">.mw-parser-output .infobox{box-sizing:border-box;border:2px solid var(--border-color-base,#a2a9b1);width:280px;border-collapse:collapse;border-spacing:0;background-color:white;color:#333;clear:right;float:right;margin:0 0 0.5em 0.5em}.mw-parser-output .infobox-rtl{clear:left;float:left;margin:0 0.5em 0.5em 0}.mw-parser-output .infobox th{text-align:left;padding:0.2em 0.5em;vertical-align:top}.mw-parser-output .infobox-rtl th{text-align:right}@media(max-width:719px){body.mediawiki .mw-parser-output .infobox{float:none;clear:both;width:100%;margin:0 0 .5em 0}}.mw-parser-output .infobox td{border:none;padding:0.2em 0.5em;vertical-align:top}.mw-parser-output .infobox-header{background-color:#a2a9b1;color:#FFF;text-align:left}.mw-parser-output .infobox-header a{color:#FFF}.mw-parser-output .infobox-header td,.mw-parser-output .infobox-header th{padding:0.5em 0.5em}.mw-parser-output .infobox-header img{padding:0 0.2em 0 0.5em}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox{background-color:inherit;color:inherit}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox{background-color:inherit;color:inherit}}</style><style data-mw-deduplicate="TemplateStyles:r6651116">.mw-parser-output .wmf-engineering-project-box{border:1px solid #eaecf0;padding:.2em;width:300px;background:#f8f9fa;color:#222}.mw-parser-output .wmf-engineering-project-box-catlink{font-size:smaller;margin:.2em;text-align:center}.mw-parser-output .wmf-engineering-project-box-title{font-size:1.2em;margin:.2em;background:#14866d;color:#fff;padding:.5em;text-align:center;font-weight:bold}.mw-parser-output .wmf-engineering-project-box-description{margin:.2em;padding:.2em;font-style:italic}.mw-parser-output .wmf-engineering-project-box-data{font-size:.9em;margin:.2em 0;width:100%}.mw-parser-output .wmf-engineering-project-box-data th{width:25%;font-weight:normal}.mw-parser-output .wmf-engineering-project-box-previous,.mw-parser-output .wmf-engineering-project-box-next{font-size:smaller;margin:.2em}.mw-parser-output .infobox-ltr .wmf-engineering-project-box-previous,.mw-parser-output .infobox-rtl .wmf-engineering-project-box-next{float:left}.mw-parser-output .infobox-ltr .wmf-engineering-project-box-next,.mw-parser-output .infobox-rtl .wmf-engineering-project-box-previous{float:right}@media screen{html.skin-theme-clientpref-night .mw-parser-output .wmf-engineering-project-box{background:transparent;color:inherit}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .wmf-engineering-project-box{background:transparent;color:inherit}}</style> <table class="infobox infobox-ltr wmf-engineering-project-box plainlinks"><tbody><tr><td> <div class="nomobile wmf-engineering-project-box-catlink"><a href="/wiki/Special:MyLanguage/Category:WMF_Projects" title="Special:MyLanguage/Category:WMF Projects">Wikimedia Foundation projects</a><span style="display:none"><a href="/wiki/Category:WMF_Projects" title="Category:WMF Projects"> </a></span></div> <div class="wmf-engineering-project-box-title">Structured Content team</div> <div class="wmf-engineering-project-box-description">The <b>Structured Content team</b> in the <a href="/wiki/Wikimedia_Product" title="Wikimedia Product">Wikimedia Product</a> department at the Wikimedia Foundation focuses on focuses on improving media quality on Wikimedia Commons.</div> <table class="wmf-engineering-project-box-data"> <tbody><tr> <th scope="row">Start:</th> <td>2021-02-01</td> </tr> <tr> <th scope="row">Team members:</th> <td><a href="/wiki/User:MarkTraceur" title="User:MarkTraceur">Mark Holmquist</a>, <a href="/w/index.php?title=User:AUgolnikova_(WMF)&action=edit&redlink=1" class="new" title="User:AUgolnikova (WMF) (page does not exist)">Alexandra Ugolnikova</a>, <a href="/wiki/User:MFossati_(WMF)" title="User:MFossati (WMF)">Marco Fossati</a>, <a href="/wiki/User:Mmullie_(WMF)" title="User:Mmullie (WMF)">Matthias Mullie</a>, <a href="/wiki/User:CParle_(WMF)" title="User:CParle (WMF)">Cormac Parle</a>, <a href="/wiki/User:Etonkovidova_(WMF)" title="User:Etonkovidova (WMF)">Elena Tonkovidova</a>, <a href="/wiki/User:SPatel_(WMF)" title="User:SPatel (WMF)">Sneha Patel</a>, <a href="/wiki/User:Sannita_(WMF)" title="User:Sannita (WMF)">Luca Martinelli</a></td> </tr> <tr> <th scope="row">Backlog:</th> <td><a href="https://phabricator.wikimedia.org/tag/structured-data-backlog/" class="extiw" title="phab:tag/structured-data-backlog/">#Structured-Data-Backlog</a></td> </tr> <tr class="mw-empty-elt"> </tr></tbody></table></td></tr></tbody></table> <p>The <b>Structured Content team</b> in the <a href="/wiki/Wikimedia_Product" title="Wikimedia Product">Wikimedia Product</a> department at the Wikimedia Foundation that focuses on improving media quality on Wikimedia Commons, which includes improving the upload process (such as <a href="https://commons.wikimedia.org/wiki/Commons:WMF_support_for_Commons/Upload_Wizard_Improvements" class="extiw" title="c:Commons:WMF support for Commons/Upload Wizard Improvements">UploadWizard improvements</a>), detecting <a href="https://commons.wikimedia.org/wiki/Commons:WMF_support_for_Commons/Upload_Wizard_Improvements/Logo_detection" class="extiw" title="c:Commons:WMF support for Commons/Upload Wizard Improvements/Logo detection">potentially problematic uploads</a> and improving media metadata. </p><p>It previously focused on building features that use and allow creation of structured data associated with MediaWiki pages. </p> <meta property="mw:PageProp/toc"/> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Projects" data-mw-thread-id="h-Projects"><span data-mw-comment-start="" id="h-Projects"></span>Projects<span data-mw-comment-end="h-Projects"></span></h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=1" title="Edit section: Projects"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Projects","replies":["h-Inactive_and_semi-active_projects-Projects"]}}--></div> <p>To see recent notable changes and releases by this team, visit the <a href="/wiki/Readers/Structured_Content/Release_Timeline" title="Readers/Structured Content/Release Timeline">Release Timeline</a>. </p><p>The team is currently focusing on <a href="https://commons.wikimedia.org/wiki/Commons:WMF_support_for_Commons/Upload_Wizard_Improvements" class="extiw" title="c:Commons:WMF support for Commons/Upload Wizard Improvements">improving the current user experience with UploadWizard</a> and developing a <a href="https://commons.wikimedia.org/wiki/Commons:WMF_support_for_Commons/Upload_Wizard_Improvements/Logo_detection" class="extiw" title="c:Commons:WMF support for Commons/Upload Wizard Improvements/Logo detection">tool to automatically detect logos</a> when uploaded on Commons. </p><p>The team was previously focused on (from August 2017 to Dec 2019) on <a href="https://commons.wikimedia.org/wiki/Commons:Structured_data" class="extiw" title="c:Commons:Structured data">Structured Data on Commons</a>, and then (from Feb 2021 to June 2023) on the <a href="/wiki/Structured_data_across_Wikimedia" class="mw-redirect" title="Structured data across Wikimedia">Structured Data Across Wikimedia</a> (SDAW) grant-funded program. </p><p>Projects in the SDAW program include: </p> <ul><li><a href="https://commons.wikimedia.org/wiki/Commons:Structured_data/Media_search" class="extiw" title="c:Commons:Structured data/Media search">MediaSearch</a></li> <li><a href="/wiki/Structured_Data_Across_Wikimedia/Image_Suggestions" title="Structured Data Across Wikimedia/Image Suggestions">Image Suggestions</a></li> <li><a href="/wiki/Structured_Data_Across_Wikimedia/Search_Improvements" title="Structured Data Across Wikimedia/Search Improvements">Search Improvements</a></li></ul> <p>We mostly work on the following extensions: </p> <ul><li><a href="/wiki/Extension:SearchVue" title="Extension:SearchVue">SearchVue</a></li> <li><a href="/wiki/Extension:MediaSearch" title="Extension:MediaSearch">MediaSearch</a></li> <li><a href="/wiki/Extension:WikibaseMediaInfo" title="Extension:WikibaseMediaInfo">Wikibase MediaInfo</a></li> <li><a href="/wiki/Extension:UploadWizard" title="Extension:UploadWizard">UploadWizard</a></li></ul> <div class="mw-heading mw-heading3"><h3 id="Inactive_and_semi-active_projects" data-mw-thread-id="h-Inactive_and_semi-active_projects-Projects"><span data-mw-comment-start="" id="h-Inactive_and_semi-active_projects-Projects"></span>Inactive and semi-active projects<span data-mw-comment-end="h-Inactive_and_semi-active_projects-Projects"></span></h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=2" title="Edit section: Inactive and semi-active projects"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Some members of the team were involved in development on these projects (when we were called the Multimedia team). They are not actively involved at the moment, but might be able to help if you have a question: </p> <ul><li><a href="/wiki/Extension:3D" title="Extension:3D">3D file support</a></li> <li><a href="/wiki/Multimedia/Media_Viewer" class="mw-redirect" title="Multimedia/Media Viewer">Media Viewer</a></li> <li><a href="/wiki/Extension:FileAnnotations" title="Extension:FileAnnotations">FileAnnotations</a></li> <li><a href="https://phabricator.wikimedia.org/T107595" class="extiw" title="phab:T107595">Content Streams</a></li> <li>Multimedia-related infrastructure (<i>e.g.</i> image scalers, video transcoding, <i>etc.</i>)</li></ul> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Team_Documentation" data-mw-thread-id="h-Team_Documentation"><span data-mw-comment-start="" id="h-Team_Documentation"></span>Team Documentation<span data-mw-comment-end="h-Team_Documentation"></span></h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=3" title="Edit section: Team Documentation"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Team_Documentation","replies":["h-Team_process\/working_agreements-Team_Documentation","h-Meetings-Team_Documentation","h-Code_review-Team_Documentation","h-Chores-Team_Documentation"]}}--></div> <div class="mw-heading mw-heading3"><h3 id="Team_process/working_agreements" data-mw-thread-id="h-Team_process/working_agreements-Team_Documentation"><span id="Team_process.2Fworking_agreements"></span><span data-mw-comment-start="" id="h-Team_process/working_agreements-Team_Documentation"></span>Team process/working agreements<span data-mw-comment-end="h-Team_process/working_agreements-Team_Documentation"></span></h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=4" title="Edit section: Team process/working agreements"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>We deliver features incrementally.</li> <li>If the acceptance criteria of a phab ticket change (for example as a result of discussion in the ticket's comments), <b>the ticket description is expected to be updated</b> to reflect the change.</li></ul> <div class="mw-heading mw-heading4"><h4 id="Phabricator_Boards" data-mw-thread-id="h-Phabricator_Boards-Team_process/working_agreements"><span data-mw-comment-start="" id="h-Phabricator_Boards-Team_process/working_agreements"></span>Phabricator Boards<span data-mw-comment-end="h-Phabricator_Boards-Team_process/working_agreements"></span></h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=5" title="Edit section: Phabricator Boards"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>The <a href="https://phabricator.wikimedia.org/project/board/4223/" class="extiw" title="phab:project/board/4223/">Structured Data Backlog board</a> is our primary backlog. It is managed by the Product Manager and Program Manager.</li></ul> <ul><li>The <a href="https://phabricator.wikimedia.org/project/view/4232/" class="extiw" title="phab:project/view/4232/">Current Work board</a> is for in-progress development. It is managed by the team as a whole. <ul><li>Each column on the Current Work board should be in order of priority, from most important at the top to least important at the bottom. Tickets should automatically be added to the bottom of a column unless it is urgent or high priority, when it can be added to the top.</li> <li>Columns on the Current Work board include: <ul><li>Incoming: Where tickets automatically when added to this board.</li> <li>Epics: Reflective of the big projects the team is currently working on.</li> <li>Needs Design: Tickets that require input from the designer.</li> <li>Needs CL Input: Tickets that require input from the Community Liaison.</li> <li>Ready for Estimation: Tickets that require estimation. Tickets are moved to the Ready for Estimation column when their design and acceptance criteria is complete and they are ready for work.</li> <li>Ready for Development: Tickets that are ready to be worked.</li> <li>Blocked: Tickets that are blocked, from outside the team or until other work is complete.</li> <li>Doing: Tickets that are currently in progress.</li> <li>Design QA: Tickets that require approval from the designer.</li> <li>Code Review: Tickets that require code review.</li> <li>Needs QA: Tickets that require QA in beta.</li> <li>Verify on Production: Tickets that require QA in production.</li> <li>Deployment/Config: Tickets that require deployment outside of the regular train schedule.</li></ul></li></ul></li></ul> <div class="mw-heading mw-heading4"><h4 id="Daily_Work" data-mw-thread-id="h-Daily_Work-Team_process/working_agreements"><span data-mw-comment-start="" id="h-Daily_Work-Team_process/working_agreements"></span>Daily Work<span data-mw-comment-end="h-Daily_Work-Team_process/working_agreements"></span></h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=6" title="Edit section: Daily Work"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Each day, within the columns relevant to you, and for the tickets you feel qualified working on: <ul><li>Work through columns from right to left: <ul><li>insofar relevant, validate things in “Needs QA”;</li> <li>then review tickets in “Code review”;</li> <li>then continue whatever you already have in “Doing”;</li> <li>then verify whether tickets in “blocked” are, in fact, still blocked;</li> <li>then pick up new work from the top of “Ready for Development”.</li></ul></li></ul></li> <li>Within each column, work from top to bottom, picking up the first (highest priority) ticket you feel qualified to work on.</li> <li>Update all tickets as soon as you do something that changes the state of that work, e.g: <ul><li>As soon as you pick up work, assign yourself & move into the relevant column</li> <li>When merging a patch, move the relevant ticket out of “Code review”</li> <li>If you do anything that is not 100% self-explanatory (and actions rarely are) then a comment on the ticket should accompany every action taken.</li></ul></li> <li>When patches are big or risky, engineers should alert QA and have them review both before and right after merging. <ul><li>If QA doesn't respond or is too busy to review, don't merge. If it's urgent, alert program management or engineer management to help find a solution.</li></ul></li> <li>Ensure there is a clear testing script methodology for engineers to run through before all stages: code review, deploy, QA. <ul><li>Before a patch is open for review, add a QA section with acceptance criteria and tests that should be run.</li></ul></li> <li>Prioritize code review before new work.</li></ul> <div class="mw-heading mw-heading4"><h4 id="Regular_Communication" data-mw-thread-id="h-Regular_Communication-Team_process/working_agreements"><span data-mw-comment-start="" id="h-Regular_Communication-Team_process/working_agreements"></span>Regular Communication<span data-mw-comment-end="h-Regular_Communication-Team_process/working_agreements"></span></h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=7" title="Edit section: Regular Communication"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>When appropriate, have conversations in a visible Slack channel (e.g. #sd-eng or #structured-data), so that others can follow along if they’re interested.</li> <li>Any outcomes or decisions from conversations that impact the team, either publicly on Slack or in smaller venues, should be shared with the team publicly and documented in the relevant Phabricator ticket.</li></ul> <ul><li>Standup (every day except Friday): <ul><li>Every team member posts standup notes in the #sd-standup slack channel. Standup should include updates about your work that are relevant to other team members, but do not need to include everything you did that day.</li> <li>In addition to stating what you’re working on: <ul><li>Share any relevant information you learned about, that can be delivered in a short update without too much context. E.g.: <ul><li>“Team X has done Y, which should help us for Z”</li> <li>“Deployment didn’t go through so our feature is not yet live”</li> <li>“I attended X meeting, and Y was the outcome”</li></ul></li></ul></li> <li>Post any big interruptions as soon as you are able to communicate it, and once again when it actually happens (e.g. vacation, on another project for a good part of your time, parental leave).</li></ul></li></ul> <div class="mw-heading mw-heading5"><h5 id="Slack_Channels" data-mw-thread-id="h-Slack_Channels-Regular_Communication"><span data-mw-comment-start="" id="h-Slack_Channels-Regular_Communication"></span>Slack Channels<span data-mw-comment-end="h-Slack_Channels-Regular_Communication"></span></h5><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=8" title="Edit section: Slack Channels"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Channel Name: #sc-eng <ul><li>Privacy: Private</li> <li>Purpose: A place for SD engineers to discuss structured data team technical implementation.</li> <li>Audience: Mainly be SD engineers and QA. Others can watch for relevant discussions but should mainly engage with engineers in the main #structured-data channel.</li></ul></li></ul> <ul><li>Channel Name: #sc-search <ul><li>Privacy: Private</li> <li>Purpose: A channel for discussing the Search Improvements project, and all work and topics shared between the Structured Data and Search teams.</li> <li>Audience: SD & Search engineers, QA, PM, PgM, designers, data analysts, and Community Relations Specialists; as well as directors in those areas who are actively involved with the teams.</li></ul></li></ul> <ul><li>Channel Name: #sc-standup <ul><li>Privacy: Private</li> <li>Purpose: A place for all members of the SD team to post daily updates about their work that is relevant to other team members.</li> <li>Audience: SD team engineers, QA, PM, PgM, designer, data analyst, and CRS.</li></ul></li></ul> <ul><li>Channel Name: #structured-content <ul><li>Privacy: Private</li> <li>Purpose: General conversation related to the Structured Data team and its work.</li> <li>Audience: SD engineers, QA, PM, PgM, designer, data analyst, and CRS; as well as directors in those areas who are actively involved with the team.</li></ul></li></ul> <ul><li>Channel Name: #image-suggestions-and-sections <ul><li>Privacy: Open to WMF internally</li> <li>Purpose: A cross team channel to discuss the image suggestions and section topics projects.</li> <li>Audience: Anyone at WMF who is interested can join, but it should mainly be folks from the teams working on section topics and image suggestions: SD, Search, Growth, Android, and PET.</li></ul></li></ul> <div class="mw-heading mw-heading4"><h4 id="Creating_New_Tickets" data-mw-thread-id="h-Creating_New_Tickets-Team_process/working_agreements"><span data-mw-comment-start="" id="h-Creating_New_Tickets-Team_process/working_agreements"></span>Creating New Tickets<span data-mw-comment-end="h-Creating_New_Tickets-Team_process/working_agreements"></span></h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=9" title="Edit section: Creating New Tickets"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>All members of the team can create new tickets at any time. There are templates in the menu of the backlog to assist with this.</li> <li>New tickets should be tagged with the #structured-data-backlog tag, which will put it in the “needs triage” column of the backlog, to be attended to at backlog grooming.</li> <li>New tickets should contain a user story, as much description as possible, and as much acceptance criteria as possible. Anything you don’t know at the time can be added later, but should be added before estimation.</li> <li>If a ticket is urgent, it can be added directly to the current work board to the appropriate column, but the team should be alerted via Slack.</li> <li>Spin-off tickets that are essentially part of another ticket (that has already been groomed) but are tracked separately for technical reasons (e.g. requires changes across multiple extensions) can also be added directly to the current work board in the appropriate column. However, if it is new work, it should be added to the backlog and put through the process. Spin-off tickets should not require estimation, since theoretically the work is part of another ticket that already has an estimate.</li></ul> <div class="mw-heading mw-heading3"><h3 id="Meetings" data-mw-thread-id="h-Meetings-Team_Documentation"><span data-mw-comment-start="" id="h-Meetings-Team_Documentation"></span>Meetings<span data-mw-comment-end="h-Meetings-Team_Documentation"></span></h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=10" title="Edit section: Meetings"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Backlog Grooming (every Monday): <ul><li>Attended by the tech lead, designer, QA (optional), PgM, and PM.</li> <li>Review each column on the current work board, from right to left, to see if anything needs to change based on circumstances or priorities. If so, move the ticket and inform the team.</li> <li>Review the “needs triage” column on the backlog. <ul><li>Ensure that each ticket has the necessary detail and full acceptance criteria.</li> <li>Discuss the priority of each ticket, and move each ticket to the appropriate column in the backlog, or to “Needs Estimation” on the Current Work board, in priority order.</li></ul></li> <li>Discussions outside of backlog grooming tasks should not be held in this meeting, because it decreases visibility to the team.</li></ul></li></ul> <ul><li>Project Meeting (every other Tuesday): <ul><li>The entire team attends this meeting.</li> <li>This meeting is used to build shared understanding, and is dedicated to catch all of us up on where we are right now and what we expect the short-term future to look like. This is a great venue to raise questions or issues before they become blockers. <ul><li>Other topics at this meeting can include sharing designs, discussing individual decisions or ideas, or ironing out acceptance criteria on tickets that require discussion.</li> <li>Anyone can add topics to discuss at this meeting in the agenda document linked in the calendar invite.</li></ul></li></ul></li></ul> <ul><li>Retrospective (every other Tuesday): <ul><li>The entire team attends this meeting.</li> <li>This meeting is used to reveal kudos and facts or feelings that impact the team, and discuss any proposed improvements or solutions. The retro should focus on actionable change, which means sometimes deeper conversations should happen after.</li></ul></li></ul> <ul><li>Estimation Meeting (every other Wednesday): <ul><li>This meeting is used to estimate tickets in the “Ready for Estimation” column.</li> <li>The team estimates the tickets in the "Ready for Estimation" column using t-shirt sizing.</li> <li>Once estimated, tickets are moved to the Ready for Development column. By default, tickets are moved to the bottom of the Ready for Development column, unless they are urgent or high priority, in which case they go at the top.</li> <li>If something needs to be estimated more urgently than every two weeks, we can hold an async estimation on Slack in the #structureddata channel.</li></ul></li></ul> <ul><li>Office Hours (every other Wednesday): <ul><li>This meeting is attended by team engineers. Others are also welcome to join, if they want to discuss or learn about technical topics.</li> <li>The purpose of this meeting is to have a venue to discuss technical topics.</li></ul></li></ul> <div class="mw-heading mw-heading3"><h3 id="Code_review" data-mw-thread-id="h-Code_review-Team_Documentation"><span data-mw-comment-start="" id="h-Code_review-Team_Documentation"></span>Code review<span data-mw-comment-end="h-Code_review-Team_Documentation"></span></h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=11" title="Edit section: Code review"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>As a general guideline, developers ought to start the day with up an hour of code review. </p><p>When something is ready for review, add other devs as reviewers. If something is <b>not</b> ready for review, you ought to indicate that with a <code>[WIP]</code> tag or a <code>-1</code> </p> <div class="mw-heading mw-heading3"><h3 id="Chores" data-mw-thread-id="h-Chores-Team_Documentation"><span data-mw-comment-start="" id="h-Chores-Team_Documentation"></span>Chores<span data-mw-comment-end="h-Chores-Team_Documentation"></span></h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=12" title="Edit section: Chores"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Readers/Structured_Data/Chore_list" class="mw-redirect" title="Readers/Structured Data/Chore list">Readers/Structured_Data/Chore_list</a></li></ul> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Vagrant_Development_Environment_Setup" data-mw-thread-id="h-Vagrant_Development_Environment_Setup"><span data-mw-comment-start="" id="h-Vagrant_Development_Environment_Setup"></span>Vagrant Development Environment Setup<span data-mw-comment-end="h-Vagrant_Development_Environment_Setup"></span></h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=13" title="Edit section: Vagrant Development Environment Setup"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Vagrant_Development_Environment_Setup","replies":["h-M1-Vagrant_Development_Environment_Setup","h-Intel_Mac-Vagrant_Development_Environment_Setup"]}}--></div> <p>Currently the structured data team uses mediawiki-vagrant for the majority of its work. </p> <div class="mw-heading mw-heading3"><h3 id="M1" data-mw-thread-id="h-M1-Vagrant_Development_Environment_Setup"><span data-mw-comment-start="" id="h-M1-Vagrant_Development_Environment_Setup"></span>M1<span data-mw-comment-end="h-M1-Vagrant_Development_Environment_Setup"></span></h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=14" title="Edit section: M1"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><code>git clone git@github.com:matthiasmullie/mediawiki-vagrant.git mw-vagrant</code><br/> <code>cd mw-vagrant</code><br/> <code>./setup.sh</code><br/> <code>vagrant config vagrant_ram 8192</code><br/> <code>vagrant up</code><br/> </p><p><br/> # eventgate (installed below as dependency for another role) requires another node version than what mw-vagrant ships with<br/> <code>vagrant hiera npm::node_version 10 && vagrant provision<br/></code> </p><p><br/> # this ends up pulling in eventgate which has some deps that (can) fail to compile; it all works, but the failure could impact other roles when provisioned simultaneously<br/> <code>vagrant roles enable cirrussearch --provision</code> </p><p><br/> # uploadwizard (titleblacklist, actually, one of its reps) fails to install after wikibase, so let's do this first<br/> <code>vagrant roles enable uploadwizard --provision</code><br/> </p><p><br/> # centralauth fails to install schema, which we'll do manually before other roles start to fail... vagrant roles enable centralauth --provision<br/> # note, looks like that failure is no longer true, and below no longer needed<br/> # vagrant ssh<br/> # cat /vagrant/mediawiki/extensions/CentralAuth/schema/mysql/tables-generated.sql | sql centralauth<br/> # exit # vagrant<br/> </p><p><br/> # First going to install wikidata and mediainfo<br/> <code>vagrant roles enable commons mediainfo wikibase_repo wikidata --provision</code> </p><p><br/> # install wb_items_per_site for all wikis<br/> <code>vagrant ssh</code><br/> <code>sed -i -i 's/, ips_site_page/, ips_site_page(200)/' </code><br/><code>/vagrant/mediawiki/extensions/Wikibase/repo/sql/mysql/wb_items_per_site.sql</code><br/> <code>/usr/local/bin/foreachwiki maintenance/patchSql.php </code><br/><code>/vagrant/mediawiki/extensions/Wikibase/repo/sql/mysql/wb_items_per_site.sql</code><br/> <code>sed -i -i 's/, ips_site_page(200)/, ips_site_page/' </code><br/><code>/vagrant/mediawiki/extensions/Wikibase/repo/sql/mysql/wb_items_per_site.sql</code><br/> <code>exit # vagrant</code><br/> </p><p><br/> # create account on commonswiki; login to that account on wikidatawiki; then grant sysop permissions via maintenance script<br/> <code>vagrant ssh</code><br/> <code>mwscript createAndPromote.php --wiki=commonswiki --sysop --force USERNAME password </code><br/> <code>mwscript createAndPromote.php --wiki=wikidatawiki --sysop --force USERNAME password </code><br/> <code>exit # vagrant </code><br/> </p><p><br/> # Install the remainder of the roles<br/> <code>vagrant roles enable commonsmetadata echo eventlogging kartographer mediasearch mobilefrontend multimediaviewer uls wikibasecirrussearch wikimediaevents --provision</code> </p> <div class="mw-heading mw-heading3"><h3 id="Intel_Mac" data-mw-thread-id="h-Intel_Mac-Vagrant_Development_Environment_Setup"><span data-mw-comment-start="" id="h-Intel_Mac-Vagrant_Development_Environment_Setup"></span>Intel Mac<span data-mw-comment-end="h-Intel_Mac-Vagrant_Development_Environment_Setup"></span></h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Readers/Structured_Content&action=edit&section=15" title="Edit section: Intel Mac"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐6f96f97888‐fq2mc Cached time: 20241113114416 Cache expiry: 2592000 Reduced expiry: false Complications: [show‐toc] DiscussionTools time usage: 0.019 seconds CPU time usage: 0.131 seconds Real time usage: 0.174 seconds Preprocessor visited node count: 337/1000000 Post‐expand include size: 7356/2097152 bytes Template argument size: 1337/2097152 bytes Highest expansion depth: 14/100 Expensive parser function count: 0/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 3100/5000000 bytes Lua time usage: 0.008/10.000 seconds Lua memory usage: 768301/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 96.494 1 Template:Wikimedia_engineering_project_information 100.00% 96.494 1 -total 26.67% 25.737 2 Template:Pagelang 26.53% 25.604 1 Template:Dir 17.76% 17.135 1 Template:Ptag 17.59% 16.974 1 Template:Ll 10.48% 10.114 2 Template:Translatable 6.15% 5.938 1 Template:Badge --> <!-- Saved in parser cache with key mediawikiwiki:pcache:idhash:1046465-0!canonical and timestamp 20241113114416 and revision id 6653767. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://www.mediawiki.org/w/index.php?title=Readers/Structured_Content&oldid=6653767">https://www.mediawiki.org/w/index.php?title=Readers/Structured_Content&oldid=6653767</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Categories</a>: <ul><li><a href="/wiki/Category:WMF_Projects" title="Category:WMF Projects">WMF Projects</a></li><li><a href="/wiki/Category:Media_handling_extensions" title="Category:Media handling extensions">Media handling extensions</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:WMF_Projects_2021q1" title="Category:WMF Projects 2021q1">WMF Projects 2021q1</a></li><li><a href="/wiki/Category:WMF_Projects_2021q2" title="Category:WMF Projects 2021q2">WMF Projects 2021q2</a></li><li><a href="/wiki/Category:WMF_Projects_2021q3" title="Category:WMF Projects 2021q3">WMF Projects 2021q3</a></li><li><a href="/wiki/Category:WMF_Projects_2021q4" title="Category:WMF Projects 2021q4">WMF Projects 2021q4</a></li><li><a href="/wiki/Category:WMF_Projects_2022q1" title="Category:WMF Projects 2022q1">WMF Projects 2022q1</a></li><li><a href="/wiki/Category:WMF_Projects_2022q2" title="Category:WMF Projects 2022q2">WMF Projects 2022q2</a></li><li><a href="/wiki/Category:WMF_Projects_2022q3" title="Category:WMF Projects 2022q3">WMF Projects 2022q3</a></li><li><a href="/wiki/Category:WMF_Projects_2022q4" title="Category:WMF Projects 2022q4">WMF Projects 2022q4</a></li><li><a href="/wiki/Category:WMF_Projects_2023q1" title="Category:WMF Projects 2023q1">WMF Projects 2023q1</a></li><li><a href="/wiki/Category:WMF_Projects_2023q2" title="Category:WMF Projects 2023q2">WMF Projects 2023q2</a></li><li><a href="/wiki/Category:WMF_Projects_2023q3" title="Category:WMF Projects 2023q3">WMF Projects 2023q3</a></li><li><a href="/wiki/Category:WMF_Projects_2023q4" title="Category:WMF Projects 2023q4">WMF Projects 2023q4</a></li><li><a href="/wiki/Category:WMF_Projects_2024q1" title="Category:WMF Projects 2024q1">WMF Projects 2024q1</a></li><li><a href="/wiki/Category:WMF_Projects_2024q2" title="Category:WMF Projects 2024q2">WMF Projects 2024q2</a></li><li><a href="/wiki/Category:WMF_Projects_2024q3" title="Category:WMF Projects 2024q3">WMF Projects 2024q3</a></li><li><a href="/wiki/Category:WMF_Projects_2024q4" title="Category:WMF Projects 2024q4">WMF Projects 2024q4</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 19 July 2024, at 15:19.</li> <li id="footer-info-copyright">Text is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-ShareAlike License</a>; additional terms may apply. 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=Readers/Structured_Content&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.config.set({"wgHostname":"mw-web.codfw.main-5fb746f978-nlbpm","wgBackendResponseTime":107,"wgDiscussionToolsPageThreads":[{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Projects","replies":[{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Inactive_and_semi-active_projects-Projects","replies":[]}]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Team_Documentation","replies":[{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Team_process/working_agreements-Team_Documentation","replies":[{"headingLevel":4,"name":"h-","type":"heading","level":0,"id":"h-Phabricator_Boards-Team_process/working_agreements","replies":[]},{"headingLevel":4,"name":"h-","type":"heading","level":0,"id":"h-Daily_Work-Team_process/working_agreements","replies":[]},{"headingLevel":4,"name":"h-","type":"heading","level":0,"id":"h-Regular_Communication-Team_process/working_agreements","replies":[{"headingLevel":5,"name":"h-","type":"heading","level":0,"id":"h-Slack_Channels-Regular_Communication","replies":[]}]},{"headingLevel":4,"name":"h-","type":"heading","level":0,"id":"h-Creating_New_Tickets-Team_process/working_agreements","replies":[]}]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Meetings-Team_Documentation","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Code_review-Team_Documentation","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Chores-Team_Documentation","replies":[]}]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Vagrant_Development_Environment_Setup","replies":[{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-M1-Vagrant_Development_Environment_Setup","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Intel_Mac-Vagrant_Development_Environment_Setup","replies":[]}]}],"wgPageParseReport":{"discussiontools":{"limitreport-timeusage":"0.019"},"limitreport":{"cputime":"0.131","walltime":"0.174","ppvisitednodes":{"value":337,"limit":1000000},"postexpandincludesize":{"value":7356,"limit":2097152},"templateargumentsize":{"value":1337,"limit":2097152},"expansiondepth":{"value":14,"limit":100},"expensivefunctioncount":{"value":0,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":3100,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 96.494 1 Template:Wikimedia_engineering_project_information","100.00% 96.494 1 -total"," 26.67% 25.737 2 Template:Pagelang"," 26.53% 25.604 1 Template:Dir"," 17.76% 17.135 1 Template:Ptag"," 17.59% 16.974 1 Template:Ll"," 10.48% 10.114 2 Template:Translatable"," 6.15% 5.938 1 Template:Badge"]},"scribunto":{"limitreport-timeusage":{"value":"0.008","limit":"10.000"},"limitreport-memusage":{"value":768301,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-6f96f97888-fq2mc","timestamp":"20241113114416","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>