Jak se stát vývojářem MediaWiki

This page is a translated version of the page How to become a MediaWiki hacker and the translation is 95% complete.

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.

Hlavní cestou, jak začít s vývojem Wikimedie, je přispívat do projektů Wikimedie, které nabízejí mentoring. Alternativou bez mentoringu je opravit dobře 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 wiki po celém světě.

Přestože je MediaWiki napsána v PHP programovacím jazyce, některé podpůrné nástroje jsou napsány v jiných jazycích, včetně dávkových souborů, shell skriptů, makefiles a Python. Jako klientskou knihovnu JavaScript používá jQuery.

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.

Nastavte si vývojové prostředí

You can install and develop MediaWiki on Linux, Windows, or macOS using any of the three solutions below.

Většina projektů používá Git a Gerrit. Postupujte podle návodu Gerritu a nastavte si svůj vývojářský účet. Poté můžete přejít ke stažení našeho kódu, provádění změn, jejich testování a odesílání oprav. Existují dva způsoby, jak nastavit vývojové prostředí: Pomocí předkonfigurovaného nastavení virtuálního stroje (Docker nebo Vagrant) nebo pomocí ruční konfigurace.

Docker

Můžete také vyzkoušet experimentální nástroj mwcli, který umožňuje vytvořit Docker kontejner s MediaWiki pomocí několika jednoduchých příkazů a poskytuje také základní orchestrační funkce pro jeho provoz. Díky tomu můžete do kontejneru snadno přidávat rozšíření a funkce.

A pokud jej spustíte v systému Windows, umožní Docker sdílet soubory mezi souborovým systémem systému Windows a souborovým systémem kontejneru. This can cause MediaWiki to be very slow if you are using WSL2 based engine, due to the poor performance of its shared directory implementation. If you have Windows Pro, you can switch to the Hyper-V backend in the settings of Docker Desktop for better filesystem performance.

An even faster way to run MediaWiki using Docker in Windows (speeds comparable to manually installing) is to clone MediaWiki and run Docker inside WSL (or install and run mwcli inside of WSL). That way there is no shared filesystem overhead. To develop the MediaWiki codebase that is inside the Docker container you can establish a remote connection to it and open the MediaWiki WSL folder in that is in the container using VSCode or PhpStorm.

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í. Vs srovnání s manuální instalací tím ušetříte čas který byste jinak strávili instalací a konfigurací. Běží rychleji než Docker ve Windows, ale pomaleji než když spustíte Docker ve WSL nebo svou manuální instalaci.

Manuální instalace

MediaWiki can be developed by installing it natively on your system and editing its code. Installing it natively means it will run faster than Docker or Vagrant, but it will take more time to configure.

  1. Příručka:Požadavky na instalaci — Zjistěte nejprve zda-li váš hardware splňuje nároky a doinstalujte vše potřebné ke splnění závislostí.
  2. Stahování z Gitu — stáhněte si nejnovější zdrojový kód z Gitu.
  3. Příručka:Instalační příručka — pokračujte v instalaci a počáteční konfiguraci.
  4. Nastavte ve svém prostředí různé režimy ladění, aby se varování a chyby zobrazovaly včas.

Komunikační tipy a pokyny

Sledujte, jak vývojář opravuje chybu v rozšíření MediaWiki, včetně vyšetřování, odevzdání git, jeho kontroly a sloučení a uzavření karty Bugzilla (nyní nahrazeno Phabricator ).

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 Phabricatoru:

  • 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í patch v Gerrit nebyl začleněn a dlouho v něm nebyly vidět žádné změny, můžete vylepšit stávající patch 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:

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

 
Přispěvatelé MediaWiki při práci v Bangalore v Indii.

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
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 skript maintenance/eval.php založený na PsySH, viz Manual:Shell.php

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
Zdroje MySQL/MariaDB
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í.

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
Zdroje JavaScriptu a CSS

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í
Zdroje 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
Zdroje rozšíření MediaWiki

MediaWiki skins

Manual:How to make a MediaWiki skin is helpful if you choose to work on MediaWiki skins.

Související odkazy

  1. 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.
  2. MediaWiki podporuje DBMS jiné než MySQL a MariaDB, včetně [ [w:PostgreSQL|PostgreSQL]], SQLite
  3. 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.
  4. 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.