CINXE.COM

Contribute by programming language - Wikimedia Developer Portal

<!doctype html> <html lang="en" class="no-js"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="description" content="Find technical documentation, and connect with Wikimedia developer communities."> <meta name="author" content="Wikimedia Foundation and contributors"> <link rel="canonical" href="https://developer.wikimedia.org/contribute/by-language/"> <link rel="prev" href="../by-topic/"> <link rel="next" href="../search/"> <link rel="icon" href="../../assets/favicon.png"> <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39"> <title>Contribute by programming language - Wikimedia Developer Portal</title> <link rel="stylesheet" href="../../assets/stylesheets/main.8c3ca2c6.min.css"> <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css"> <link rel="stylesheet" href="../../assets/stylesheets/theme.css"> <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> <meta property="og:type" content="website" /> <meta property="og:title" content="Wikimedia Developer Portal - Contribute by programming language" /> <meta property="og:description" content="Find technical documentation, and connect with Wikimedia developer communities." /> <meta property="og:url" content="https://developer.wikimedia.org/contribute/by-language/" /> <meta property="og:image" content="https://developer.wikimedia.org/contribute/by-language/assets/wikimedia.png" /> <meta property="og:image:type" content="image/png" /> <meta property="og:image:width" content="395" /> <meta property="og:image:height" content="310" /> <meta name="twitter:card" content="summary"> <meta name="twitter:title" content="Wikimedia Developer Portal - Contribute by programming language" /> <meta name="twitter:description" content="Find technical documentation, and connect with Wikimedia developer communities." /> <meta name="twitter:image" content="https://developer.wikimedia.org/contribute/by-language/assets/wikimedia.png"> </head> <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo"> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" for="__drawer"></label> <div data-md-component="skip"> <a href="#python" class="md-skip"> Skip to content </a> </div> <div data-md-component="announce"> </div> <header class="md-header md-header--shadow md-header--lifted" data-md-component="header"> <nav class="md-header__inner md-grid" aria-label="Header"> <a href="/" title="Wikimedia Developer Portal" class="md-header__button md-logo" aria-label="Wikimedia Developer Portal" data-md-component="logo"> <img src="../../assets/wikimedia.svg" alt="Wikimedia logo" /> </a> <label class="md-header__button md-icon" for="__drawer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class="md-header__title" data-md-component="header-title"> <div class="md-header__ellipsis"> <div class="md-header__topic"> <span class="md-ellipsis"> Wikimedia Developer Portal </span> </div> <div class="md-header__topic" data-md-component="header-topic"> <span class="md-ellipsis"> Contribute by programming language </span> </div> </div> </div> <form class="md-header__option" data-md-component="palette"> <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0"> <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3"/></svg> </label> <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1"> <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6m0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4M7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <div class="md-header__option"> <div class="md-select"> <button class="md-header__button md-icon" aria-label="Select language"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"/></svg> </button> <div class="md-select__inner"> <ul class="md-select__list"> <li class="md-select__item"> <a href="/de/contribute/by-language/" hreflang="de" class="md-select__link"> Deutsch </a> </li> <li class="md-select__item"> <a href="/contribute/by-language/" hreflang="en" class="md-select__link"> English </a> </li> <li class="md-select__item"> <a href="/en-gb/contribute/by-language/" hreflang="en-gb" class="md-select__link"> English (United Kingdom) </a> </li> <li class="md-select__item"> <a href="/es/contribute/by-language/" hreflang="es" class="md-select__link"> Español </a> </li> <li class="md-select__item"> <a href="/fr/contribute/by-language/" hreflang="fr" class="md-select__link"> Français </a> </li> <li class="md-select__item"> <a href="/lb/contribute/by-language/" hreflang="lb" class="md-select__link"> Lëtzebuergesch </a> </li> <li class="md-select__item"> <a href="/nl/contribute/by-language/" hreflang="nl" class="md-select__link"> Nederlands </a> </li> <li class="md-select__item"> <a href="/pl/contribute/by-language/" hreflang="pl" class="md-select__link"> Polski </a> </li> <li class="md-select__item"> <a href="/pt-br/contribute/by-language/" hreflang="pt-br" class="md-select__link"> Português (Brasil) </a> </li> <li class="md-select__item"> <a href="/sl/contribute/by-language/" hreflang="sl" class="md-select__link"> Slovenščina </a> </li> <li class="md-select__item"> <a href="/sh-latn/contribute/by-language/" hreflang="sh-latn" class="md-select__link"> Srpski (Latinica) </a> </li> <li class="md-select__item"> <a href="/fi/contribute/by-language/" hreflang="fi" class="md-select__link"> Suomi </a> </li> <li class="md-select__item"> <a href="/tr/contribute/by-language/" hreflang="tr" class="md-select__link"> Türkçe </a> </li> <li class="md-select__item"> <a href="/mk/contribute/by-language/" hreflang="mk" class="md-select__link"> Македонски </a> </li> <li class="md-select__item"> <a href="/ru/contribute/by-language/" hreflang="ru" class="md-select__link"> Русский </a> </li> <li class="md-select__item"> <a href="/he/contribute/by-language/" hreflang="he" class="md-select__link"> עברית </a> </li> <li class="md-select__item"> <a href="/ar/contribute/by-language/" hreflang="ar" class="md-select__link"> العربية </a> </li> <li class="md-select__item"> <a href="/bn/contribute/by-language/" hreflang="bn" class="md-select__link"> বাংলা </a> </li> <li class="md-select__item"> <a href="/zh-hans/contribute/by-language/" hreflang="zh-hans" class="md-select__link"> 中文(简体) </a> </li> <li class="md-select__item"> <a href="/zh-hant/contribute/by-language/" hreflang="zh-hant" class="md-select__link"> 中文(繁體) </a> </li> <li class="md-select__item"> <a href="/ja/contribute/by-language/" hreflang="ja" class="md-select__link"> 日本語 </a> </li> <li class="md-select__item"> <a href="/ko/contribute/by-language/" hreflang="ko" class="md-select__link"> 한국어 </a> </li> </ul> </div> </div> </div> <label class="md-header__button md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class="md-search" data-md-component="search" role="dialog"> <label class="md-search__overlay" for="__search"></label> <div class="md-search__inner" role="search"> <form class="md-search__form" name="search"> <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> <label class="md-search__icon md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class="md-search__options" aria-label="Search"> <a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg> </a> <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> </form> <div class="md-search__output"> <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix> <div class="md-search-result" data-md-component="search-result"> <div class="md-search-result__meta"> Initializing search </div> <ol class="md-search-result__list" role="presentation"></ol> </div> </div> </div> </div> </div> </nav> <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs"> <div class="md-grid"> <ul class="md-tabs__list"> <li class="md-tabs__item"> <a href="../../get-started/" class="md-tabs__link"> Get started </a> </li> <li class="md-tabs__item"> <a href="../../use-content/" class="md-tabs__link"> Use content and data </a> </li> <li class="md-tabs__item"> <a href="../../build-tools/" class="md-tabs__link"> Tools and bots </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href="../" class="md-tabs__link"> Contribute </a> </li> <li class="md-tabs__item"> <a href="../../community/" class="md-tabs__link"> Community </a> </li> <li class="md-tabs__item"> <a href="../../get-help/" class="md-tabs__link"> Get help </a> </li> </ul> </div> </nav> </header> <div class="md-container" data-md-component="container"> <main class="md-main" data-md-component="main"> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label="Navigation" data-md-level="0"> <label class="md-nav__title" for="__drawer"> <a href="/" title="Wikimedia Developer Portal" class="md-nav__button md-logo" aria-label="Wikimedia Developer Portal" data-md-component="logo"> <img src="../../assets/wikimedia.svg" alt="Wikimedia logo" /> </a> Wikimedia Developer Portal </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" > <div class="md-nav__link md-nav__container"> <a href="../../get-started/" class="md-nav__link "> <span class="md-ellipsis"> Get started </span> </a> <label class="md-nav__link " for="__nav_1" id="__nav_1_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_1"> <span class="md-nav__icon md-icon"></span> Get started </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../get-started/wikimedia-tech/" class="md-nav__link"> <span class="md-ellipsis"> Learn about Wikimedia technology </span> </a> </li> <li class="md-nav__item"> <a href="../../get-started/new-dev/" class="md-nav__link"> <span class="md-ellipsis"> Understand the development process </span> </a> </li> <li class="md-nav__item"> <a href="../../get-started/tutorials/" class="md-nav__link"> <span class="md-ellipsis"> Learn with tutorials </span> </a> </li> <li class="md-nav__item"> <a href="../../get-started/browse-languages/" class="md-nav__link"> <span class="md-ellipsis"> Browse by programming language </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" > <div class="md-nav__link md-nav__container"> <a href="../../use-content/" class="md-nav__link "> <span class="md-ellipsis"> Use content and data </span> </a> <label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2"> <span class="md-nav__icon md-icon"></span> Use content and data </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../use-content/featured-apps/" class="md-nav__link"> <span class="md-ellipsis"> Explore featured apps </span> </a> </li> <li class="md-nav__item"> <a href="../../use-content/tutorials/" class="md-nav__link"> <span class="md-ellipsis"> Learn with tutorials </span> </a> </li> <li class="md-nav__item"> <a href="../../use-content/content/" class="md-nav__link"> <span class="md-ellipsis"> Use wiki content </span> </a> </li> <li class="md-nav__item"> <a href="../../use-content/data/" class="md-nav__link"> <span class="md-ellipsis"> Access open data </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" > <div class="md-nav__link md-nav__container"> <a href="../../build-tools/" class="md-nav__link "> <span class="md-ellipsis"> Tools and bots </span> </a> <label class="md-nav__link " for="__nav_3" id="__nav_3_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3"> <span class="md-nav__icon md-icon"></span> Tools and bots </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../build-tools/search/" class="md-nav__link"> <span class="md-ellipsis"> Discover and share tools </span> </a> </li> <li class="md-nav__item"> <a href="../../build-tools/get-started/" class="md-nav__link"> <span class="md-ellipsis"> Get started </span> </a> </li> <li class="md-nav__item"> <a href="../../build-tools/tutorials/" class="md-nav__link"> <span class="md-ellipsis"> Learn with tutorials </span> </a> </li> <li class="md-nav__item"> <a href="../../build-tools/apis/" class="md-nav__link"> <span class="md-ellipsis"> Use APIs and data sources </span> </a> </li> <li class="md-nav__item"> <a href="../../build-tools/host-tools/" class="md-nav__link"> <span class="md-ellipsis"> Host tools on Wikimedia servers </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked> <div class="md-nav__link md-nav__container"> <a href="../" class="md-nav__link "> <span class="md-ellipsis"> Contribute </span> </a> <label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex=""> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_4"> <span class="md-nav__icon md-icon"></span> Contribute </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../overview/" class="md-nav__link"> <span class="md-ellipsis"> Learn how contributing works </span> </a> </li> <li class="md-nav__item"> <a href="../by-topic/" class="md-nav__link"> <span class="md-ellipsis"> Contribute by topic </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> <label class="md-nav__link md-nav__link--active" for="__toc"> <span class="md-ellipsis"> Contribute by programming language </span> <span class="md-nav__icon md-icon"></span> </label> <a href="./" class="md-nav__link md-nav__link--active"> <span class="md-ellipsis"> Contribute by programming language </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#python" class="md-nav__link"> <span class="md-ellipsis"> Python </span> </a> <nav class="md-nav" aria-label="Python"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#pywikibot" class="md-nav__link"> <span class="md-ellipsis"> Pywikibot </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#javascript" class="md-nav__link"> <span class="md-ellipsis"> JavaScript </span> </a> <nav class="md-nav" aria-label="JavaScript"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#codex" class="md-nav__link"> <span class="md-ellipsis"> Codex </span> </a> </li> <li class="md-nav__item"> <a href="#signit-firefox-extension" class="md-nav__link"> <span class="md-ellipsis"> SignIt Firefox Extension </span> </a> </li> <li class="md-nav__item"> <a href="#videocuttool" class="md-nav__link"> <span class="md-ellipsis"> VideoCutTool </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#java" class="md-nav__link"> <span class="md-ellipsis"> Java </span> </a> <nav class="md-nav" aria-label="Java"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#wikimedia-commons-android-app" class="md-nav__link"> <span class="md-ellipsis"> Wikimedia Commons Android app </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#kotlin" class="md-nav__link"> <span class="md-ellipsis"> Kotlin </span> </a> <nav class="md-nav" aria-label="Kotlin"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#kiwix" class="md-nav__link"> <span class="md-ellipsis"> Kiwix </span> </a> </li> <li class="md-nav__item"> <a href="#scribe" class="md-nav__link"> <span class="md-ellipsis"> Scribe </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#go" class="md-nav__link"> <span class="md-ellipsis"> Go </span> </a> <nav class="md-nav" aria-label="Go"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#blubber" class="md-nav__link"> <span class="md-ellipsis"> Blubber </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#php" class="md-nav__link"> <span class="md-ellipsis"> PHP </span> </a> <nav class="md-nav" aria-label="PHP"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#mediawiki" class="md-nav__link"> <span class="md-ellipsis"> MediaWiki </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#ruby" class="md-nav__link"> <span class="md-ellipsis"> Ruby </span> </a> <nav class="md-nav" aria-label="Ruby"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#wiki-education-dashboard" class="md-nav__link"> <span class="md-ellipsis"> Wiki Education Dashboard </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#rust" class="md-nav__link"> <span class="md-ellipsis"> Rust </span> </a> <nav class="md-nav" aria-label="Rust"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#mwbot" class="md-nav__link"> <span class="md-ellipsis"> mwbot </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#swift" class="md-nav__link"> <span class="md-ellipsis"> Swift </span> </a> <nav class="md-nav" aria-label="Swift"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#kiwix_1" class="md-nav__link"> <span class="md-ellipsis"> Kiwix </span> </a> </li> <li class="md-nav__item"> <a href="#scribe_1" class="md-nav__link"> <span class="md-ellipsis"> Scribe </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../search/" class="md-nav__link"> <span class="md-ellipsis"> Search all projects </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" > <div class="md-nav__link md-nav__container"> <a href="../../community/" class="md-nav__link "> <span class="md-ellipsis"> Community </span> </a> <label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5"> <span class="md-nav__icon md-icon"></span> Community </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../community/events/" class="md-nav__link"> <span class="md-ellipsis"> Explore hackathons and events </span> </a> </li> <li class="md-nav__item"> <a href="../../community/communicate/" class="md-nav__link"> <span class="md-ellipsis"> Communicate with the tech community </span> </a> </li> <li class="md-nav__item"> <a href="../../community/grow/" class="md-nav__link"> <span class="md-ellipsis"> Learn and share technical skills </span> </a> </li> <li class="md-nav__item"> <a href="../../community/updates/" class="md-nav__link"> <span class="md-ellipsis"> Get tech project updates </span> </a> </li> <li class="md-nav__item"> <a href="../../community/tech-ops/" class="md-nav__link"> <span class="md-ellipsis"> Learn about Wikimedia technical operations </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" > <div class="md-nav__link md-nav__container"> <a href="../../get-help/" class="md-nav__link "> <span class="md-ellipsis"> Get help </span> </a> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_6"> <span class="md-nav__icon md-icon"></span> Get help </label> <ul class="md-nav__list" data-md-scrollfix> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-content" data-md-component="content"> <article class="md-content__inner md-typeset"> <h1>Contribute by programming language</h1> <p>Choose a project to contribute to based on programming language.</p> <h2 id="python">Python<a class="headerlink" href="#python" title="Permanent link">&para;</a></h2> <h3 id="pywikibot">Pywikibot<a class="headerlink" href="#pywikibot" title="Permanent link">&para;</a></h3> <p>Pywikibot is a Python library and collection of scripts that automate work on Wikimedia projects.</p> <ul> <li> <p><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Pywikibot">Read more on mediawiki.org</a></p> </li> <li> <p><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Pywikibot/Development">Contribute</a></p> </li> <li> <p><a href="https://gerrit.wikimedia.org/g/pywikibot/core">Get the source code</a></p> </li> </ul> <h2 id="javascript">JavaScript<a class="headerlink" href="#javascript" title="Permanent link">&para;</a></h2> <h3 id="codex">Codex<a class="headerlink" href="#codex" title="Permanent link">&para;</a></h3> <p>Codex is a toolkit for building user interfaces within the Wikimedia Design System using Vue.</p> <ul> <li> <p><a href="https://doc.wikimedia.org/codex/latest">Read the docs</a></p> </li> <li> <p><a href="https://doc.wikimedia.org/codex/latest/contributing/overview.html">Contribute</a></p> </li> <li> <p><a href="https://gerrit.wikimedia.org/g/design/codex/">Get the source code</a></p> </li> </ul> <h3 id="signit-firefox-extension">SignIt Firefox Extension<a class="headerlink" href="#signit-firefox-extension" title="Permanent link">&para;</a></h3> <p>A web-browser extension that translates words into sign language videos, so you can learn sign language while reading online.</p> <ul> <li> <p><a href="https://meta.wikimedia.org/wiki/Lingua_Libre/SignIt">Read the docs</a></p> </li> <li> <p><a href="https://github.com/lingua-libre/SignIt/blob/master/README.md">Contribute</a></p> </li> <li> <p><a href="https://github.com/lingua-libre/SignIt">Get the source code</a></p> </li> </ul> <h3 id="videocuttool">VideoCutTool<a class="headerlink" href="#videocuttool" title="Permanent link">&para;</a></h3> <p>A tool to edit videos on Wikimedia Commons, built with React JS and Node JS.</p> <ul> <li> <p><a href="https://videocuttool.wmflabs.org">Read the docs</a></p> </li> <li> <p><a href="https://commons.wikimedia.org/wiki/Special:MyLanguage/Commons:VideoCutTool">Contribute</a></p> </li> <li> <p><a href="https://gerrit.wikimedia.org/g/labs/tools/VideoCutTool">Get the source code</a></p> </li> </ul> <h2 id="java">Java<a class="headerlink" href="#java" title="Permanent link">&para;</a></h2> <h3 id="wikimedia-commons-android-app">Wikimedia Commons Android app<a class="headerlink" href="#wikimedia-commons-android-app" title="Permanent link">&para;</a></h3> <p>The Wikimedia Commons Android app allows users to upload pictures from their device to Wikimedia Commons.</p> <ul> <li> <p><a href="https://commons-app.github.io/">Read the docs</a></p> </li> <li> <p><a href="https://github.com/commons-app/commons-app-documentation/blob/master/android/Volunteers-welcome!.md">Contribute</a></p> </li> <li> <p><a href="https://github.com/commons-app/apps-android-commons">Get the source code</a></p> </li> </ul> <h2 id="kotlin">Kotlin<a class="headerlink" href="#kotlin" title="Permanent link">&para;</a></h2> <h3 id="kiwix">Kiwix<a class="headerlink" href="#kiwix" title="Permanent link">&para;</a></h3> <p>An offline reader for people without internet access.</p> <ul> <li> <p><a href="https://www.kiwix.org/">Read the docs</a></p> </li> <li> <p><a href="https://github.com/kiwix/overview/blob/master/CONTRIBUTING.md">Contribute</a></p> </li> <li> <p><a href="https://github.com/kiwix/">Get the source code</a></p> </li> </ul> <h3 id="scribe">Scribe<a class="headerlink" href="#scribe" title="Permanent link">&para;</a></h3> <p>Wikidata-based keyboards for second language learners, including translation, verb conjugation and noun-gender annotation.</p> <ul> <li> <p><a href="https://github.com/scribe-org">Get the source code</a></p> </li> <li> <p><a href="https://github.com/scribe-org/Scribe-Android/blob/main/CONTRIBUTING.md">Contribute (Android)</a></p> </li> <li> <p><a href="https://github.com/scribe-org/Scribe-iOS/blob/main/CONTRIBUTING.md">Contribute (iOS)</a></p> </li> </ul> <h2 id="go">Go<a class="headerlink" href="#go" title="Permanent link">&para;</a></h2> <h3 id="blubber">Blubber<a class="headerlink" href="#blubber" title="Permanent link">&para;</a></h3> <p>Blubber is an infrastructure tool that configures Docker containers and tests code as part of Wikimedia's continuous integration pipeline.</p> <ul> <li> <p><a href="https://doc.wikimedia.org/releng/blubber/">Read the docs</a></p> </li> <li> <p><a href="https://doc.wikimedia.org/releng/blubber/CONTRIBUTING.html">Contribute</a></p> </li> <li> <p><a href="https://gitlab.wikimedia.org/repos/releng/blubber/">Get the source code</a></p> </li> </ul> <h2 id="php">PHP<a class="headerlink" href="#php" title="Permanent link">&para;</a></h2> <h3 id="mediawiki">MediaWiki<a class="headerlink" href="#mediawiki" title="Permanent link">&para;</a></h3> <p>MediaWiki is the software that powers Wikipedia, its sister projects, and thousands of wikis all over the world.</p> <ul> <li> <p><a href="https://www.mediawiki.org/">Visit mediawiki.org</a></p> </li> <li> <p><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/How_to_become_a_MediaWiki_hacker">Contribute</a></p> </li> <li> <p><a href="https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/core">Get the source code</a></p> </li> </ul> <h2 id="ruby">Ruby<a class="headerlink" href="#ruby" title="Permanent link">&para;</a></h2> <h3 id="wiki-education-dashboard">Wiki Education Dashboard<a class="headerlink" href="#wiki-education-dashboard" title="Permanent link">&para;</a></h3> <p>The Wiki Education Dashboard is a web application that supports Wikipedia education assignments, edit-a-thons, and other editing projects, built with Ruby on Rails and React.</p> <ul> <li> <p><a href="https://dashboard.wikiedu.org">Visit the dashboard</a></p> </li> <li> <p><a href="https://github.com/WikiEducationFoundation/WikiEduDashboard/blob/master/CONTRIBUTING.md">Contribute</a></p> </li> <li> <p><a href="https://github.com/WikiEducationFoundation/WikiEduDashboard">Get the source code</a></p> </li> </ul> <h2 id="rust">Rust<a class="headerlink" href="#rust" title="Permanent link">&para;</a></h2> <h3 id="mwbot">mwbot<a class="headerlink" href="#mwbot" title="Permanent link">&para;</a></h3> <p>A framework for writing bots and tools in Rust.</p> <ul> <li> <p><a href="https://docs.rs/mwbot/latest/mwbot/">Read the docs</a></p> </li> <li> <p><a href="https://www.mediawiki.org/wiki/Mwbot-rs#Contributing">Contribute</a></p> </li> <li> <p><a href="https://gitlab.wikimedia.org/repos/mwbot-rs/mwbot">Get the source code</a></p> </li> </ul> <h2 id="swift">Swift<a class="headerlink" href="#swift" title="Permanent link">&para;</a></h2> <h3 id="kiwix_1">Kiwix<a class="headerlink" href="#kiwix_1" title="Permanent link">&para;</a></h3> <p>An offline reader for people without internet access.</p> <ul> <li> <p><a href="https://www.kiwix.org/">Read the docs</a></p> </li> <li> <p><a href="https://github.com/kiwix/overview/blob/master/CONTRIBUTING.md">Contribute</a></p> </li> <li> <p><a href="https://github.com/kiwix/">Get the source code</a></p> </li> </ul> <h3 id="scribe_1">Scribe<a class="headerlink" href="#scribe_1" title="Permanent link">&para;</a></h3> <p>Wikidata-based keyboards for second language learners, including translation, verb conjugation and noun-gender annotation.</p> <ul> <li> <p><a href="https://github.com/scribe-org">Get the source code</a></p> </li> <li> <p><a href="https://github.com/scribe-org/Scribe-Android/blob/main/CONTRIBUTING.md">Contribute (Android)</a></p> </li> <li> <p><a href="https://github.com/scribe-org/Scribe-iOS/blob/main/CONTRIBUTING.md">Contribute (iOS)</a></p> </li> </ul> </article> </div> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type="button" class="md-top md-icon" data-md-component="top" hidden> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class="md-footer"> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class="md-copyright"> <div class="md-copyright__highlight"> Copyright &copy; Wikimedia Foundation and contributors </div> </div> <div class="footer-links"> <ul> <li><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Privacy_policy">Privacy policy</a></li> <li><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Terms_of_Use">Terms of Use</a></li> <li><a href="https://www.gnu.org/licenses/gpl-3.0.html">Code: GPL-3.0-or-later</a></li> <li><a href="https://creativecommons.org/licenses/by-sa/4.0/">Content: CC-BY-SA-4.0</a></li> <li><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Developer_Portal">About</a></li> <li><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Developer_Portal/Contribute">Contribute</a></li> </ul> </div> </div> </div> </footer> </div> <div class="md-dialog" data-md-component="dialog"> <div class="md-dialog__inner md-typeset"></div> </div> <script id="__config" type="application/json">{"base": "../..", "features": ["navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "navigation.top", "search.share", "navigation.indexes", "toc.integrate"], "search": "../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> <script src="../../assets/javascripts/bundle.525ec568.min.js"></script> <script src="../../assets/js/matomo.js"></script> </body> </html>

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