How to become a MediaWiki hacker/cs

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 .

Další způsoby, jak se zapojit do komunity Wikimedie, najdete na stránce .

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 a běží na většině operačních systémů. MediaWiki primárně používá databázové servery MySQL nebo MariaDB.

Vývoj probíhá ve stylu otevřeného zdroje. 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, a Special:MyLanguage/MediaWiki on IRC. Hlavní seznam vývojářů je na wikitech-l. Hlavní vývojářské IRC kanály jsou  a.
 * Zdrojový kód je uložen na a spravován pomocí systému kontroly revizí Git a lze jej zobrazit zde
 * Recenze kódu se provádí na 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 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:


 * 1) 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.
 * 2) 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.
 * 3) 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.  the task is large or complex, you should find something easier and work your way up to eventually be able to handle tasks of that size. 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, Memcache a dalšími typy kontejnerů.

Vagrant

 * MediaWiki Vagrant – Spustí MediaWiki na linuxovém virtuálním stroji pomocí Vagrantu.

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
MediaWiki lze vyvinout na instalaci a jejích závislostí na místě na vašem systému.

Nastavení bude trvat mnohem déle než Dockerem nebo Vagrantem.


 * 1)  — Zjistěte nejprve zda-li váš hardware splňuje nároky a doinstalujte vše potřebné ke splnění závislostí.
 * 2)  — Stáhněte si nejnovější zdrojový kód z Gitu.
 * 3)  — 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.



Otevření editoru kódu
The two recommended code editors for editing MediaWiki are VSCode and PhpStorm. VSCode is free and PhpStorm is paid, however, you can acquire a PhpStorm license for free if you are a student by linking your GitHub Education account to your JetBrains account, or by requesting a license granted to Wikimedia.

Chcete-li určit, který editor byste měli použít, vězte, že PhpStorm má více a výkonnějších funkcí než VSCode, ale možná se k němu nebudete chtít "vázat" a místo toho může být prospěšné se naučit a vystavit se neustále rostoucí ekosystém VSCode a jeho rozšíření. Navíc 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é.

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 VSCode or PhpStorm.



Změna a vyzkoušení kódu
Change the code and view your changes by reloading your MediaWiki browser tab. Make sure to follow. Write and run tests on your code to make sure it works and is formatted properly.

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
Finally, to submit your code to be reviewed and added to the repository you are contributing to, follow.



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  v MediaWiki poskytuje základní interpret PHP s načtenými objekty a třídami MediaWiki.
 * Skript  v MediaWiki také nahrazuje skript   založený na PsySH, viz

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.


 * 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
 * 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í:
 *  — Přehled hlavních komponent MediaWiki na vysoké úrovni a jejich vzájemné spolupráce.
 *  — Přehled toho, proč a jak psát bezpečný kód.


 * Zdroje MediaWiki:
 * — Seznam důležitých souborů a odkazy na podrobnější informace.
 * — 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ř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.
 * — Průvodce laděním MediaWiki.
 * — 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
is helpful if you choose to work on MediaWiki skins.



Související odkazy

 * Hledejte kód napříč repozitáři
 * – 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.