CINXE.COM
How to become a MediaWiki hacker - 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>How to become a MediaWiki hacker - 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":"540e1766-cfb1-4ca3-bb27-48ac239f7ab5","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"How_to_become_a_MediaWiki_hacker","wgTitle":"How to become a MediaWiki hacker","wgCurRevisionId":6498783,"wgRevisionId":6498783,"wgArticleId":15934,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["MediaWiki development","MediaWiki technical documentation","New contributors"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"How_to_become_a_MediaWiki_hacker","wgRelevantArticleId":15934,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":["autoconfirmed"],"wgRestrictionMove":["autoconfirmed"],"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/How_to_become_a_MediaWiki_hacker","wgTranslatePageTranslation":"source","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,"wgWikibaseItemId":"Q83", "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.translate.tag.languages":"ready","ext.cite.styles":"ready","ext.tmh.player.styles":"ready","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.translate.edit.documentation.styles":"ready","ext.translate":"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","ext.cite.ux-enhancements", "mediawiki.page.media","ext.tmh.player","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.translate.pagetranslation.uls","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.discussionTools.init","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.compactlinks","ext.uls.interface","wikibase.client.vector-2022","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</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.styles%7Cext.discussionTools.init.styles%7Cext.tmh.player.styles%7Cext.translate%2CwikimediaBadges%7Cext.translate.edit.documentation.styles%7Cext.translate.tag.languages%7Cext.uls.pt%7Cext.visualEditor.desktopArticleTarget.noscript%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.5"> <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 property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv/854px--Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv.jpg"> <meta property="og:image:width" content="854"> <meta property="og:image:height" content="480"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv/800px--Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv.jpg"> <meta property="og:image:width" content="800"> <meta property="og:image:height" content="450"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv/640px--Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv.jpg"> <meta property="og:image:width" content="640"> <meta property="og:image:height" content="360"> <meta name="viewport" content="width=1120"> <meta property="og:site_name" content="MediaWiki"> <meta property="og:title" content="How to become a MediaWiki hacker - MediaWiki"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//m.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker"> <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/How_to_become_a_MediaWiki_hacker"> <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 page-How_to_become_a_MediaWiki_hacker rootpage-How_to_become_a_MediaWiki_hacker 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"> <li class="interlanguage-link interwiki-af mw-list-item"><a href="https://af.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Afrikaans" lang="af" hreflang="af" data-title="MediaWiki" data-language-autonym="Afrikaans" data-language-local-name="Afrikaans" class="interlanguage-link-target"><span>Afrikaans</span></a></li><li class="interlanguage-link interwiki-als mw-list-item"><a href="https://als.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Alemannic" lang="gsw" hreflang="gsw" data-title="MediaWiki" data-language-autonym="Alemannisch" data-language-local-name="Alemannic" class="interlanguage-link-target"><span>Alemannisch</span></a></li><li class="interlanguage-link interwiki-an mw-list-item"><a href="https://an.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Aragonese" lang="an" hreflang="an" data-title="MediaWiki" data-language-autonym="Aragonés" data-language-local-name="Aragonese" class="interlanguage-link-target"><span>Aragonés</span></a></li><li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A" title="ميدياويكي – Arabic" lang="ar" hreflang="ar" data-title="ميدياويكي" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-arz mw-list-item"><a href="https://arz.wikipedia.org/wiki/%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%89" title="ميدياويكى – Egyptian Arabic" lang="arz" hreflang="arz" data-title="ميدياويكى" data-language-autonym="مصرى" data-language-local-name="Egyptian Arabic" class="interlanguage-link-target"><span>مصرى</span></a></li><li class="interlanguage-link interwiki-as mw-list-item"><a href="https://as.wikipedia.org/wiki/%E0%A6%AE%E0%A6%BF%E0%A6%A1%E0%A6%BF%E0%A6%AF%E0%A6%BC%E0%A6%BE%E0%A7%B1%E0%A6%BF%E0%A6%95%E0%A6%BF" title="মিডিয়াৱিকি – Assamese" lang="as" hreflang="as" data-title="মিডিয়াৱিকি" data-language-autonym="অসমীয়া" data-language-local-name="Assamese" class="interlanguage-link-target"><span>অসমীয়া</span></a></li><li class="interlanguage-link interwiki-ast mw-list-item"><a href="https://ast.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Asturian" lang="ast" hreflang="ast" data-title="MediaWiki" data-language-autonym="Asturianu" data-language-local-name="Asturian" class="interlanguage-link-target"><span>Asturianu</span></a></li><li class="interlanguage-link interwiki-az mw-list-item"><a href="https://az.wikipedia.org/wiki/MediaViki" title="MediaViki – Azerbaijani" lang="az" hreflang="az" data-title="MediaViki" data-language-autonym="Azərbaycanca" data-language-local-name="Azerbaijani" class="interlanguage-link-target"><span>Azərbaycanca</span></a></li><li class="interlanguage-link interwiki-azb mw-list-item"><a href="https://azb.wikipedia.org/wiki/%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C" title="مدیاویکی – South Azerbaijani" lang="azb" hreflang="azb" data-title="مدیاویکی" data-language-autonym="تۆرکجه" data-language-local-name="South Azerbaijani" class="interlanguage-link-target"><span>تۆرکجه</span></a></li><li class="interlanguage-link interwiki-bar mw-list-item"><a href="https://bar.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Bavarian" lang="bar" hreflang="bar" data-title="MediaWiki" data-language-autonym="Boarisch" data-language-local-name="Bavarian" class="interlanguage-link-target"><span>Boarisch</span></a></li><li class="interlanguage-link interwiki-be mw-list-item"><a href="https://be.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Belarusian" lang="be" hreflang="be" data-title="MediaWiki" data-language-autonym="Беларуская" data-language-local-name="Belarusian" class="interlanguage-link-target"><span>Беларуская</span></a></li><li class="interlanguage-link interwiki-be-x-old mw-list-item"><a href="https://be-tarask.wikipedia.org/wiki/%D0%9C%D1%8D%D0%B4%D1%8B%D1%8F%D0%92%D1%96%D0%BA%D1%96" title="МэдыяВікі – Belarusian (Taraškievica orthography)" lang="be-tarask" hreflang="be-tarask" data-title="МэдыяВікі" data-language-autonym="Беларуская (тарашкевіца)" data-language-local-name="Belarusian (Taraškievica orthography)" class="interlanguage-link-target"><span>Беларуская (тарашкевіца)</span></a></li><li class="interlanguage-link interwiki-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B4%D0%B8%D1%8F%D0%A3%D0%B8%D0%BA%D0%B8" title="МедияУики – Bulgarian" lang="bg" hreflang="bg" data-title="МедияУики" data-language-autonym="Български" data-language-local-name="Bulgarian" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-bn mw-list-item"><a href="https://bn.wikipedia.org/wiki/%E0%A6%AE%E0%A6%BF%E0%A6%A1%E0%A6%BF%E0%A6%AF%E0%A6%BC%E0%A6%BE%E0%A6%89%E0%A6%87%E0%A6%95%E0%A6%BF" title="মিডিয়াউইকি – Bangla" lang="bn" hreflang="bn" data-title="মিডিয়াউইকি" data-language-autonym="বাংলা" data-language-local-name="Bangla" class="interlanguage-link-target"><span>বাংলা</span></a></li><li class="interlanguage-link interwiki-br mw-list-item"><a href="https://br.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Breton" lang="br" hreflang="br" data-title="MediaWiki" data-language-autonym="Brezhoneg" data-language-local-name="Breton" class="interlanguage-link-target"><span>Brezhoneg</span></a></li><li class="interlanguage-link interwiki-bs mw-list-item"><a href="https://bs.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Bosnian" lang="bs" hreflang="bs" data-title="MediaWiki" data-language-autonym="Bosanski" data-language-local-name="Bosnian" class="interlanguage-link-target"><span>Bosanski</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Catalan" lang="ca" hreflang="ca" data-title="MediaWiki" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cdo mw-list-item"><a href="https://cdo.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Mindong" lang="cdo" hreflang="cdo" data-title="MediaWiki" data-language-autonym="閩東語 / Mìng-dĕ̤ng-ngṳ̄" data-language-local-name="Mindong" class="interlanguage-link-target"><span>閩東語 / Mìng-dĕ̤ng-ngṳ̄</span></a></li><li class="interlanguage-link interwiki-ce mw-list-item"><a href="https://ce.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Chechen" lang="ce" hreflang="ce" data-title="MediaWiki" data-language-autonym="Нохчийн" data-language-local-name="Chechen" class="interlanguage-link-target"><span>Нохчийн</span></a></li><li class="interlanguage-link interwiki-ckb mw-list-item"><a href="https://ckb.wikipedia.org/wiki/%D9%85%DB%8C%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C" title="میدیاویکی – Central Kurdish" lang="ckb" hreflang="ckb" data-title="میدیاویکی" data-language-autonym="کوردی" data-language-local-name="Central Kurdish" class="interlanguage-link-target"><span>کوردی</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Czech" lang="cs" hreflang="cs" data-title="MediaWiki" data-language-autonym="Čeština" data-language-local-name="Czech" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-csb mw-list-item"><a href="https://csb.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Kashubian" lang="csb" hreflang="csb" data-title="MediaWiki" data-language-autonym="Kaszëbsczi" data-language-local-name="Kashubian" class="interlanguage-link-target"><span>Kaszëbsczi</span></a></li><li class="interlanguage-link interwiki-cv mw-list-item"><a href="https://cv.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Chuvash" lang="cv" hreflang="cv" data-title="MediaWiki" data-language-autonym="Чӑвашла" data-language-local-name="Chuvash" class="interlanguage-link-target"><span>Чӑвашла</span></a></li><li class="interlanguage-link interwiki-da mw-list-item"><a href="https://da.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Danish" lang="da" hreflang="da" data-title="MediaWiki" data-language-autonym="Dansk" data-language-local-name="Danish" class="interlanguage-link-target"><span>Dansk</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/MediaWiki" title="MediaWiki – German" lang="de" hreflang="de" data-title="MediaWiki" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-diq mw-list-item"><a href="https://diq.wikipedia.org/wiki/Wikipediya:MediaWiki" title="Wikipediya:MediaWiki – Zazaki" lang="diq" hreflang="diq" data-title="Wikipediya:MediaWiki" data-language-autonym="Zazaki" data-language-local-name="Zazaki" class="interlanguage-link-target"><span>Zazaki</span></a></li><li class="interlanguage-link interwiki-el mw-list-item"><a href="https://el.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Greek" lang="el" hreflang="el" data-title="MediaWiki" data-language-autonym="Ελληνικά" data-language-local-name="Greek" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/MediaWiki" title="MediaWiki – English" lang="en" hreflang="en" data-title="MediaWiki" data-language-autonym="English" data-language-local-name="English" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-eo mw-list-item"><a href="https://eo.wikipedia.org/wiki/MediaVikio" title="MediaVikio – Esperanto" lang="eo" hreflang="eo" data-title="MediaVikio" data-language-autonym="Esperanto" data-language-local-name="Esperanto" class="interlanguage-link-target"><span>Esperanto</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Spanish" lang="es" hreflang="es" data-title="MediaWiki" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Estonian" lang="et" hreflang="et" data-title="MediaWiki" data-language-autonym="Eesti" data-language-local-name="Estonian" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-eu mw-list-item"><a href="https://eu.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Basque" lang="eu" hreflang="eu" data-title="MediaWiki" data-language-autonym="Euskara" data-language-local-name="Basque" class="interlanguage-link-target"><span>Euskara</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D9%85%D8%AF%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C" title="مدیاویکی – Persian" lang="fa" hreflang="fa" data-title="مدیاویکی" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Finnish" lang="fi" hreflang="fi" data-title="MediaWiki" data-language-autonym="Suomi" data-language-local-name="Finnish" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/MediaWiki" title="MediaWiki – French" lang="fr" hreflang="fr" data-title="MediaWiki" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-fy mw-list-item"><a href="https://fy.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Western Frisian" lang="fy" hreflang="fy" data-title="MediaWiki" data-language-autonym="Frysk" data-language-local-name="Western Frisian" class="interlanguage-link-target"><span>Frysk</span></a></li><li class="interlanguage-link interwiki-ga mw-list-item"><a href="https://ga.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Irish" lang="ga" hreflang="ga" data-title="MediaWiki" data-language-autonym="Gaeilge" data-language-local-name="Irish" class="interlanguage-link-target"><span>Gaeilge</span></a></li><li class="interlanguage-link interwiki-gl mw-list-item"><a href="https://gl.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Galician" lang="gl" hreflang="gl" data-title="MediaWiki" data-language-autonym="Galego" data-language-local-name="Galician" class="interlanguage-link-target"><span>Galego</span></a></li><li class="interlanguage-link interwiki-gor mw-list-item"><a href="https://gor.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Gorontalo" lang="gor" hreflang="gor" data-title="MediaWiki" data-language-autonym="Bahasa Hulontalo" data-language-local-name="Gorontalo" class="interlanguage-link-target"><span>Bahasa Hulontalo</span></a></li><li class="interlanguage-link interwiki-hak mw-list-item"><a href="https://hak.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Hakka Chinese" lang="hak" hreflang="hak" data-title="MediaWiki" data-language-autonym="客家語 / Hak-kâ-ngî" data-language-local-name="Hakka Chinese" class="interlanguage-link-target"><span>客家語 / Hak-kâ-ngî</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/%D7%9E%D7%93%D7%99%D7%94-%D7%95%D7%99%D7%A7%D7%99" title="מדיה-ויקי – Hebrew" lang="he" hreflang="he" data-title="מדיה-ויקי" data-language-autonym="עברית" data-language-local-name="Hebrew" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-hi mw-list-item"><a href="https://hi.wikipedia.org/wiki/%E0%A4%AE%E0%A5%80%E0%A4%A1%E0%A4%BF%E0%A4%AF%E0%A4%BE%E0%A4%B5%E0%A4%BF%E0%A4%95%E0%A4%BF" title="मीडियाविकि – Hindi" lang="hi" hreflang="hi" data-title="मीडियाविकि" data-language-autonym="हिन्दी" data-language-local-name="Hindi" class="interlanguage-link-target"><span>हिन्दी</span></a></li><li class="interlanguage-link interwiki-hr mw-list-item"><a href="https://hr.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Croatian" lang="hr" hreflang="hr" data-title="MediaWiki" data-language-autonym="Hrvatski" data-language-local-name="Croatian" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Hungarian" lang="hu" hreflang="hu" data-title="MediaWiki" data-language-autonym="Magyar" data-language-local-name="Hungarian" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-hy mw-list-item"><a href="https://hy.wikipedia.org/wiki/%D5%84%D5%A5%D5%A4%D5%AB%D5%A1%D5%8E%D5%AB%D6%84%D5%AB" title="ՄեդիաՎիքի – Armenian" lang="hy" hreflang="hy" data-title="ՄեդիաՎիքի" data-language-autonym="Հայերեն" data-language-local-name="Armenian" class="interlanguage-link-target"><span>Հայերեն</span></a></li><li class="interlanguage-link interwiki-ia mw-list-item"><a href="https://ia.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Interlingua" lang="ia" hreflang="ia" data-title="MediaWiki" data-language-autonym="Interlingua" data-language-local-name="Interlingua" class="interlanguage-link-target"><span>Interlingua</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Indonesian" lang="id" hreflang="id" data-title="MediaWiki" data-language-autonym="Bahasa Indonesia" data-language-local-name="Indonesian" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-ig mw-list-item"><a href="https://ig.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Igbo" lang="ig" hreflang="ig" data-title="MediaWiki" data-language-autonym="Igbo" data-language-local-name="Igbo" class="interlanguage-link-target"><span>Igbo</span></a></li><li class="interlanguage-link interwiki-inh mw-list-item"><a href="https://inh.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Ingush" lang="inh" hreflang="inh" data-title="MediaWiki" data-language-autonym="ГӀалгӀай" data-language-local-name="Ingush" class="interlanguage-link-target"><span>ГӀалгӀай</span></a></li><li class="interlanguage-link interwiki-is mw-list-item"><a href="https://is.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Icelandic" lang="is" hreflang="is" data-title="MediaWiki" data-language-autonym="Íslenska" data-language-local-name="Icelandic" class="interlanguage-link-target"><span>Íslenska</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Italian" lang="it" hreflang="it" data-title="MediaWiki" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Japanese" lang="ja" hreflang="ja" data-title="MediaWiki" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-ka mw-list-item"><a href="https://ka.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Georgian" lang="ka" hreflang="ka" data-title="MediaWiki" data-language-autonym="ქართული" data-language-local-name="Georgian" class="interlanguage-link-target"><span>ქართული</span></a></li><li class="interlanguage-link interwiki-km mw-list-item"><a href="https://km.wikipedia.org/wiki/%E1%9E%98%E1%9F%81%E1%9E%8C%E1%9E%B6%E1%9E%9C%E1%9E%B7%E1%9E%82%E1%9E%B8" title="មេឌាវិគី – Khmer" lang="km" hreflang="km" data-title="មេឌាវិគី" data-language-autonym="ភាសាខ្មែរ" data-language-local-name="Khmer" class="interlanguage-link-target"><span>ភាសាខ្មែរ</span></a></li><li class="interlanguage-link interwiki-kn mw-list-item"><a href="https://kn.wikipedia.org/wiki/%E0%B2%AE%E0%B3%80%E0%B2%A1%E0%B2%BF%E0%B2%AF%E0%B2%BE%E0%B2%B5%E0%B2%BF%E0%B2%95%E0%B2%BF" title="ಮೀಡಿಯಾವಿಕಿ – Kannada" lang="kn" hreflang="kn" data-title="ಮೀಡಿಯಾವಿಕಿ" data-language-autonym="ಕನ್ನಡ" data-language-local-name="Kannada" class="interlanguage-link-target"><span>ಕನ್ನಡ</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4" title="미디어위키 – Korean" lang="ko" hreflang="ko" data-title="미디어위키" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-ks mw-list-item"><a href="https://ks.wikipedia.org/wiki/%D9%85%DB%8C%D9%96%DA%88%DB%8C%D8%A7_%D9%88%D9%90%DA%A9%DB%8C" title="میٖڈیا وِکی – Kashmiri" lang="ks" hreflang="ks" data-title="میٖڈیا وِکی" data-language-autonym="कॉशुर / کٲشُر" data-language-local-name="Kashmiri" class="interlanguage-link-target"><span>कॉशुर / کٲشُر</span></a></li><li class="interlanguage-link interwiki-ku mw-list-item"><a href="https://ku.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Kurdish" lang="ku" hreflang="ku" data-title="MediaWiki" data-language-autonym="Kurdî" data-language-local-name="Kurdish" class="interlanguage-link-target"><span>Kurdî</span></a></li><li class="interlanguage-link interwiki-la mw-list-item"><a href="https://la.wikipedia.org/wiki/MediaVici" title="MediaVici – Latin" lang="la" hreflang="la" data-title="MediaVici" data-language-autonym="Latina" data-language-local-name="Latin" class="interlanguage-link-target"><span>Latina</span></a></li><li class="interlanguage-link interwiki-lb mw-list-item"><a href="https://lb.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Luxembourgish" lang="lb" hreflang="lb" data-title="MediaWiki" data-language-autonym="Lëtzebuergesch" data-language-local-name="Luxembourgish" class="interlanguage-link-target"><span>Lëtzebuergesch</span></a></li><li class="interlanguage-link interwiki-li mw-list-item"><a href="https://li.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Limburgish" lang="li" hreflang="li" data-title="MediaWiki" data-language-autonym="Limburgs" data-language-local-name="Limburgish" class="interlanguage-link-target"><span>Limburgs</span></a></li><li class="interlanguage-link interwiki-lt mw-list-item"><a href="https://lt.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Lithuanian" lang="lt" hreflang="lt" data-title="MediaWiki" data-language-autonym="Lietuvių" data-language-local-name="Lithuanian" class="interlanguage-link-target"><span>Lietuvių</span></a></li><li class="interlanguage-link interwiki-lv mw-list-item"><a href="https://lv.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Latvian" lang="lv" hreflang="lv" data-title="MediaWiki" data-language-autonym="Latviešu" data-language-local-name="Latvian" class="interlanguage-link-target"><span>Latviešu</span></a></li><li class="interlanguage-link interwiki-mg mw-list-item"><a href="https://mg.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Malagasy" lang="mg" hreflang="mg" data-title="MediaWiki" data-language-autonym="Malagasy" data-language-local-name="Malagasy" class="interlanguage-link-target"><span>Malagasy</span></a></li><li class="interlanguage-link interwiki-mk mw-list-item"><a href="https://mk.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B4%D0%B8%D1%98%D0%B0%D0%92%D0%B8%D0%BA%D0%B8" title="МедијаВики – Macedonian" lang="mk" hreflang="mk" data-title="МедијаВики" data-language-autonym="Македонски" data-language-local-name="Macedonian" class="interlanguage-link-target"><span>Македонски</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%AE%E0%B5%80%E0%B4%A1%E0%B4%BF%E0%B4%AF%E0%B4%B5%E0%B4%BF%E0%B4%95%E0%B5%8D%E0%B4%95%E0%B4%BF" title="മീഡിയവിക്കി – Malayalam" lang="ml" hreflang="ml" data-title="മീഡിയവിക്കി" data-language-autonym="മലയാളം" data-language-local-name="Malayalam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-mr mw-list-item"><a href="https://mr.wikipedia.org/wiki/%E0%A4%AE%E0%A4%BF%E0%A4%A1%E0%A4%BF%E0%A4%AF%E0%A4%BE%E0%A4%B5%E0%A4%BF%E0%A4%95%E0%A5%80" title="मिडियाविकी – Marathi" lang="mr" hreflang="mr" data-title="मिडियाविकी" data-language-autonym="मराठी" data-language-local-name="Marathi" class="interlanguage-link-target"><span>मराठी</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Malay" lang="ms" hreflang="ms" data-title="MediaWiki" data-language-autonym="Bahasa Melayu" data-language-local-name="Malay" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-mt mw-list-item"><a href="https://mt.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Maltese" lang="mt" hreflang="mt" data-title="MediaWiki" data-language-autonym="Malti" data-language-local-name="Maltese" class="interlanguage-link-target"><span>Malti</span></a></li><li class="interlanguage-link interwiki-ne mw-list-item"><a href="https://ne.wikipedia.org/wiki/%E0%A4%AE%E0%A4%BF%E0%A4%A1%E0%A4%BF%E0%A4%AF%E0%A4%BE%E0%A4%B5%E0%A4%BF%E0%A4%95%E0%A5%80" title="मिडियाविकी – Nepali" lang="ne" hreflang="ne" data-title="मिडियाविकी" data-language-autonym="नेपाली" data-language-local-name="Nepali" class="interlanguage-link-target"><span>नेपाली</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Dutch" lang="nl" hreflang="nl" data-title="MediaWiki" data-language-autonym="Nederlands" data-language-local-name="Dutch" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-nn mw-list-item"><a href="https://nn.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Norwegian Nynorsk" lang="nn" hreflang="nn" data-title="MediaWiki" data-language-autonym="Norsk nynorsk" data-language-local-name="Norwegian Nynorsk" class="interlanguage-link-target"><span>Norsk nynorsk</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Norwegian Bokmål" lang="nb" hreflang="nb" data-title="MediaWiki" data-language-autonym="Norsk bokmål" data-language-local-name="Norwegian Bokmål" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-oc mw-list-item"><a href="https://oc.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Occitan" lang="oc" hreflang="oc" data-title="MediaWiki" data-language-autonym="Occitan" data-language-local-name="Occitan" class="interlanguage-link-target"><span>Occitan</span></a></li><li class="interlanguage-link interwiki-pa mw-list-item"><a href="https://pa.wikipedia.org/wiki/%E0%A8%AE%E0%A9%80%E0%A8%A1%E0%A9%80%E0%A8%86%E0%A8%B5%E0%A8%BF%E0%A8%95%E0%A9%80" title="ਮੀਡੀਆਵਿਕੀ – Punjabi" lang="pa" hreflang="pa" data-title="ਮੀਡੀਆਵਿਕੀ" data-language-autonym="ਪੰਜਾਬੀ" data-language-local-name="Punjabi" class="interlanguage-link-target"><span>ਪੰਜਾਬੀ</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Polish" lang="pl" hreflang="pl" data-title="MediaWiki" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-ps mw-list-item"><a href="https://ps.wikipedia.org/wiki/%D9%85%DB%90%DA%89%D9%8A%D8%A7%D9%88%D9%8A%DA%A9%D9%8A" title="مېډياويکي – Pashto" lang="ps" hreflang="ps" data-title="مېډياويکي" data-language-autonym="پښتو" data-language-local-name="Pashto" class="interlanguage-link-target"><span>پښتو</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Portuguese" lang="pt" hreflang="pt" data-title="MediaWiki" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ro mw-list-item"><a href="https://ro.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Romanian" lang="ro" hreflang="ro" data-title="MediaWiki" data-language-autonym="Română" data-language-local-name="Romanian" class="interlanguage-link-target"><span>Română</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Russian" lang="ru" hreflang="ru" data-title="MediaWiki" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-scn mw-list-item"><a href="https://scn.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Sicilian" lang="scn" hreflang="scn" data-title="MediaWiki" data-language-autonym="Sicilianu" data-language-local-name="Sicilian" class="interlanguage-link-target"><span>Sicilianu</span></a></li><li class="interlanguage-link interwiki-sco mw-list-item"><a href="https://sco.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Scots" lang="sco" hreflang="sco" data-title="MediaWiki" data-language-autonym="Scots" data-language-local-name="Scots" class="interlanguage-link-target"><span>Scots</span></a></li><li class="interlanguage-link interwiki-sd mw-list-item"><a href="https://sd.wikipedia.org/wiki/%D9%85%D9%8A%DA%8A%D9%8A%D8%A7%D9%88%DA%AA%D9%8A" title="ميڊياوڪي – Sindhi" lang="sd" hreflang="sd" data-title="ميڊياوڪي" data-language-autonym="سنڌي" data-language-local-name="Sindhi" class="interlanguage-link-target"><span>سنڌي</span></a></li><li class="interlanguage-link interwiki-sh mw-list-item"><a href="https://sh.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Serbo-Croatian" lang="sh" hreflang="sh" data-title="MediaWiki" data-language-autonym="Srpskohrvatski / српскохрватски" data-language-local-name="Serbo-Croatian" class="interlanguage-link-target"><span>Srpskohrvatski / српскохрватски</span></a></li><li class="interlanguage-link interwiki-si mw-list-item"><a href="https://si.wikipedia.org/wiki/%E0%B6%B8%E0%B7%8F%E0%B6%B0%E0%B7%8A%E2%80%8D%E0%B6%BA%E0%B7%80%E0%B7%92%E0%B6%9A%E0%B7%92" title="මාධ්යවිකි – Sinhala" lang="si" hreflang="si" data-title="මාධ්යවිකි" data-language-autonym="සිංහල" data-language-local-name="Sinhala" class="interlanguage-link-target"><span>සිංහල</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Simple English" lang="en-simple" hreflang="en-simple" data-title="MediaWiki" data-language-autonym="Simple English" data-language-local-name="Simple English" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-sk mw-list-item"><a href="https://sk.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Slovak" lang="sk" hreflang="sk" data-title="MediaWiki" data-language-autonym="Slovenčina" data-language-local-name="Slovak" class="interlanguage-link-target"><span>Slovenčina</span></a></li><li class="interlanguage-link interwiki-sl mw-list-item"><a href="https://sl.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Slovenian" lang="sl" hreflang="sl" data-title="MediaWiki" data-language-autonym="Slovenščina" data-language-local-name="Slovenian" class="interlanguage-link-target"><span>Slovenščina</span></a></li><li class="interlanguage-link interwiki-sq mw-list-item"><a href="https://sq.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Albanian" lang="sq" hreflang="sq" data-title="MediaWiki" data-language-autonym="Shqip" data-language-local-name="Albanian" class="interlanguage-link-target"><span>Shqip</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Serbian" lang="sr" hreflang="sr" data-title="MediaWiki" data-language-autonym="Српски / srpski" data-language-local-name="Serbian" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Mediawiki" title="Mediawiki – Swedish" lang="sv" hreflang="sv" data-title="Mediawiki" data-language-autonym="Svenska" data-language-local-name="Swedish" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-ta mw-list-item"><a href="https://ta.wikipedia.org/wiki/%E0%AE%AE%E0%AF%80%E0%AE%9F%E0%AE%BF%E0%AE%AF%E0%AE%BE%E0%AE%B5%E0%AE%BF%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%BF" title="மீடியாவிக்கி – Tamil" lang="ta" hreflang="ta" data-title="மீடியாவிக்கி" data-language-autonym="தமிழ்" data-language-local-name="Tamil" class="interlanguage-link-target"><span>தமிழ்</span></a></li><li class="interlanguage-link interwiki-te mw-list-item"><a href="https://te.wikipedia.org/wiki/%E0%B0%AE%E0%B1%80%E0%B0%A1%E0%B0%BF%E0%B0%AF%E0%B0%BE%E0%B0%B5%E0%B0%BF%E0%B0%95%E0%B1%80" title="మీడియావికీ – Telugu" lang="te" hreflang="te" data-title="మీడియావికీ" data-language-autonym="తెలుగు" data-language-local-name="Telugu" class="interlanguage-link-target"><span>తెలుగు</span></a></li><li class="interlanguage-link interwiki-tg mw-list-item"><a href="https://tg.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Tajik" lang="tg" hreflang="tg" data-title="MediaWiki" data-language-autonym="Тоҷикӣ" data-language-local-name="Tajik" class="interlanguage-link-target"><span>Тоҷикӣ</span></a></li><li class="interlanguage-link interwiki-th mw-list-item"><a href="https://th.wikipedia.org/wiki/%E0%B8%A1%E0%B8%B5%E0%B9%80%E0%B8%94%E0%B8%B5%E0%B8%A2%E0%B8%A7%E0%B8%B4%E0%B8%81%E0%B8%B4" title="มีเดียวิกิ – Thai" lang="th" hreflang="th" data-title="มีเดียวิกิ" data-language-autonym="ไทย" data-language-local-name="Thai" class="interlanguage-link-target"><span>ไทย</span></a></li><li class="interlanguage-link interwiki-tl mw-list-item"><a href="https://tl.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Tagalog" lang="tl" hreflang="tl" data-title="MediaWiki" data-language-autonym="Tagalog" data-language-local-name="Tagalog" class="interlanguage-link-target"><span>Tagalog</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Turkish" lang="tr" hreflang="tr" data-title="MediaWiki" data-language-autonym="Türkçe" data-language-local-name="Turkish" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Ukrainian" lang="uk" hreflang="uk" data-title="MediaWiki" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-ur mw-list-item"><a href="https://ur.wikipedia.org/wiki/%D9%85%DB%8C%DA%88%DB%8C%D8%A7%D9%88%DB%8C%DA%A9%DB%8C" title="میڈیاویکی – Urdu" lang="ur" hreflang="ur" data-title="میڈیاویکی" data-language-autonym="اردو" data-language-local-name="Urdu" class="interlanguage-link-target"><span>اردو</span></a></li><li class="interlanguage-link interwiki-uz mw-list-item"><a href="https://uz.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Uzbek" lang="uz" hreflang="uz" data-title="MediaWiki" data-language-autonym="Oʻzbekcha / ўзбекча" data-language-local-name="Uzbek" class="interlanguage-link-target"><span>Oʻzbekcha / ўзбекча</span></a></li><li class="interlanguage-link interwiki-vec mw-list-item"><a href="https://vec.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Venetian" lang="vec" hreflang="vec" data-title="MediaWiki" data-language-autonym="Vèneto" data-language-local-name="Venetian" class="interlanguage-link-target"><span>Vèneto</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Vietnamese" lang="vi" hreflang="vi" data-title="MediaWiki" data-language-autonym="Tiếng Việt" data-language-local-name="Vietnamese" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-war mw-list-item"><a href="https://war.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Waray" lang="war" hreflang="war" data-title="MediaWiki" data-language-autonym="Winaray" data-language-local-name="Waray" class="interlanguage-link-target"><span>Winaray</span></a></li><li class="interlanguage-link interwiki-wuu mw-list-item"><a href="https://wuu.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Wu" lang="wuu" hreflang="wuu" data-title="MediaWiki" data-language-autonym="吴语" data-language-local-name="Wu" class="interlanguage-link-target"><span>吴语</span></a></li><li class="interlanguage-link interwiki-yi mw-list-item"><a href="https://yi.wikipedia.org/wiki/%D7%9E%D7%A2%D7%93%D7%99%D7%A2%D7%95%D7%95%D7%99%D7%A7%D7%99" title="מעדיעוויקי – Yiddish" lang="yi" hreflang="yi" data-title="מעדיעוויקי" data-language-autonym="ייִדיש" data-language-local-name="Yiddish" class="interlanguage-link-target"><span>ייִדיש</span></a></li><li class="interlanguage-link interwiki-yo mw-list-item"><a href="https://yo.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Yoruba" lang="yo" hreflang="yo" data-title="MediaWiki" data-language-autonym="Yorùbá" data-language-local-name="Yoruba" class="interlanguage-link-target"><span>Yorùbá</span></a></li><li class="interlanguage-link interwiki-zgh mw-list-item"><a href="https://zgh.wikipedia.org/wiki/%E2%B5%8E%E2%B5%89%E2%B4%B7%E2%B5%A2%E2%B4%B0%E2%B5%A1%E2%B5%89%E2%B4%BD%E2%B5%89" title="ⵎⵉⴷⵢⴰⵡⵉⴽⵉ – Standard Moroccan Tamazight" lang="zgh" hreflang="zgh" data-title="ⵎⵉⴷⵢⴰⵡⵉⴽⵉ" data-language-autonym="ⵜⴰⵎⴰⵣⵉⵖⵜ ⵜⴰⵏⴰⵡⴰⵢⵜ" data-language-local-name="Standard Moroccan Tamazight" class="interlanguage-link-target"><span>ⵜⴰⵎⴰⵣⵉⵖⵜ ⵜⴰⵏⴰⵡⴰⵢⵜ</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Chinese" lang="zh" hreflang="zh" data-title="MediaWiki" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li><li class="interlanguage-link interwiki-zh-classical mw-list-item"><a href="https://zh-classical.wikipedia.org/wiki/%E5%85%B1%E7%AD%86%E8%87%BA" title="共筆臺 – Literary Chinese" lang="lzh" hreflang="lzh" data-title="共筆臺" data-language-autonym="文言" data-language-local-name="Literary Chinese" class="interlanguage-link-target"><span>文言</span></a></li><li class="interlanguage-link interwiki-zh-min-nan mw-list-item"><a href="https://zh-min-nan.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Minnan" lang="nan" hreflang="nan" data-title="MediaWiki" data-language-autonym="閩南語 / Bân-lâm-gú" data-language-local-name="Minnan" class="interlanguage-link-target"><span>閩南語 / Bân-lâm-gú</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/MediaWiki" title="MediaWiki – Cantonese" lang="yue" hreflang="yue" data-title="MediaWiki" data-language-autonym="粵語" data-language-local-name="Cantonese" class="interlanguage-link-target"><span>粵語</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q83#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit 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/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=www.mediawiki.org&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=How+to+become+a+MediaWiki+hacker" 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=How+to+become+a+MediaWiki+hacker" 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/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=www.mediawiki.org&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=How+to+become+a+MediaWiki+hacker" 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=How+to+become+a+MediaWiki+hacker" 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-Overview" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Overview"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Overview</span> </div> </a> <ul id="toc-Overview-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Find_or_create_a_task" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Find_or_create_a_task"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Find or create a task</span> </div> </a> <ul id="toc-Find_or_create_a_task-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Set_up_your_development_environment" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Set_up_your_development_environment"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Set up your development environment</span> </div> </a> <button aria-controls="toc-Set_up_your_development_environment-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 Set up your development environment subsection</span> </button> <ul id="toc-Set_up_your_development_environment-sublist" class="vector-toc-list"> <li id="toc-Docker" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Docker"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Docker</span> </div> </a> <ul id="toc-Docker-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Vagrant" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Vagrant"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>Vagrant</span> </div> </a> <ul id="toc-Vagrant-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Local_installation" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Local_installation"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.3</span> <span>Local installation</span> </div> </a> <ul id="toc-Local_installation-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Open_a_code_editor" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Open_a_code_editor"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Open a code editor</span> </div> </a> <ul id="toc-Open_a_code_editor-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Change_and_test_the_code" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Change_and_test_the_code"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Change and test the code</span> </div> </a> <ul id="toc-Change_and_test_the_code-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Create_a_patch" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Create_a_patch"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Create a patch</span> </div> </a> <ul id="toc-Create_a_patch-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Communication_tips_and_guidelines" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Communication_tips_and_guidelines"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Communication tips and guidelines</span> </div> </a> <button aria-controls="toc-Communication_tips_and_guidelines-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 Communication tips and guidelines subsection</span> </button> <ul id="toc-Communication_tips_and_guidelines-sublist" class="vector-toc-list"> <li id="toc-Use_Phabricator_tasks_effectively" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Use_Phabricator_tasks_effectively"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.1</span> <span>Use Phabricator tasks effectively</span> </div> </a> <ul id="toc-Use_Phabricator_tasks_effectively-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Compose_good_questions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Compose_good_questions"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.2</span> <span>Compose good questions</span> </div> </a> <ul id="toc-Compose_good_questions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Follow_communication_policies_and_best_practices" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Follow_communication_policies_and_best_practices"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.3</span> <span>Follow communication policies and best practices</span> </div> </a> <ul id="toc-Follow_communication_policies_and_best_practices-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Ask_in_the_right_place" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Ask_in_the_right_place"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.4</span> <span>Ask in the right place</span> </div> </a> <ul id="toc-Ask_in_the_right_place-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Be_patient" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Be_patient"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.5</span> <span>Be patient</span> </div> </a> <ul id="toc-Be_patient-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Appendix" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Appendix"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Appendix</span> </div> </a> <button aria-controls="toc-Appendix-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 Appendix subsection</span> </button> <ul id="toc-Appendix-sublist" class="vector-toc-list"> <li id="toc-PHP" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#PHP"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.1</span> <span>PHP</span> </div> </a> <ul id="toc-PHP-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Database" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Database"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.2</span> <span>Database</span> </div> </a> <ul id="toc-Database-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-JavaScript_and_CSS" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#JavaScript_and_CSS"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.3</span> <span>JavaScript and CSS</span> </div> </a> <ul id="toc-JavaScript_and_CSS-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-MediaWiki" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#MediaWiki"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.4</span> <span>MediaWiki</span> </div> </a> <ul id="toc-MediaWiki-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-MediaWiki_extensions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#MediaWiki_extensions"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.5</span> <span>MediaWiki extensions</span> </div> </a> <ul id="toc-MediaWiki_extensions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-MediaWiki_skins" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#MediaWiki_skins"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.6</span> <span>MediaWiki skins</span> </div> </a> <ul id="toc-MediaWiki_skins-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Footnotes" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Footnotes"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>Footnotes</span> </div> </a> <ul id="toc-Footnotes-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">How to become a MediaWiki hacker</span></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="selected vector-tab-noicon mw-list-item"><a href="/wiki/How_to_become_a_MediaWiki_hacker" 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:How_to_become_a_MediaWiki_hacker" 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/How_to_become_a_MediaWiki_hacker"><span>Read</span></a></li><li id="ca-viewsource" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=How_to_become_a_MediaWiki_hacker&action=edit" title="This page is protected. You can view its source [e]" accesskey="e"><span>View source</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=How_to_become_a_MediaWiki_hacker&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/How_to_become_a_MediaWiki_hacker"><span>Read</span></a></li><li id="ca-more-viewsource" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=How_to_become_a_MediaWiki_hacker&action=edit"><span>View source</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=How_to_become_a_MediaWiki_hacker&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/How_to_become_a_MediaWiki_hacker" 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/How_to_become_a_MediaWiki_hacker" 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=How_to_become_a_MediaWiki_hacker&oldid=6498783" 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=How_to_become_a_MediaWiki_hacker&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=How_to_become_a_MediaWiki_hacker&id=6498783&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%2FHow_to_become_a_MediaWiki_hacker"><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%2FHow_to_become_a_MediaWiki_hacker"><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=How+to+become+a+MediaWiki+hacker"><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=How_to_become_a_MediaWiki_hacker&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=How_to_become_a_MediaWiki_hacker&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" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/MediaWiki" hreflang="en"><span>Wikimedia Commons</span></a></li><li class="wb-otherproject-link wb-otherproject-meta mw-list-item"><a href="https://meta.wikimedia.org/wiki/MediaWiki" hreflang="en"><span>Meta-Wiki</span></a></li><li class="wb-otherproject-link wb-otherproject-wikibooks mw-list-item"><a href="https://en.wikibooks.org/wiki/MediaWiki_Administrator%27s_Handbook" hreflang="en"><span>Wikibooks</span></a></li><li class="wb-otherproject-link wb-otherproject-wikipedia mw-list-item"><a href="https://en.wikipedia.org/wiki/MediaWiki" hreflang="en"><span>Wikipedia</span></a></li><li class="wb-otherproject-link wb-otherproject-wikiquote mw-list-item"><a href="https://en.wikiquote.org/wiki/MediaWiki" hreflang="en"><span>Wikiquote</span></a></li><li class="wb-otherproject-link wb-otherproject-wikiversity mw-list-item"><a href="https://en.wikiversity.org/wiki/MediaWiki" hreflang="en"><span>Wikiversity</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q83" title="Link to connected data repository item [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div id="siteSub" class="noprint">From mediawiki.org</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-pt-translate-header noprint nomobile" dir="ltr" lang="en"><a href="/w/index.php?title=Special:Translate&group=page-How+to+become+a+MediaWiki+hacker&action=page&filter=&action_source=translate_page" title="Special:Translate">Translate this page</a></div><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="mw-pt-languages noprint navigation-not-searchable" lang="en" dir="ltr"><div class="mw-pt-languages-label">Languages:</div><ul class="mw-pt-languages-list"><li><a href="/wiki/How_to_become_a_MediaWiki_hacker/id" class="mw-pt-progress mw-pt-progress--high" title="Bagaimana cara menjadi peretas MediaWiki (73% translated)" lang="id" dir="ltr">Bahasa Indonesia</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/de" class="mw-pt-progress mw-pt-progress--med" title="Wie man ein MediaWiki-Hacker wird (55% translated)" lang="de" dir="ltr">Deutsch</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/de-formal" class="mw-pt-progress mw-pt-progress--med" title="Wie man ein MediaWiki-Hacker wird (55% translated)" lang="de-x-formal" dir="ltr">Deutsch (Sie-Form)</a></li> <li><span class="mw-pt-languages-ui mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete" lang="en" dir="ltr">English</span></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/nl" class="mw-pt-progress mw-pt-progress--complete" title="Meewerken aan de MediaWiki en Extensies (100% translated)" lang="nl" dir="ltr">Nederlands</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/vi" class="mw-pt-progress mw-pt-progress--med" title="Làm thế nào để trở thành một MediaWiki hacker (38% translated)" lang="vi" dir="ltr">Tiếng Việt</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/tr" class="mw-pt-progress mw-pt-progress--med" title="MediaWiki hackeri olma (62% translated)" lang="tr" dir="ltr">Türkçe</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/tum" class="mw-pt-progress mw-pt-progress--low" title="How to become a MediaWiki hacker/tum (1% translated)" lang="tum" dir="ltr">chiTumbuka</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/da" class="mw-pt-progress mw-pt-progress--low" title="How to become a MediaWiki hacker/da (4% translated)" lang="da" dir="ltr">dansk</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/es" class="mw-pt-progress mw-pt-progress--med" title="Cómo convertirse en un hacker MediaWiki (35% translated)" lang="es" dir="ltr">español</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/fr" class="mw-pt-progress mw-pt-progress--high" title="Comment devenir un hackeur de MediaWiki (99% translated)" lang="fr" dir="ltr">français</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/ia" class="mw-pt-progress mw-pt-progress--low" title="Como devenir un hacker de MediaWiki (5% translated)" lang="ia" dir="ltr">interlingua</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/it" class="mw-pt-progress mw-pt-progress--med" title="Come diventare un hacker di MediaWiki (20% translated)" lang="it" dir="ltr">italiano</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/pl" class="mw-pt-progress mw-pt-progress--med" title="Jak zostać hakerem MediaWiki (66% translated)" lang="pl" dir="ltr">polski</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/pt" class="mw-pt-progress mw-pt-progress--med" title="Como tornar-se num ''hacker'' do MediaWiki (62% translated)" lang="pt" dir="ltr">português</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/pt-br" class="mw-pt-progress mw-pt-progress--med" title="Como se tornar um hacker do MediaWiki (60% translated)" lang="pt-BR" dir="ltr">português do Brasil</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/ro" class="mw-pt-progress mw-pt-progress--low" title="Cum să deveniți un hacker MediaWiki (3% translated)" lang="ro" dir="ltr">română</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/sv" class="mw-pt-progress mw-pt-progress--low" title="Hur man blir en MediaWiki-hackare (1% translated)" lang="sv" dir="ltr">svenska</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/cs" class="mw-pt-progress mw-pt-progress--complete" title="Jak se stát vývojářem MediaWiki (100% translated)" lang="cs" dir="ltr">čeština</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/el" class="mw-pt-progress mw-pt-progress--low" title="Πως να γίνεις hacker του Mediawikik (4% translated)" lang="el" dir="ltr">Ελληνικά</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/bg" class="mw-pt-progress mw-pt-progress--med" title="Как да станете МедияУики хакер (30% translated)" lang="bg" dir="ltr">български</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/ru" class="mw-pt-progress mw-pt-progress--high" title="Как стать MediaWiki хакером (70% translated)" lang="ru" dir="ltr">русский</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/uk" class="mw-pt-progress mw-pt-progress--low" title="Як стати MediaWiki-хакером (13% translated)" lang="uk" dir="ltr">українська</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/fa" class="mw-pt-progress mw-pt-progress--med" title="چگونه یک هکر مدیاویکی شویم (22% translated)" lang="fa" dir="rtl">فارسی</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/ckb" class="mw-pt-progress mw-pt-progress--low" title="How to become a MediaWiki hacker/ckb (0% translated)" lang="ckb" dir="rtl">کوردی</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/bn" class="mw-pt-progress mw-pt-progress--med" title="কিভাবে একজন মিডিয়াউইকি হ্যাকার হবেন (35% translated)" lang="bn" dir="ltr">বাংলা</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/ta" class="mw-pt-progress mw-pt-progress--low" title="மீடியாவிக்கியை மாற்றியமைப்போர் ஆவது எப்படி? (1% translated)" lang="ta" dir="ltr">தமிழ்</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/th" class="mw-pt-progress mw-pt-progress--med" title="วิธีการเป็นแฮกเกอร์มีเดียวิกิ (57% translated)" lang="th" dir="ltr">ไทย</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/zh" class="mw-pt-progress mw-pt-progress--med" title="如何成为MediaWiki开发者 (66% translated)" lang="zh" dir="ltr">中文</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/ja" class="mw-pt-progress mw-pt-progress--high" title="MediaWikiハッカーになる方法 (78% translated)" lang="ja" dir="ltr">日本語</a></li> <li><a href="/wiki/How_to_become_a_MediaWiki_hacker/ko" class="mw-pt-progress mw-pt-progress--med" title="미디어위키 개발자가 되는 방법 (64% translated)" lang="ko" dir="ltr">한국어</a></li></ul></div> <p>This article is written to help developers learn the basic skills needed to contribute to <b>development of <a href="/wiki/Special:MyLanguage/Manual:What_is_MediaWiki%3F" title="Special:MyLanguage/Manual:What is MediaWiki?">MediaWiki core</a> and MediaWiki extensions</b>. </p><p>Contributing to MediaWiki is often difficult, so if you would like to get involved with <a href="/wiki/Special:MyLanguage/Differences_between_Wikipedia,_Wikimedia,_MediaWiki,_and_wiki" title="Special:MyLanguage/Differences between Wikipedia, Wikimedia, MediaWiki, and wiki">Wikimedia</a> development instead, you should <b>contribute to <a href="/wiki/Special:MyLanguage/New_Developers#Choose_a_software_project" title="Special:MyLanguage/New Developers">Wikimedia projects that offer mentoring</a></b>. An alternative without mentoring is to fix a <a href="/wiki/Special:MyLanguage/Good_first_bugs" title="Special:MyLanguage/Good first bugs">good first bug</a>. </p><p>If you are an experienced developer who is familiar with using MediaWiki already, visit the <b><a href="/wiki/Special:MyLanguage/Developer_hub" title="Special:MyLanguage/Developer hub">Developer hub</a><span style="display:none"><a href="/wiki/Developer_hub" title="Developer hub"> </a></span></b> instead. </p><p>For other ways to get involved in the Wikimedia community, see <b><a href="/wiki/Special:MyLanguage/How_to_contribute" title="Special:MyLanguage/How to contribute">How to contribute</a><span style="display:none"><a href="/wiki/How_to_contribute" title="How to contribute"> </a></span></b>. </p> <div style="clear: right; margin-bottom: .5em; float: right; margin-left:2em; width: auto;"><meta property="mw:PageProp/toc"/></div> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Overview" data-mw-thread-id="h-Overview"><span data-mw-comment-start="" id="h-Overview"></span>Overview<span data-mw-comment-end="h-Overview"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Overview","replies":[]}}--></div> <p>MediaWiki is the software that powers Wikipedia, its sister projects and thousands of wikis all over the world. </p><p>Most of MediaWiki and extensions are written in the <a rel="nofollow" class="external text" href="https://php.net/">PHP</a> programming language. <a href="https://en.wikipedia.org/wiki/JavaScript" class="extiw" title="en:JavaScript">JavaScript</a> is used for providing interactive interface elements along with <a rel="nofollow" class="external text" href="https://jquery.com/">jQuery</a> and <a href="/wiki/Vue.js" title="Vue.js">Vue.js</a> as client JavaScript libraries. </p><p>Some supporting tools are written in other languages, including <a href="https://en.wikipedia.org/wiki/Batch_files" class="extiw" title="w:Batch files">batch files</a>, <a href="https://en.wikipedia.org/wiki/Shell_script" class="extiw" title="w:Shell script">shell scripts</a>, <a href="https://en.wikipedia.org/wiki/Makefile" class="extiw" title="w:Makefile">makefiles</a> and <a href="https://en.wikipedia.org/wiki/Python_(programming_language)" class="extiw" title="w:Python (programming language)">Python</a>. </p><p>MediaWiki is primarily written for the <a href="https://en.wikipedia.org/wiki/LAMP_(software_bundle)" class="extiw" title="w:LAMP (software bundle)">LAMP platform</a><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> and runs on most operating systems. MediaWiki primarily uses the <a href="https://en.wikipedia.org/wiki/MySQL" class="extiw" title="w:MySQL">MySQL</a> or <a href="https://en.wikipedia.org/wiki/MariaDB" class="extiw" title="w:MariaDB">MariaDB</a> database servers.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> </p><p>Development happens in an <a href="https://en.wikipedia.org/wiki/Open_Source" class="extiw" title="w:Open Source">open source</a> style,<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> is largely coordinated online, and supported by the Wikimedia Foundation, though volunteer community developers play a huge part as well. </p> <ul><li><b>Development discussion</b> happens on <a href="/wiki/Special:MyLanguage/Phabricator" title="Special:MyLanguage/Phabricator">Phabricator</a><span style="display:none"><a href="/wiki/Phabricator" title="Phabricator"> </a></span>, <a href="/wiki/Special:MyLanguage/mailing_lists" title="Special:MyLanguage/mailing lists">Mailing lists</a><span style="display:none"><a href="/wiki/Mailing_lists" title="Mailing lists"> </a></span>, and <a href="/wiki/Special:MyLanguage/MediaWiki_on_IRC" title="Special:MyLanguage/MediaWiki on IRC">IRC channels</a>. The main developer list is <a href="https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wikimedia.org/" class="extiw" title="mail:wikitech-l">wikitech-l</a>. The main developer IRC channels are <style data-mw-deduplicate="TemplateStyles:r6651115">.mw-parser-output .irc-connect>a{color:green}@media screen{html.skin-theme-clientpref-night .mw-parser-output .irc-connect>a{color:#12c812}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .irc-connect>a{color:#12c812}}</style><span class="plainlinks" style="font-family: monospace,Courier; white-space: pre-wrap !important; word-wrap: break-word; max-width: 1200px; overflow: auto;" title="#mediawiki on Libera.Chat IRC"><a rel="nofollow" class="external text" href="ircs://irc.libera.chat:6697/mediawiki">#mediawiki</a></span> <sup class="plainlinks irc-connect"><a rel="nofollow" class="external text" href="https://web.libera.chat/?channel=#mediawiki">connect</a></sup> and <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r6651115"><span class="plainlinks" style="font-family: monospace,Courier; white-space: pre-wrap !important; word-wrap: break-word; max-width: 1200px; overflow: auto;" title="#wikimedia-dev on Libera.Chat IRC"><a rel="nofollow" class="external text" href="ircs://irc.libera.chat:6697/wikimedia-dev">#wikimedia-dev</a></span> <sup class="plainlinks irc-connect"><a rel="nofollow" class="external text" href="https://web.libera.chat/?channel=#wikimedia-dev">connect</a></sup>.</li> <li><b>Source code</b> is stored on <a href="/wiki/Special:MyLanguage/Gerrit" title="Special:MyLanguage/Gerrit">Gerrit</a><span style="display:none"><a href="/wiki/Gerrit" title="Gerrit"> </a></span> and managed using the <a href="https://en.wikipedia.org/wiki/Git" class="extiw" title="w:Git">Git</a> revision control system and <a class="external text" href="https://gerrit.wikimedia.org/g/mediawiki/core">can be viewed here</a>.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup></li> <li><b>Code review</b> is performed on <a href="/wiki/Special:MyLanguage/Gerrit" title="Special:MyLanguage/Gerrit">Gerrit</a><span style="display:none"><a href="/wiki/Gerrit" title="Gerrit"> </a></span> and <a href="https://gerrit.wikimedia.org/r/q/project:mediawiki/core" class="extiw" title="gerrit:q/project:mediawiki/core">can be viewed here</a>. <a href="/wiki/Special:MyLanguage/Gerrit/Tutorial" title="Special:MyLanguage/Gerrit/Tutorial">Follow this tutorial</a> to set up Git and Gerrit in order to submit patches.</li> <li><b>Bug reports</b> and <b>feature requests</b> are filed, and <b>projects</b> are coordinated on <a href="/wiki/Special:MyLanguage/Phabricator" title="Special:MyLanguage/Phabricator">Phabricator</a><span style="display:none"><a href="/wiki/Phabricator" title="Phabricator"> </a></span> and <a href="https://phabricator.wikimedia.org/tag/mediawiki-general/" class="extiw" title="phab:tag/mediawiki-general/">can be viewed here</a>.</li></ul> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Find_or_create_a_task" data-mw-thread-id="h-Find_or_create_a_task"><span data-mw-comment-start="" id="h-Find_or_create_a_task"></span>Find or create a task<span data-mw-comment-end="h-Find_or_create_a_task"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Find_or_create_a_task","replies":[]}}--></div> <p>Before you ever develop a feature or fix a bug in a MediaWiki project, it is important that you do your research about it. This includes: </p> <ol><li><a href="https://phabricator.wikimedia.org/search/query/advanced/" class="extiw" title="phab:search/query/advanced/">Search</a> Phabricator if an open or closed Task (Document Types field) already exists. If it doesn't, <a href="/wiki/Special:MyLanguage/Phabricator/Help#Creating_a_task" title="Special:MyLanguage/Phabricator/Help">create one</a>. If this is a very small change, don't create one.</li> <li><a href="/wiki/Special:MyLanguage/Finding_software_in_MediaWiki#MediaWiki_software" title="Special:MyLanguage/Finding software in MediaWiki">Find</a> and investigate the code that needs to be changed to implement the feature. Comment your findings on the Phabricator Task if they might be helpful to others who implement it or review your changes.</li> <li>Determine if you can likely add the feature or fix the bug based the code you investigated and the changes needed. If the task is large or complex, you should find <a href="/wiki/Special:MyLanguage/Good_first_bugs" title="Special:MyLanguage/Good first bugs">something easier</a> and work your way up to eventually be able to handle tasks of that size. If you believe you can complete it, <a href="/wiki/Special:MyLanguage/Phabricator/Help#Assigning_yourself_a_task" title="Special:MyLanguage/Phabricator/Help">assign yourself to the Task</a> and begin working on it.</li></ol> <p><span class="anchor" id="dev-environment"></span> </p> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Set_up_your_development_environment" data-mw-thread-id="h-Set_up_your_development_environment"><span data-mw-comment-start="" id="h-Set_up_your_development_environment"></span>Set up your development environment<span data-mw-comment-end="h-Set_up_your_development_environment"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Set_up_your_development_environment","replies":["h-Docker-Set_up_your_development_environment","h-Vagrant-Set_up_your_development_environment","h-Local_installation-Set_up_your_development_environment"]}}--></div> <p>Once you have found something you can work on, the next step to developing MediaWiki or an extension is creating an environment to run MediaWiki, its database, and any other external features so that you can develop and test them. </p><p>You can install and develop MediaWiki on Linux, Windows, or macOS using any of the three solutions below. </p> <div class="mw-heading mw-heading3"><h3 id="Docker" data-mw-thread-id="h-Docker-Set_up_your_development_environment"><span data-mw-comment-start="" id="h-Docker-Set_up_your_development_environment"></span>Docker<span data-mw-comment-end="h-Docker-Set_up_your_development_environment"></span></h3></div> <ul><li><a href="/wiki/Special:MyLanguage/MediaWiki-Docker" title="Special:MyLanguage/MediaWiki-Docker">MediaWiki Docker</a> – Run MediaWiki using <a href="https://en.wikipedia.org/wiki/Docker_(software)" class="extiw" title="w:Docker (software)">Docker</a>.</li></ul> <p>Docker is a good option if you want to setup a MediaWiki installation quickly and are not planning on installing many extensions. </p><p>You can also try the <a href="/wiki/Mwcli" class="mw-redirect" title="Mwcli">mwcli</a> tool which sets up Docker with a few simple commands and provides basic orchestration functionality between MediaWiki, MySQL, ElasticSearch, Memcached, and other types of containers. </p> <div class="mw-heading mw-heading3"><h3 id="Vagrant" data-mw-thread-id="h-Vagrant-Set_up_your_development_environment"><span data-mw-comment-start="" id="h-Vagrant-Set_up_your_development_environment"></span>Vagrant<span data-mw-comment-end="h-Vagrant-Set_up_your_development_environment"></span></h3></div> <ul><li><a href="/wiki/Special:MyLanguage/MediaWiki-Vagrant" title="Special:MyLanguage/MediaWiki-Vagrant">MediaWiki Vagrant</a> – Run MediaWiki on a Linux virtual machine using <a href="https://en.wikipedia.org/wiki/Vagrant_(software)" class="extiw" title="w:Vagrant (software)">Vagrant</a>.</li></ul> <p>Vagrant allows you start a MediaWiki instance you can develop as well as allowing you to add and develop any of 250+ extensions - all with a single command. </p><p>This saves you installation and configuration time compared to manually adding extensions in a Docker or local installation, but it runs a bit slower than the other two options. </p> <div class="mw-heading mw-heading3"><h3 id="Local_installation" data-mw-thread-id="h-Local_installation-Set_up_your_development_environment"><span data-mw-comment-start="" id="h-Local_installation-Set_up_your_development_environment"></span>Local installation<span data-mw-comment-end="h-Local_installation-Set_up_your_development_environment"></span></h3></div> <ul><li><a href="/wiki/Special:MyLanguage/Local_development_quickstart" title="Special:MyLanguage/Local development quickstart">Local development quickstart</a><span style="display:none"><a href="/wiki/Local_development_quickstart" title="Local development quickstart"> </a></span> – Run MediaWiki locally using PHP and Composer.</li></ul> <p>Local installation is a good option if you want to set up a simple development environment quickly without using Docker. </p> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Open_a_code_editor" data-mw-thread-id="h-Open_a_code_editor"><span data-mw-comment-start="" id="h-Open_a_code_editor"></span>Open a code editor<span data-mw-comment-end="h-Open_a_code_editor"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Open_a_code_editor","replies":[]}}--></div> <p>The two recommended code editors for editing MediaWiki are <a href="/wiki/Visual_Studio_Code" title="Visual Studio Code">VSCode</a> and <a href="/wiki/PhpStorm" class="mw-redirect" title="PhpStorm">PhpStorm</a>. VSCode is free and PhpStorm is paid, however, you can acquire a PhpStorm license for free if you are a student by <a rel="nofollow" class="external text" href="https://www.jetbrains.com/community/education/#students">linking your GitHub Education account to your JetBrains account</a>, or by <a href="/wiki/JetBrains_IDEs#How_do_I_get_a_license?" title="JetBrains IDEs">requesting a license</a> granted to Wikimedia. </p><p>To determine which editor you should install and use, know that all-around, PhpStorm has more and more-powerful features than VSCode. However, PhpStorm takes significantly longer to load on start than VSCode as it builds an index of the entire repository whereas VSCode progressively loads. Therefore, VSCode is typically useful for file-viewing sessions or small changes and PhpStorm for larger changes. It makes sense to have both installed for these reasons. </p><p>To develop the MediaWiki codebase that is inside a Docker container you can establish a remote connection to it and open the MediaWiki folder inside it using <a rel="nofollow" class="external text" href="https://code.visualstudio.com/docs/devcontainers/containers#_open-a-wsl-2-folder-in-a-container-on-windows">VSCode</a> or <a rel="nofollow" class="external text" href="https://www.jetbrains.com/help/phpstorm/remote-development-starting-page.html">PhpStorm</a>. </p> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Change_and_test_the_code" data-mw-thread-id="h-Change_and_test_the_code"><span data-mw-comment-start="" id="h-Change_and_test_the_code"></span>Change and test the code<span data-mw-comment-end="h-Change_and_test_the_code"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Change_and_test_the_code","replies":[]}}--></div> <p>Change the code and view your changes by reloading your MediaWiki browser tab. Make sure to follow <a href="/wiki/Special:MyLanguage/Manual:Coding_conventions" title="Special:MyLanguage/Manual:Coding conventions">Manual:Coding conventions</a><span style="display:none"><a href="/wiki/Manual:Coding_conventions" title="Manual:Coding conventions"> </a></span>. Write and run <a href="/wiki/Special:MyLanguage/Manual:Unit_testing" title="Special:MyLanguage/Manual:Unit testing">tests</a> on your code to make sure it works and is formatted properly. </p><p>Note, you can save time by ensuring your changes will be accepted before taking the time to write tests. Create a patch without needed tests and ask for someone to review it stating that you will add tests after they review it. </p> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Create_a_patch" data-mw-thread-id="h-Create_a_patch"><span data-mw-comment-start="" id="h-Create_a_patch"></span>Create a patch<span data-mw-comment-end="h-Create_a_patch"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Create_a_patch","replies":[]}}--></div> <p>Finally, to submit your code to be reviewed and added to the repository you are contributing to, follow <a href="/wiki/Special:MyLanguage/Gerrit/Tutorial" title="Special:MyLanguage/Gerrit/Tutorial">Gerrit/Tutorial</a><span style="display:none"><a href="/wiki/Gerrit/Tutorial" title="Gerrit/Tutorial"> </a></span>. </p><p><span class="anchor" id="Suggested_reading"></span><span class="anchor" id="suggested-reading"></span> <span class="anchor" id="Feedback,_questions_and_support"></span><span class="anchor" id="support"></span> </p> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Communication_tips_and_guidelines" data-mw-thread-id="h-Communication_tips_and_guidelines"><span data-mw-comment-start="" id="h-Communication_tips_and_guidelines"></span>Communication tips and guidelines<span data-mw-comment-end="h-Communication_tips_and_guidelines"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Communication_tips_and_guidelines","replies":["h-Use_Phabricator_tasks_effectively-Communication_tips_and_guidelines","h-Compose_good_questions-Communication_tips_and_guidelines","h-Follow_communication_policies_and_best_practices-Communication_tips_and_guidelines","h-Ask_in_the_right_place-Communication_tips_and_guidelines","h-Be_patient-Communication_tips_and_guidelines"]}}--></div> <figure class="mw-default-size" typeof="mw:File/Thumb"><span><video id="mwe_player_0" poster="//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv/220px-seek%3D738-Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv.jpg" controls="" preload="none" data-mw-tmh="" class="mw-file-element" width="220" height="124" data-durationhint="898" data-mwtitle="Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv" data-mwprovider="wikimediacommons" resource="/wiki/File:Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv"><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/b/b0/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv.480p.vp9.webm" type="video/webm; codecs="vp9, opus"" data-transcodekey="480p.vp9.webm" data-width="854" data-height="480"/><source src="//upload.wikimedia.org/wikipedia/commons/b/b0/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv" type="video/ogg; codecs="theora, vorbis"" data-width="854" data-height="480"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/b/b0/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv.240p.vp9.webm" type="video/webm; codecs="vp9, opus"" data-transcodekey="240p.vp9.webm" data-width="426" data-height="240"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/b/b0/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv.360p.vp9.webm" type="video/webm; codecs="vp9, opus"" data-transcodekey="360p.vp9.webm" data-width="640" data-height="360"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/b/b0/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv.360p.webm" type="video/webm; codecs="vp8, vorbis"" data-transcodekey="360p.webm" data-width="640" data-height="360"/></video></span><figcaption>A developer fixes a bug in a MediaWiki extension, including investigation, git commit, getting it reviewed and merged, and closing the Bugzilla ticket (now replaced by <a href="/wiki/Special:MyLanguage/Phabricator" title="Special:MyLanguage/Phabricator">Phabricator</a><span style="display:none"><a href="/wiki/Phabricator" title="Phabricator"> </a></span>).</figcaption></figure> <p>Follow these tips to communicate effectively and get help from community members. </p> <div class="mw-heading mw-heading3"><h3 id="Use_Phabricator_tasks_effectively" data-mw-thread-id="h-Use_Phabricator_tasks_effectively-Communication_tips_and_guidelines"><span data-mw-comment-start="" id="h-Use_Phabricator_tasks_effectively-Communication_tips_and_guidelines"></span>Use Phabricator tasks effectively<span data-mw-comment-end="h-Use_Phabricator_tasks_effectively-Communication_tips_and_guidelines"></span></h3></div> <p>When you plan to work on a <a href="/wiki/Special:MyLanguage/Phabricator" title="Special:MyLanguage/Phabricator">Phabricator</a><span style="display:none"><a href="/wiki/Phabricator" title="Phabricator"> </a></span> task: </p> <ul><li><b>No need to ask for permission:</b> You can work on unassigned tasks without asking someone to assign them to you. There is no authority who assigns tasks or who needs to be asked first. <ul><li>If a task already has a recent patch in Gerrit, choose a different task to work on instead.</li> <li>If an existing patch in Gerrit has not been merged and has not seen any changes for a long time, you could <a href="/wiki/Special:MyLanguage/Gerrit/Tutorial#Amending_a_change_(your_own_or_someone_else's)" title="Special:MyLanguage/Gerrit/Tutorial">improve that existing patch</a>, based on the feedback in Gerrit and in the task.</li></ul></li> <li><b>Do your research:</b> When you consider working on a task, do research before you start coding. Look at the code, try to understand what it is supposed to do, read related documentation, and try to find the places where you need to make code changes. <ul><li>In a <a href="/wiki/Special:MyLanguage/Phabricator" title="Special:MyLanguage/Phabricator">Phabricator</a><span style="display:none"><a href="/wiki/Phabricator" title="Phabricator"> </a></span> task, use the project tags in the side bar to find the code repository for the task.</li> <li>If you have no idea at all how to fix the bug, consider finding an easier one first.</li></ul></li> <li>You do not need to <b>announce your plans</b> before you start working on a task, but you should communicate that you are working on the task. <ul><li>When you start work, <b>set yourself as task assignee</b> by clicking <i>Edit Task…</i> in Phabricator, and set your Phabricator username in the <i>Assigned To</i> field. This communicates to others that you are working on it, so they don't duplicate work.</li> <li><b>When your plans or interests change:</b> If you are no longer working on a task, remove yourself as the assignee of the task. This tells others that they can work on the task, and they won't expect you to still work on it.</li></ul></li> <li>Follow <a href="/wiki/Special:MyLanguage/Bug_management/Phabricator_etiquette" title="Special:MyLanguage/Bug management/Phabricator etiquette">Phabricator etiquette</a>. <ul><li>In Phabricator tasks, discuss only specific questions about the topic of that task. Don't use Phabricator to ask general questions, like how to set up a development environment or how to fix problems with Gerrit.</li></ul></li></ul> <div class="mw-heading mw-heading3"><h3 id="Compose_good_questions" data-mw-thread-id="h-Compose_good_questions-Communication_tips_and_guidelines"><span data-mw-comment-start="" id="h-Compose_good_questions-Communication_tips_and_guidelines"></span>Compose good questions<span data-mw-comment-end="h-Compose_good_questions-Communication_tips_and_guidelines"></span></h3></div> <ul><li><a rel="nofollow" class="external text" href="https://dontasktoask.com/">Don't ask to ask...just ask!</a>.</li> <li><b>Be specific and provide context:</b> Instead of simply asking "Can you give me more info?", "Please guide me", or "Please tell me how to start", include the following information in your question: <ul><li>What are you trying to achieve?</li> <li>What have you already tried? Copy and paste your commands and their output (if not too long) instead of paraphrasing in your own words.</li> <li>What have you found out already during your research? Include links to code, documentation, or other resources you already consulted.</li></ul></li> <li>Use specific titles and subject lines in your communication. "Proposal draft" or "Need help" is not specific.</li> <li><b>Keep conversations readable:</b> When you reply in <a href="/wiki/Special:MyLanguage/Outreach_programs/Zulip" title="Special:MyLanguage/Outreach programs/Zulip">Zulip</a>, in Phabricator tasks, or on mailing lists, only quote sections of previous comments that are relevant to your response. If you quote a <i>complete</i> previous comment, it makes threads hard to read.</li></ul> <div class="mw-heading mw-heading3"><h3 id="Follow_communication_policies_and_best_practices" data-mw-thread-id="h-Follow_communication_policies_and_best_practices-Communication_tips_and_guidelines"><span data-mw-comment-start="" id="h-Follow_communication_policies_and_best_practices-Communication_tips_and_guidelines"></span>Follow communication policies and best practices<span data-mw-comment-end="h-Follow_communication_policies_and_best_practices-Communication_tips_and_guidelines"></span></h3></div> <p>Before you send or post your question: </p> <ul><li>Read and follow the <a href="/wiki/Special:MyLanguage/Code_of_Conduct" title="Special:MyLanguage/Code of Conduct">code of conduct for Wikimedia technical spaces</a>.</li> <li><b>Use <a href="/wiki/Special:MyLanguage/inclusive_language" title="Special:MyLanguage/inclusive language">Inclusive language</a><span style="display:none"><a href="/wiki/Inclusive_language" title="Inclusive language"> </a></span>:</b> Instead of using terms that assume a gender identity (like "<a rel="nofollow" class="external text" href="https://heyguys.cc/">guys</a>", "madam", or "sir") use the name of the person instead.</li></ul> <div class="mw-heading mw-heading3"><h3 id="Ask_in_the_right_place" data-mw-thread-id="h-Ask_in_the_right_place-Communication_tips_and_guidelines"><span data-mw-comment-start="" id="h-Ask_in_the_right_place-Communication_tips_and_guidelines"></span>Ask in the right place<span data-mw-comment-end="h-Ask_in_the_right_place-Communication_tips_and_guidelines"></span></h3></div> <ul><li><b>Ask in public:</b> Do not send private messages if your conversation topic is not secret. Private messages don't help others.</li> <li><b>Ask and discuss in the best place:</b> <ul><li>In Phabricator tasks, discuss only specific questions about the topic of that task.</li> <li>Ask general technical questions, like how to set up a development environment or how to fix problems with Gerrit, in the places listed on <a href="/wiki/Special:MyLanguage/Communication" title="Special:MyLanguage/Communication">Communication</a><span style="display:none"><a href="/wiki/Communication" title="Communication"> </a></span>.</li> <li>If you take part in an <a href="/wiki/Special:MyLanguage/Outreach_programs" title="Special:MyLanguage/Outreach programs">outreach program</a>, then <a href="/wiki/Special:MyLanguage/Outreach_programs/Zulip" title="Special:MyLanguage/Outreach programs/Zulip">Zulip</a> is for discussing questions about the outreach programs themselves.</li></ul></li></ul> <div class="mw-heading mw-heading3"><h3 id="Be_patient" data-mw-thread-id="h-Be_patient-Communication_tips_and_guidelines"><span data-mw-comment-start="" id="h-Be_patient-Communication_tips_and_guidelines"></span>Be patient<span data-mw-comment-end="h-Be_patient-Communication_tips_and_guidelines"></span></h3></div> <p>After you post your question: </p> <ul><li>Do not ask people for code review in a separate message. People receive Gerrit and Phabricator notifications and will respond when they can.</li> <li>When seeking input and comments, especially during weekends and holidays, you may need to wait until business hours resume. On chat channels like IRC: if nobody answers, try again at a different time; don't just give up!</li> <li>If you don't get an answer even after waiting and being patient, consider if other <a href="/wiki/Special:MyLanguage/Communication" title="Special:MyLanguage/Communication">Communication channels</a> might be a better place to ask your question.</li></ul> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Appendix" data-mw-thread-id="h-Appendix"><span data-mw-comment-start="" id="h-Appendix"></span>Appendix<span data-mw-comment-end="h-Appendix"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Appendix","replies":["h-PHP-Appendix","h-Database-Appendix","h-JavaScript_and_CSS-Appendix","h-MediaWiki-Appendix","h-MediaWiki_extensions-Appendix","h-MediaWiki_skins-Appendix"]}}--></div> <figure typeof="mw:File/Thumb"><a href="/wiki/File:DevCamp_Bangalore_2012_IMG_0482_(199)_qgil.JPG" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/a/ae/DevCamp_Bangalore_2012_IMG_0482_%28199%29_qgil.JPG/400px-DevCamp_Bangalore_2012_IMG_0482_%28199%29_qgil.JPG" decoding="async" width="400" height="199" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/a/ae/DevCamp_Bangalore_2012_IMG_0482_%28199%29_qgil.JPG/600px-DevCamp_Bangalore_2012_IMG_0482_%28199%29_qgil.JPG 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/a/ae/DevCamp_Bangalore_2012_IMG_0482_%28199%29_qgil.JPG/800px-DevCamp_Bangalore_2012_IMG_0482_%28199%29_qgil.JPG 2x" data-file-width="1186" data-file-height="590"/></a><figcaption>MediaWiki contributors at work in Bangalore, India.</figcaption></figure> <div class="mw-heading mw-heading3"><h3 id="PHP" data-mw-thread-id="h-PHP-Appendix"><span data-mw-comment-start="" id="h-PHP-Appendix"></span>PHP<span data-mw-comment-end="h-PHP-Appendix"></span></h3></div> <p>MediaWiki is written in PHP, so you'll need to get familiar with PHP to hack MediaWiki's core. </p> <dl><dt>Learn PHP</dt> <dd> <ul><li><a rel="nofollow" class="external text" href="https://php.net/tutorial">PHP tutorial</a> — Available in many different languages. If you have no knowledge of PHP but know how to program in other object-oriented programming languages, PHP will be easy for you to learn.</li> <li><a href="https://en.wikibooks.org/wiki/PHP_Programming" class="extiw" title="b:PHP Programming">PHP Programming</a> at Wikibooks.</li> <li><a href="https://en.wikiversity.org/wiki/PHP" class="extiw" title="wikiversity:PHP">PHP</a> at Wikiversity.</li></ul></dd></dl> <dl><dt>PHP resources</dt> <dd> <ul><li><a rel="nofollow" class="external text" href="https://php.net/manual">The PHP manual</a> — Available in many different languages.</li> <li><a href="/wiki/Special:MyLanguage/Manual:Coding_conventions/PHP" title="Special:MyLanguage/Manual:Coding conventions/PHP">PHP coding conventions</a> within the MediaWiki community.</li></ul></dd></dl> <dl><dt>Stuff to know</dt> <dd> <ul><li>The script <code>maintenance/eval.php</code> in MediaWiki provides a basic PHP interpreter with MediaWiki objects and classes loaded.</li> <li>Also, the script <code>maintenance/shell.php</code> in MediaWiki is a replacement of <code>maintenance/eval.php</code> based on PsySH, see <a href="/wiki/Special:MyLanguage/Manual:Shell.php" title="Special:MyLanguage/Manual:Shell.php">Manual:Shell.php</a><span style="display:none"><a href="/wiki/Manual:Shell.php" title="Manual:Shell.php"> </a></span></li></ul></dd></dl> <div class="mw-heading mw-heading3"><h3 id="Database" data-mw-thread-id="h-Database-Appendix"><span data-mw-comment-start="" id="h-Database-Appendix"></span>Database<span data-mw-comment-end="h-Database-Appendix"></span></h3></div> <p>Many features require some amount of database manipulation, so you'll often need to be familiar with MySQL/MariaDB. </p> <dl><dt>Learn MySQL/MariaDB</dt> <dd> <ul><li><a rel="nofollow" class="external text" href="https://dev.mysql.com/doc/refman/8.0/en/tutorial.html">MySQL tutorial</a> — From the MySQL reference manual.</li> <li><a href="https://en.wikibooks.org/wiki/MySQL" class="extiw" title="b:MySQL">MySQL</a> at Wikibooks.</li></ul></dd></dl> <dl><dt>MySQL/MariaDB resources</dt> <dd> <ul><li><a rel="nofollow" class="external text" href="https://dev.mysql.com/doc/">MySQL Reference Manuals</a> — Available in many different languages.</li> <li><a rel="nofollow" class="external text" href="https://mariadb.com/kb/">MariaDB Knowledge Base</a></li> <li><a href="/wiki/Special:MyLanguage/Manual:Coding_conventions/Database" title="Special:MyLanguage/Manual:Coding conventions/Database">Database coding conventions</a> within the MediaWiki community.</li> <li><a href="/wiki/Special:MyLanguage/Manual:Database_access" title="Special:MyLanguage/Manual:Database access">Accessing the database</a><span style="display:none"><a href="/wiki/Manual:Database_access" title="Manual:Database access"> </a></span></li></ul></dd></dl> <dl><dt>Stuff to know</dt> <dd> <ul><li>Test your code with MySQL/MariaDB. <ul><li>MediaWiki currently uses <a href="https://en.wikipedia.org/wiki/MySQL" class="extiw" title="w:MySQL">MySQL</a> and <a href="https://en.wikipedia.org/wiki/MariaDB" class="extiw" title="w:MariaDB">MariaDB</a> as the primary database back-end. It also supports other DBMSes, such as <a href="/wiki/Special:MyLanguage/Manual:PostgreSQL" title="Special:MyLanguage/Manual:PostgreSQL">PostgreSQL</a> and <a href="/wiki/Special:MyLanguage/Manual:SQLite" title="Special:MyLanguage/Manual:SQLite">SQLite</a>. However, almost all developers use MySQL/MariaDB and don't test other DBs, which consequently break on a regular basis. You're therefore advised to use MySQL/MariaDB when testing patches, unless you're specifically trying to improve support for another DB. In the latter case, make sure you're careful not to break MySQL/MariaDB (or write queries that are horribly inefficient in it), since MySQL/MariaDB is what everybody else uses.</li></ul></li></ul></dd></dl> <div class="mw-heading mw-heading3"><h3 id="JavaScript_and_CSS" data-mw-thread-id="h-JavaScript_and_CSS-Appendix"><span data-mw-comment-start="" id="h-JavaScript_and_CSS-Appendix"></span>JavaScript and CSS<span data-mw-comment-end="h-JavaScript_and_CSS-Appendix"></span></h3></div> <p>JavaScript and CSS have become omnipresent in front-end code. You don't <i>have</i> to be familiar with JavaScript, jQuery and CSS to work on MediaWiki, but you might need to, depending on what you choose to work on. </p> <dl><dt>Learn JavaScript and CSS</dt> <dd> <ul><li><a href="https://en.wikibooks.org/wiki/JavaScript" class="extiw" title="b:JavaScript">JavaScript</a> and <a href="https://en.wikibooks.org/wiki/Cascading_Style_Sheets" class="extiw" title="b:Cascading Style Sheets">CSS</a> at Wikibooks.</li> <li><a rel="nofollow" class="external text" href="https://learn.jquery.com/">Getting Started with jQuery</a> — A jQuery tutorial.</li> <li><a href="/wiki/Special:MyLanguage/Learning_JavaScript" title="Special:MyLanguage/Learning JavaScript">Learning JavaScript</a> — references and sources.</li></ul></dd></dl> <dl><dt>JavaScript and CSS resources</dt> <dd> <ul><li><a href="/wiki/Special:MyLanguage/Manual:Coding_conventions/JavaScript" title="Special:MyLanguage/Manual:Coding conventions/JavaScript">JavaScript coding conventions</a> within the MediaWiki community.</li> <li><a href="/wiki/Special:MyLanguage/Manual:Coding_conventions/CSS" title="Special:MyLanguage/Manual:Coding conventions/CSS">CSS coding conventions</a> within the MediaWiki community.</li></ul></dd></dl> <div class="mw-heading mw-heading3"><h3 id="MediaWiki" data-mw-thread-id="h-MediaWiki-Appendix"><span data-mw-comment-start="" id="h-MediaWiki-Appendix"></span>MediaWiki<span data-mw-comment-end="h-MediaWiki-Appendix"></span></h3></div> <figure class="mw-default-size" typeof="mw:File/Thumb"><span><video id="mwe_player_1" poster="//upload.wikimedia.org/wikipedia/commons/thumb/5/50/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm/220px-seek%3D1-Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm.jpg" controls="" preload="none" data-mw-tmh="" class="mw-file-element" width="220" height="155" data-durationhint="2014" data-mwtitle="Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm" data-mwprovider="wikimediacommons" resource="/wiki/File:Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm"><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/5/50/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm.480p.vp9.webm" type="video/webm; codecs="vp9, opus"" data-transcodekey="480p.vp9.webm" data-width="680" data-height="480"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/5/50/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm.720p.vp9.webm" type="video/webm; codecs="vp9, opus"" data-transcodekey="720p.vp9.webm" data-width="1020" data-height="720"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/5/50/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm.1080p.vp9.webm" type="video/webm; codecs="vp9, opus"" data-transcodekey="1080p.vp9.webm" data-width="1530" data-height="1080"/><source src="//upload.wikimedia.org/wikipedia/commons/5/50/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm" type="video/webm; codecs="vp9, opus"" data-width="2040" data-height="1440"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/5/50/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm.144p.mjpeg.mov" type="video/quicktime" data-transcodekey="144p.mjpeg.mov" data-width="204" data-height="144"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/5/50/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm.240p.vp9.webm" type="video/webm; codecs="vp9, opus"" data-transcodekey="240p.vp9.webm" data-width="340" data-height="240"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/5/50/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm.360p.vp9.webm" type="video/webm; codecs="vp9, opus"" data-transcodekey="360p.vp9.webm" data-width="510" data-height="360"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/5/50/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm/Introduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm.360p.webm" type="video/webm; codecs="vp8, vorbis"" data-transcodekey="360p.webm" data-width="510" data-height="360"/><track src="https://commons.wikimedia.org/w/api.php?action=timedtext&title=File%3AIntroduction_to_MediaWiki_2023_-_Part_1_Core_concepts.webm&lang=en&trackformat=vtt&origin=%2A" kind="subtitles" type="text/vtt" srclang="en" label="English (en)" data-dir="ltr"/></video></span><figcaption><a href="/wiki/User:Krinkle/MediaWiki_Introduction_2023" class="mw-redirect" title="User:Krinkle/MediaWiki Introduction 2023">Introduction to MediaWiki core concepts</a> </figcaption></figure> <p>The MediaWiki code base is large and some parts are ugly; don't be overwhelmed by it. When you're first starting off, aim to write features or fix bugs which only touch a small region of code. </p> <dl><dt>MediaWiki basics and must-reads</dt> <dd> <ul><li><b><a href="/wiki/Special:MyLanguage/Manual:MediaWiki_architecture" title="Special:MyLanguage/Manual:MediaWiki architecture">MediaWiki architecture</a><span style="display:none"><a href="/wiki/Manual:MediaWiki_architecture" title="Manual:MediaWiki architecture"> </a></span></b> — A high-level overview of the main components of MediaWiki and how they work with each other.</li> <li><b><a href="/wiki/Special:MyLanguage/Security_for_developers" title="Special:MyLanguage/Security for developers">Security for developers</a><span style="display:none"><a href="/wiki/Security_for_developers" title="Security for developers"> </a></span></b> — An overview of why and how to write secure code.</li></ul></dd></dl> <dl><dt>MediaWiki resources</dt> <dd> <ul><li><a href="/wiki/Special:MyLanguage/Manual:Code" title="Special:MyLanguage/Manual:Code">Manual:Code</a><span style="display:none"><a href="/wiki/Manual:Code" title="Manual:Code"> </a></span> — A list of important files and links to more detailed information.</li> <li><a href="/wiki/Special:MyLanguage/Manual:Hooks" title="Special:MyLanguage/Manual:Hooks">Manual:Hooks</a><span style="display:none"><a href="/wiki/Manual:Hooks" title="Manual:Hooks"> </a></span> — A list of hooks. If you're trying to find what part of the codebase does something, often a good place to start is by searching for the related hooks.</li> <li><a href="/wiki/Special:MyLanguage/Manual:Coding_conventions" title="Special:MyLanguage/Manual:Coding conventions">Manual:Coding conventions</a><span style="display:none"><a href="/wiki/Manual:Coding_conventions" title="Manual:Coding conventions"> </a></span> — An overview of general coding conventions within the MediaWiki community.</li> <li><a class="external text" href="https://doc.wikimedia.org/">Code documentation (class reference)</a> — Automatically generated documentation from the code and code comments.</li> <li><a href="/wiki/Special:MyLanguage/Manual:How_to_debug" title="Special:MyLanguage/Manual:How to debug">Manual:How to debug</a><span style="display:none"><a href="/wiki/Manual:How_to_debug" title="Manual:How to debug"> </a></span> — A guide to debugging MediaWiki.</li> <li><a href="/wiki/Special:MyLanguage/Manual:Eval.php" title="Special:MyLanguage/Manual:Eval.php">Manual:Eval.php</a><span style="display:none"><a href="/wiki/Manual:Eval.php" title="Manual:Eval.php"> </a></span> — A tool to interact with MediaWiki objects live.</li></ul></dd></dl> <div class="mw-heading mw-heading3"><h3 id="MediaWiki_extensions" data-mw-thread-id="h-MediaWiki_extensions-Appendix"><span data-mw-comment-start="" id="h-MediaWiki_extensions-Appendix"></span>MediaWiki extensions<span data-mw-comment-end="h-MediaWiki_extensions-Appendix"></span></h3></div> <figure class="mw-default-size" typeof="mw:File/Thumb"><span><video id="mwe_player_2" poster="//upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm/220px-seek%3D1-Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm.jpg" controls="" preload="none" data-mw-tmh="" class="mw-file-element" width="220" height="155" data-durationhint="903" data-mwtitle="Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm" data-mwprovider="wikimediacommons" resource="/wiki/File:Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm"><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/2/2d/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm.480p.vp9.webm" type="video/webm; codecs="vp9, opus"" data-transcodekey="480p.vp9.webm" data-width="680" data-height="480"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/2/2d/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm.720p.vp9.webm" type="video/webm; codecs="vp9, opus"" data-transcodekey="720p.vp9.webm" data-width="1020" data-height="720"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/2/2d/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm.1080p.vp9.webm" type="video/webm; codecs="vp9, opus"" data-transcodekey="1080p.vp9.webm" data-width="1530" data-height="1080"/><source src="//upload.wikimedia.org/wikipedia/commons/2/2d/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm" type="video/webm; codecs="vp9, opus"" data-width="2040" data-height="1440"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/2/2d/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm.144p.mjpeg.mov" type="video/quicktime" data-transcodekey="144p.mjpeg.mov" data-width="204" data-height="144"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/2/2d/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm.240p.vp9.webm" type="video/webm; codecs="vp9, opus"" data-transcodekey="240p.vp9.webm" data-width="340" data-height="240"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/2/2d/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm.360p.vp9.webm" type="video/webm; codecs="vp9, opus"" data-transcodekey="360p.vp9.webm" data-width="510" data-height="360"/><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/2/2d/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm/Introduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm.360p.webm" type="video/webm; codecs="vp8, vorbis"" data-transcodekey="360p.webm" data-width="510" data-height="360"/><track src="https://commons.wikimedia.org/w/api.php?action=timedtext&title=File%3AIntroduction_to_MediaWiki_2023_-_Part_2_Wikipedia_extensions.webm&lang=en&trackformat=vtt&origin=%2A" kind="subtitles" type="text/vtt" srclang="en" label="English (en)" data-dir="ltr"/></video></span><figcaption><a href="/wiki/User:Krinkle/MediaWiki_Introduction_2023" class="mw-redirect" title="User:Krinkle/MediaWiki Introduction 2023">Introduction to MediaWiki extensions</a> </figcaption></figure> <p>If you choose to work on MediaWiki extensions code, the following links provide more information. </p> <dl><dt>MediaWiki extensions basics</dt> <dd> <ul><li><b><a href="/wiki/Special:MyLanguage/Manual:Developing_extensions" title="Special:MyLanguage/Manual:Developing extensions">Developing extensions</a></b> — How to write an extension for MediaWiki.</li> <li><a href="/wiki/Special:MyLanguage/How_to_become_a_MediaWiki_hacker/Extension_Writing_Tutorial" title="Special:MyLanguage/How to become a MediaWiki hacker/Extension Writing Tutorial">Extension writing tutorial</a></li></ul></dd></dl> <dl><dt>MediaWiki extensions resources</dt> <dd> <ul><li><a href="/wiki/Best_practices_for_extensions" title="Best practices for extensions">Best practices for extensions</a></li> <li><a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=4zlGo-hrnt8">A brief introduction to MediaWiki extension development</a> — A video presentation about how to create a MediaWiki extension (<a class="external text" href="https://wikimania2011.wikimedia.org/wiki/File:Wikimania_2011-_A_brief_introduction_to_MediaWiki_extension_development.pdf">slides</a>).</li> <li><a class="external text" href="https://wikitech.wikimedia.org/view/File:Hacking_mediawiki.pdf">Making a MediaWiki extension</a> — Covers how to develop an extension for MediaWiki, best practices, and how to engage the MediaWiki community. From February 2011.</li> <li><a href="/wiki/Special:MyLanguage/Developer_hub#Help_for_extension_developers" title="Special:MyLanguage/Developer hub">Help for extension developers</a> on the Developer Hub</li></ul></dd></dl> <div class="mw-heading mw-heading3"><h3 id="MediaWiki_skins" data-mw-thread-id="h-MediaWiki_skins-Appendix"><span data-mw-comment-start="" id="h-MediaWiki_skins-Appendix"></span>MediaWiki skins<span data-mw-comment-end="h-MediaWiki_skins-Appendix"></span></h3></div> <p><a href="/wiki/Special:MyLanguage/Manual:How_to_make_a_MediaWiki_skin" title="Special:MyLanguage/Manual:How to make a MediaWiki skin">Manual:How to make a MediaWiki skin</a><span style="display:none"><a href="/wiki/Manual:How_to_make_a_MediaWiki_skin" title="Manual:How to make a MediaWiki skin"> </a></span> is helpful if you choose to work on MediaWiki skins. </p> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="See_also" data-mw-thread-id="h-See_also"><span data-mw-comment-start="" id="h-See_also"></span>See also<span data-mw-comment-end="h-See_also"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-See_also","replies":[]}}--></div> <ul><li><a rel="nofollow" class="external text" href="https://codesearch.wmcloud.org/search/">Search for code across repositories</a></li> <li><a href="/wiki/Special:MyLanguage/Developer_hub" title="Special:MyLanguage/Developer hub">Developer hub</a><span style="display:none"><a href="/wiki/Developer_hub" title="Developer hub"> </a></span> – When you've thoroughly read the information in this article, it's time to move on to the information in the developer hub.</li> <li><a href="/wiki/Special:MyLanguage/Code_of_Conduct" title="Special:MyLanguage/Code of Conduct">Code of Conduct</a><span style="display:none"><a href="/wiki/Code_of_Conduct" title="Code of Conduct"> </a></span></li></ul> <div class="mw-heading mw-heading2 ext-discussiontools-init-section"><h2 id="Footnotes" data-mw-thread-id="h-Footnotes"><span data-mw-comment-start="" id="h-Footnotes"></span>Footnotes<span data-mw-comment-end="h-Footnotes"></span></h2><!--__DTELLIPSISBUTTON__{"threadItem":{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Footnotes","replies":[]}}--></div> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">MediaWiki runs on most platforms that can support PHP, however, the lack of certain utilities or operating system features may limit the functionality or performance of MediaWiki on non-LAMP platforms.</span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">MediaWiki has support for <a href="https://en.wikipedia.org/wiki/DBMS" class="extiw" title="w:DBMS">DBMS</a> other than MySQL and MariaDB, including <a href="https://en.wikipedia.org/wiki/PostgreSQL" class="extiw" title="w:PostgreSQL">PostgreSQL</a>, <a href="https://en.wikipedia.org/wiki/SQLite" class="extiw" title="w:SQLite">SQLite</a></span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text">Developers are a mix of volunteers and paid staff (or contractors) for various organizations. For a full list of who works on the MediaWiki code, read the <a href="/wiki/Special:MyLanguage/Developers" title="Special:MyLanguage/Developers">Developers</a><span style="display:none"><a href="/wiki/Developers" title="Developers"> </a></span> article.</span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text">Browse the source code and revisions of code repositories at <a class="external free" href="https://phabricator.wikimedia.org/diffusion/">https://phabricator.wikimedia.org/diffusion/</a> or download the source code to your system by using Gerrit.</span> </li> </ol></div> <!-- NewPP limit report Parsed by mw‐api‐int.codfw.main‐5f67bcf949‐szm8l Cached time: 20241127034145 Cache expiry: 2592000 Reduced expiry: false Complications: [show‐toc] DiscussionTools time usage: 0.024 seconds CPU time usage: 0.442 seconds Real time usage: 0.644 seconds Preprocessor visited node count: 2974/1000000 Post‐expand include size: 24260/2097152 bytes Template argument size: 7269/2097152 bytes Highest expansion depth: 14/100 Expensive parser function count: 54/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 9520/5000000 bytes Lua time usage: 0.071/10.000 seconds Lua memory usage: 1230988/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 293.008 1 -total 83.42% 244.429 28 Template:Ll 25.29% 74.101 56 Template:Translatable 20.93% 61.324 28 Template:Pagelang 19.10% 55.959 25 Template:TNTN 11.16% 32.714 1 New_Developers/Communication_tips 5.61% 16.441 2 Template:Irc 4.03% 11.821 3 Template:Anchor 2.05% 5.995 1 Template:TOCRight 1.86% 5.439 2 Translations:Developer_hub/Page_display_title/en --> <!-- Saved in parser cache with key mediawikiwiki:pcache:15934:|#|:idhash:canonical and timestamp 20241127034145 and revision id 6498783. Rendering was triggered because: api-parse --> </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=How_to_become_a_MediaWiki_hacker&oldid=6498783">https://www.mediawiki.org/w/index.php?title=How_to_become_a_MediaWiki_hacker&oldid=6498783</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:MediaWiki_development" title="Category:MediaWiki development">MediaWiki development</a></li><li><a href="/wiki/Category:MediaWiki_technical_documentation" title="Category:MediaWiki technical documentation">MediaWiki technical documentation</a></li><li><a href="/wiki/Category:New_contributors" title="Category:New contributors">New contributors</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 1 May 2024, at 22:26.</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=How_to_become_a_MediaWiki_hacker&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-6d67bf974d-2phqs","wgBackendResponseTime":166,"wgDiscussionToolsPageThreads":[{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Overview","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Find_or_create_a_task","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Set_up_your_development_environment","replies":[{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Docker-Set_up_your_development_environment","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Vagrant-Set_up_your_development_environment","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Local_installation-Set_up_your_development_environment","replies":[]}]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Open_a_code_editor","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Change_and_test_the_code","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Create_a_patch","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Communication_tips_and_guidelines","replies":[{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Use_Phabricator_tasks_effectively-Communication_tips_and_guidelines","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Compose_good_questions-Communication_tips_and_guidelines","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Follow_communication_policies_and_best_practices-Communication_tips_and_guidelines","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Ask_in_the_right_place-Communication_tips_and_guidelines","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Be_patient-Communication_tips_and_guidelines","replies":[]}]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Appendix","replies":[{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-PHP-Appendix","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-Database-Appendix","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-JavaScript_and_CSS-Appendix","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-MediaWiki-Appendix","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-MediaWiki_extensions-Appendix","replies":[]},{"headingLevel":3,"name":"h-","type":"heading","level":0,"id":"h-MediaWiki_skins-Appendix","replies":[]}]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-See_also","replies":[]},{"headingLevel":2,"name":"h-","type":"heading","level":0,"id":"h-Footnotes","replies":[]}],"wgPageParseReport":{"discussiontools":{"limitreport-timeusage":"0.024"},"limitreport":{"cputime":"0.442","walltime":"0.644","ppvisitednodes":{"value":2974,"limit":1000000},"postexpandincludesize":{"value":24260,"limit":2097152},"templateargumentsize":{"value":7269,"limit":2097152},"expansiondepth":{"value":14,"limit":100},"expensivefunctioncount":{"value":54,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":9520,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 293.008 1 -total"," 83.42% 244.429 28 Template:Ll"," 25.29% 74.101 56 Template:Translatable"," 20.93% 61.324 28 Template:Pagelang"," 19.10% 55.959 25 Template:TNTN"," 11.16% 32.714 1 New_Developers/Communication_tips"," 5.61% 16.441 2 Template:Irc"," 4.03% 11.821 3 Template:Anchor"," 2.05% 5.995 1 Template:TOCRight"," 1.86% 5.439 2 Translations:Developer_hub/Page_display_title/en"]},"scribunto":{"limitreport-timeusage":{"value":"0.071","limit":"10.000"},"limitreport-memusage":{"value":1230988,"limit":52428800}},"cachereport":{"origin":"mw-api-int.codfw.main-5f67bcf949-szm8l","timestamp":"20241127034145","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"How to become a MediaWiki hacker","url":"https:\/\/www.mediawiki.org\/wiki\/How_to_become_a_MediaWiki_hacker","sameAs":"http:\/\/www.wikidata.org\/entity\/Q83","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q83","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2002-11-12T09:30:24Z","dateModified":"2024-05-01T22:26:06Z","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/b\/b0\/Wikimedia_Open_Tech_Chat_2012-11-29-cut.ogv","headline":"free and open-source wiki software, developed by the Wikimedia Foundation"}</script> </body> </html>