Jak se stát vývojářem MediaWiki
Tento článek je napsán, aby pomohl vývojářům naučit se základní dovednosti potřebné k tomu, aby přispěli k vývoji jádra MediaWiki a rozšíření MediaWiki.
Přispívat do MediaWiki je často obtížné, takže pokud byste se místo toho chtěli zapojit do vývoje Wikimedie, měli byste 'přispívat do projektů Wikimedie, které nabízejí mentoring '. Alternativou bez mentoringu je opravit dobrou první chybu.
Pokud jste zkušený vývojář, který už je obeznámen s používáním MediaWiki, navštivte místo toho Rozcestník pro vývojáře .
Další způsoby, jak se zapojit do komunity Wikimedie, najdete na stránce Jak přispět .
Přehled
MediaWiki je software, na kterém běží Wikipedie, její sesterské projekty a tisíce dalších wikin po celém světě.
Většina MediaWiki a rozšíření je psána v programovacím jazyce PHP. JavaScript se používá pro poskytování interaktivních prvků rozhraní spolu s jQuery a Vue.js jako knihovny klientského javascriptu.
Některé podpůrné nástroje jsou psány v jiných jazycích, včetně dávkových souborů, Shell skripttů, MakeFiles a Pythonu.
MediaWiki je primárně psána pro platformu LAMP [1] a běží na většině operačních systémů. MediaWiki primárně používá databázové servery MySQL nebo MariaDB.[2]
Vývoj probíhá ve stylu otevřeného zdroje[3]. Je do značné míry koordinován online a je podporován nadací Wikimedia Foundation. I když vývojáři dobrovolnických komunit hrají také velkou roli.
- Diskuse o vývoji probíhá na různých Phabricator , Emailové konference a Special:MyLanguage/MediaWiki on IRC. Hlavní seznam vývojářů je na wikitech-l. Hlavní vývojářské IRC kanály jsou #mediawiki připojit se a #wikimedia-dev připojit se.
- Zdrojový kód je uložen na Gerrit a spravován pomocí systému kontroly revizí Git a můžete si jej prohlédnout zde.[4]
- Recenze kódu se provádí na Gerrit a lze ji zobrazit zde. Postupujte podle tohoto návodu a nastavte Git a Gerrit za účelem odesílání záplat.
- Hlášení o chybách a žádosti o funkce se ukládají a projekty jsou koordinovány na Phabricator a lze je zobrazit zde
Najděte nebo vytvořte úkol
Než vůbec vyvinete funkci nebo opravíte chybu v projektu MediaWiki, je důležité, abyste si o tom udělali průzkum. To zahrnuje:
- Vyhledejte Phabricator, pokud otevřená nebo uzavřená úloha (pole Typy dokumentů) již existuje. Pokud ne, jeden vytvořte. Pokud se jedná o velmi malou změnu, nevytvářejte ji.
- Najděte a prozkoumejte kód, který je třeba změnit, aby byla funkce implementována. Okomentujte svá zjištění v úloze Phabricator, pokud by mohla být užitečná pro ostatní, kteří ji implementují nebo kontrolují vaše změny.
- Zjistěte, zda pravděpodobně můžete přidat funkci nebo opravit chybu na základě kódu, který jste zkoumali, a potřebných změn. Pokud je úkol velký nebo složitý, měli byste najít něco jednoduššího a propracovat se tak, abyste nakonec byli schopni zvládnout úkoly takové velikosti. Pokud věříte, že to zvládnete, přiřaďte se k úkolu a začněte na něm pracovat.
Nastavte si vývojové prostředí
Jakmile najdete něco, na čem můžete pracovat, dalším krokem k vývoji MediaWiki nebo rozšíření, je vytvoření prostředí pro spuštění MediaWiki, její databáze a jakékoli další externí funkce, abyste je mohli vyvinout a otestovat.
Můžete nainstalovat a vyvinout MediaWiki pro Linux, Windows nebo MacOS pomocí kterékoli ze tří níže uvedených řešení.
Docker
- MediaWiki Docker – spuštění MediaWiki v Docker kontejneru.
Docker je dobrá volba, pokud chcete rychle nastavit instalaci MediaWiki a neplánujete instalaci mnoha rozšíření.
Můžete také vyzkoušet experimentální nástroj mwcli, který nastaví Docker s několika jednoduchými příkazy a poskytuje základní funkčnost spolupráce mezi MediaWiki, MySQL, Elasticsearch, Memcached a dalšími typy kontejnerů.
Vagrant
- MediaWiki Vagrant – spusťte MediaWiki na virtuálním počítači Linux pomocí Vagrant.
Vagrant umožňuje jedním příkazem spustit MediaWiki instanci, do které lze přidat a následně využít při vývoji až 250+ rozšíření.
To vám ušetří dobu instalace a konfigurace ve srovnání s ručním přidáním rozšíření v Dockeru nebo místní instalaci, ale běží o něco pomaleji než zbývající dvě možnosti.
Místní instalace
- Local development quickstart – Spusťte MediaWiki lokálně pomocí PHP a Composeru.
Místní instalace je dobrou volbou, pokud chcete rychle nastavit jednoduché vývojové prostředí bez použití Dockeru.
Otevření editoru kódu
Dva doporučené editory kódu pro úpravu MediaWiki jsou VSCode a PhpStorm. VSCode je zdarma a PhpStorm je placený, nicméně, pokud jste student, můžete získat licenci PhpStorm zdarma tak, že propojíte svůj účet GitHub Education s účtem JetBrains nebo požádáním o licenci udělenou Wikimedií.
Chcete-li určit, který editor byste měli nainstalovat a používat, vězte, že PhpStorm má více a výkonnějších funkcí než VSCode. Nicméně PhpStorm trvá načítání při startu výrazně déle než VSCode, protože vytváří index celého úložiště, zatímco VSCode se načítá progresivně. Proto je VSCode obvykle užitečný pro relace prohlížení souborů nebo malé změny a PhpStorm pro větší změny. Z těchto důvodů má smysl mít oba nainstalované.
Chcete-li vyvinout kódovou základnu MediaWiki, která je uvnitř kontejneru Docker, můžete k ní vytvořit vzdálené připojení a otevřít v ní složku MediaWiki pomocí VSCode nebo PhpStorm.
Změna a vyzkoušení kódu
Změňte kód a zobrazte své změny znovu načtením karty prohlížeče MediaWiki. Ujistěte se, že dodržujete Příručka:Pravidla pro psaní kódu . Napište a spusťte testy na svém kódu, abyste se ujistili, že funguje a je správně naformátován.
Všimněte si, že můžete ušetřit čas tím, že zajistíte, že vaše změny budou přijaty, než si uděláte čas na psaní testů. Vytvořte opravu bez potřebných testů a požádejte někoho, aby ji zkontroloval, s tím, že přidáte testy poté, co ji zkontroluje.
Vytvoření opravy
Nakonec, chcete-li odeslat svůj kód ke kontrole a přidání do úložiště, do kterého přispíváte, postupujte podle Gerrit/Výukový program .
Komunikační tipy a pokyny
Postupujte podle těchto tipů, abyste mohli efektivně komunikovat a získat pomoc od členů komunity.
Používejte úkoly Phabricatoru efektivně
Pokud plánujete pracovat na úkolu Phabricator u:
- Není třeba žádat o povolení: Můžete pracovat na nepřidělených úkolech, aniž byste někoho požádali, aby vám je přidělil. Neexistuje žádná autorita, která přiděluje úkoly nebo koho je třeba se nejdříve zeptat.
- Pokud úloha již obsahuje nedávnou opravu v Gerritu, vyberte jinou úlohu, na které chcete pracovat.
- Pokud existující záplata v Gerrit nebyla začleněna a dlouho v ní nebyly vidět žádné změny, můžete vylepšit stávající záplatu na základě zpětné vazby v Gerritu a v úloze.
- Udělej si průzkum: Když uvažujete o práci na úkolu, proveďte průzkum, než začnete kódovat. Podívejte se na kód, pokuste se pochopit, co má dělat, přečtěte si související dokumentaci a pokuste se najít místa, kde potřebujete provést změny kódu.
- V úloze Phabricator použijte, k nalezení úložiště kódu pro daný úkol, značky projektu na postranním panelu.
- Pokud vůbec netušíte, jak chybu opravit, zvažte nejprve nalezení něčeho jednoduššího.
- Nemusíte oznamovat své plány, než začnete na úkolu pracovat, ale měli byste sdělit, že na úkolu pracujete.
- Když začnete pracovat, nastavte se jako příjemce úkolu kliknutím na Upravit úkol... (edit task) v Phabricatoru a nastavte své uživatelské jméno Phabricator do pole Přiřazeno (assigned to). Toto sděluje ostatním, že na tom pracujete, takže neduplikují práci.
- Když se změní vaše plány nebo zájmy: Pokud již na úkolu nepracujete, odeberte se jako zmocněnec úkolu. To ostatním říká, že mohou na úkolu pracovat a nebudou očekávat, že na něm budete stále pracovat.
- Řiďte se etiketou Phabricatoru.
- V úkolech Phabricatoru diskutujte pouze o konkrétních otázkách k tématu daného úkolu. Nepoužívejte Phabricator k pokládání obecných otázek, například jak nastavit vývojové prostředí nebo jak opravit problémy s Gerritem.
Pokládejte dobré otázky
- Neváhejte a ptejte se...jen se ptejte!.
- Buďte konkrétní a uveďte souvislosti: Namísto jednoduché otázky "Můžete mi poskytnout více informací?", "Prosím, veďte mě" nebo "Řekněte mi, jak začít", zahrňte do své otázky následující informace:
- Čeho se snažíte dosáhnout?
- Co jste už vyzkoušeli? Zkopírujte a vložte své příkazy a jejich výstup (pokud nejsou příliš dlouhé) namísto parafrázování vlastními slovy.
- Co jste již během svého výzkumu zjistili? Zahrňte odkazy na kód, dokumentaci nebo jiné zdroje, které jste již konzultovali.
- Při komunikaci používejte konkrétní názvy a předměty. "Koncept návrhu" nebo "Potřebuji pomoc" není konkrétní.
- Udržujte konverzace čitelné: Když odpovídáte v Zulipu, v úkolech Phabricatoru nebo v emailových konferencích, citujte pouze části předchozích komentářů, které jsou relevantní pro vaši odpověď. Pokud citujete úplný předchozí komentář, ztěžujete čtení vláken.
Dodržujte komunikační zásady a osvědčené postupy
Než vyjádříte nebo odešlete svůj dotaz:
- Přečtěte si a dodržujte kodex chování pro technické prostory Wikimedie.
- Použijte Inkluzivní jazyk : Namísto použití výrazů, které předpokládají genderovou identitu (jako "kluci", "paní" nebo "pane"), použijte jméno osoby.
Zeptejte se na správném místě
- Ptejte se veřejně: Neposílejte soukromé zprávy, pokud není vaše téma konverzace tajné. Soukromé zprávy ostatním nepomáhají.
- Ptejte se a diskutujte na tom nejlepším místě:
- V úkolech Phabricatoru diskutujte pouze o konkrétních otázkách k tématu daného úkolu.
- Odpovědi na obecné technické otázky, například jak nastavit vývojové prostředí nebo jak opravit problémy s Gerritem, hledejte na místech uvedených na stránce Komunikace .
- Pokud se účastníte outreachového programu, pak je Zulip vhodný pro diskuzi o otázkách týkajících se samotných terénních programů.
Buďte trpěliví
Po odeslání dotazu:
- Nežádejte lidi o kontrolu kódu v samostatné zprávě. Lidé dostávají upozornění Gerritu a Phabricatoru a budou reagovat, až když budou moci.
- Při vyhledávání vstupů a komentářů, zejména během víkendů a svátků, možná budete muset počkat, až se obnoví pracovní doba. Na chatovacích kanálech jako IRC: Pokud nikdo neodpoví, zkuste to znovu v jinou dobu. Jen tak to nevzdávejte!
- Pokud ani po čekání a trpělivosti nedostanete odpověď, zvažte, zda by pro vaši otázku nemohly být lepší komunikační kanály.
Dodatek
PHP
MediaWiki je napsána v PHP, takže se budete muset seznámit s PHP, abyste mohli hacknout jádro MediaWiki.
- Naučte se PHP
-
- Návod PHP — dostupný v mnoha různých jazycích. Pokud nemáte žádné znalosti PHP, ale umíte programovat v jiných objektově orientovaných programovacích jazycích, PHP se snadno naučíte.
- Programování v PHP na Wikibooks (anglicky).
- PHP na Wikiversity (anglicky).
- Zdroje PHP
-
- Příručka PHP — dostupná v mnoha různých jazycích.
- Konvence kódování PHP v rámci komunity MediaWiki.
- Poznání
-
- Skript
maintenance/eval.php
v MediaWiki poskytuje základní interpret PHP s načtenými objekty a třídami MediaWiki. - Skript
maintenance/shell.php
v MediaWiki také nahrazuje skriptmaintenance/eval.php
založený na PsySH, viz Příručka:Shell.php
- Skript
Databáze
Mnoho funkcí vyžaduje určité množství manipulace s databází, takže často budete muset znát MySQL/MariaDB.
- Naučte se MySQL/MariaDB
-
- Návod MySQL — z referenční příručky MySQL.
- MySQL na Wikibooks (anglicky).
- Zdroje MySQL/MariaDB
-
- Referenční příručka MySQL — dostupná v mnoha různých jazycích.
- Databáze znalostí MariaDB
- Konvence kódování databáze v rámci komunity MediaWiki.
- Přístup k databázi
- Poznání
-
- Otestujte svůj kód pomocí MySQL/MariaDB.
- MediaWiki v současné době používá MySQL a MariaDB jako primární back-end databáze. Podporuje také další DBMS, jako je PostgreSQL a SQLite. Téměř všichni vývojáři však používají MySQL/MariaDB a netestují jiné databáze, které se následně pravidelně porušují. Proto se doporučuje při testování oprav používat MySQL/MariaDB, pokud se konkrétně nesnažíte zlepšit podporu pro jinou DB. V druhém případě se ujistěte, že jste opatrní, abyste nerozbili MySQL/MariaDB (nebo v ní nepsali dotazy, které jsou strašně neefektivní), protože MySQL/MariaDB používají všichni ostatní.
- Otestujte svůj kód pomocí MySQL/MariaDB.
JavaScript a CSS
JavaScript a CSS se staly v kódu front-endu všudypřítomné. Abyste mohli pracovat na MediaWiki, musíte znát JavaScript, jQuery a CSS, ale možná je budete potřebovat, v závislosti na tom, na čem se rozhodnete pracovat.
- Naučte se JavaScript a CSS
-
- JavaScript a CSS na Wikibooks (anglicky).
- Začínáme s jQuery (anglicky) — výukový program jQuery.
- Knihovna — referenční popis k JavaScriptovým knihovnám na MediaWiki
- Zdroje JavaScriptu a CSS
-
- Konvence kódování JavaScriptu v rámci komunity MediaWiki.
- Konvence kódování CSS v rámci komunity MediaWiki.
MediaWiki
Základ kódu MediaWiki je velký a některé části jsou nevzhledné. Nenech se tím zahltit. Když začínáte, snažte se napsat funkce nebo opravit chyby, které se dotýkají pouze malé oblasti kódu.
- Základy MediaWiki a povinné čtení
-
- Architektura MediaWiki — přehled hlavních komponent MediaWiki na vysoké úrovni a jejich vzájemné spolupráce.
- Bezpečnost pro vývojáře — přehled toho, proč a jak psát bezpečný kód.
- Zdroje MediaWiki
-
- Příručka:Kód — seznam důležitých souborů a odkazy na podrobnější informace.
- Příručka:Háčky — seznam háčků. Pokud se snažíte zjistit, která část kódové základny něco dělá, často je dobré začít hledáním souvisejících háčků.
- Příručka:Pravidla pro psaní kódu — přehled obecných konvencí kódování v rámci komunity MediaWiki.
- Dokumentace kódu (odkaz na třídu) — automaticky generovaná dokumentace z kódu a komentářů ke kódu.
- Příručka:Jak řešit chyby — průvodce laděním MediaWiki.
- Příručka:Eval.php — nástroj pro živou interakci s objekty MediaWiki.
Rozšíření MediaWiki
Pokud se rozhodnete pracovat s kódem rozšíření MediaWiki, další informace poskytnou následující odkazy.
- Základy rozšíření MediaWiki
-
- Vývoj rozšíření — jak napsat rozšíření pro MediaWiki.
- Výukový program pro psaní rozšíření
- Zdroje rozšíření MediaWiki
-
- Doporučené postupy pro rozšíření
- Stručný úvod do vývoje rozšíření MediaWiki — videoprezentace o tom, jak vytvořit rozšíření MediaWiki (snímky).
- Vytvoření rozšíření MediaWiki — vysvětluje, jak vyvinout rozšíření pro MediaWiki, osvědčené postupy a jak zapojit komunitu MediaWiki. Od února 2011.
- Nápověda pro vývojáře rozšíření ve Vývojářském centru
Vzhledy MediaWiki
Příručka:Jak vytvořit vzhled MediaWiki je užitečná, pokud se rozhodnete pracovat se vzhledy MediaWiki.
Související odkazy
- Hledejte kód napříč repozitáři
- Rozcestník pro vývojáře – pokud jste si důkladně přečetli informace v tomto článku, je čas přejít k informacím ve vývojářském centru.
- Etický kodex
Poznámky pod čarou
- ↑ MediaWiki pracuje na většině platforem, které podporují PHP. Nedostatek určitých nástrojů nebo funkcí operačního systému může omezit funkčnost nebo výkon MediaWiki na jiných platformách než LAMP.
- ↑ MediaWiki podporuje DBMS jiné než MySQL a MariaDB, včetně [ [w:PostgreSQL|PostgreSQL]], SQLite
- ↑ Vývojáři jsou směsicí dobrovolníků a placených zaměstnanců (nebo dodavatelů) pro různé organizace. Úplný seznam lidí, kteří pracují na kódu MediaWiki, naleznete v článku $1.
- ↑ Procházejte zdrojový kód a revize úložišť kódu na https://phabricator.wikimedia.org/diffusion/ nebo si stáhněte zdrojový kód do svého systému pomocí Gerrit.