How to become a MediaWiki hacker/pl

Ten artykuł został napisany, aby pomóc programistom nauczyć się podstawowych umiejętności potrzebnych do współtworzenia MediaWiki core i rozszerzeń MediaWiki.

Główną ścieżką do rozpoczęcia rozwoju Wikimedia jest przyczynianie się do projektów Wikimedia, które oferują mentoring. Alternatywą bez mentoringu jest naprawienie pierwszego błędu.

Jeśli jesteś doświadczonym programistą, który jest już zaznajomiony z używaniem MediaWiki, zamiast tego odwiedź .

Aby poznać inne sposoby zaangażowania się w społeczność Wikimedia, zobacz .

Przegląd
MediaWiki to oprogramowanie, które obsługuje Wikipedię, jej siostrzane projekty i tysiące wiki na całym świecie.

MediaWiki jest napisane w języku programowania PHP.

Some supporting tools are written in other languages, including batch files, shell scripts, makefiles and Python.

MediaWiki jest głównie napisane dla platformy LAMP i działa na większości systemów operacyjnych. MediaWiki wykorzystuje przede wszystkim serwery baz danych MySQL i MariaDB.

Oprogramowanie MediaWiki jest rozwijane na licencji open source. Rozwój koordynowany jest online i wspierany przez Wikimedia Foundation, ale dużą rolę pełnią też wolontariusze.

Główna lista programistów to wikitech-l. Główne kanały IRC dla deweloperów to 1 i 2 dolary.
 * Dyskusja na temat rozwoju odbywa się na |listach mailingowych oraz |na kanale IRC.
 * Kod źródłowy jest zarządzany za pomocą systemu kontroli wersji Git i można go wyświetlić tutaj
 * Przegląd kodu jest wykonywany na i można go obejrzeć tutaj. Postępuj zgodnie z tym samouczkiem, aby skonfigurować Gita i Gerrita w celu przesyłania poprawek.
 * Raporty o błędach i zadania są zarządzane za i można je przeglądać tutaj

Find or create a task
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:


 * 1) Search Phabricator if an open or closed Task (Document Types field) already exists. If it doesn't, create one. If this is a very small change, don't create one.
 * 2) Find 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.
 * 3) 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 something easier and work your way up to eventually be able to handle tasks of that size. If you believe you can complete it, assign yourself to the Task and begin working on it.


 * 1) Skonfiguruj swoje środowisko programistyczne

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.

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

Środowisko programistyczne Dockera

 * MediaWiki Docker – Uruchom MediaWiki za pomocą Docker (może być używany w systemach gospodarza Linux, Windows lub macOS).

Docker is a good option if you want to setup a MediaWiki installation quickly and are not planning on installing many extensions.

You can also try the new mwcli 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.

Maszyna wirtualna z Vagrantem

 * MediaWiki Vagrant – Run MediaWiki on a Linux virtual machine using Vagrant.

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.

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.



Ręczna instalacja
MediaWiki can be developed by installing it and its dependencies locally on your system.

It will take much more time to set up than Docker or Vagrant.


 * 1)  — Check hardware requirements and install dependencies
 * 2)  — Pobierz najnowszy kod źródłowy z Git.
 * 3)  — Kontynuuj instalację i wstępną konfigurację.
 * 4) * Skonfiguruj różne tryby debugowania w swoim środowisku, aby wcześnie wyświetlać ostrzeżenia i błędy.

Open a code editor
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.

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.

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.

Change and test the code
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.

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.

Create a patch
Finally, to submit your code to be reviewed and added to the repository you are contributing to, follow.



PHP
MediaWiki jest napisane w PHP, więc musisz zapoznać się z PHP, aby pracować z rdzeniem MediaWiki.


 * Naucz się PHP
 * Samouczek PHP — Dostępny w wielu różnych językach. Jeśli nie znasz języka PHP, ale wiesz, jak programować w innych obiektowych językach programowania, PHP będzie dla Ciebie łatwe do nauczenia.
 * PHP Programming at Wikibooks.
 * PHP at Wikiversity.


 * Zasoby PHP:
 * Podręcznik PHP — Dostępny w wielu różnych językach.
 * Konwencje kodowania PHP w społeczności MediaWiki.


 * Warto wiedzieć:
 * Skrypt  w MediaWiki zapewnia podstawowy interpreter PHP z załadowanymi obiektami i klasami MediaWiki.
 * Ponadto skrypt  w MediaWiki jest zamiennikiem   opartym na PsySH, zobacz

Baza danych
Wiele funkcji wymaga pewnej manipulacji bazą danych, więc często będziesz musiał znać MySQL/MariaDB.


 * Naucz się MySQL/MariaDB
 * Samouczek MySQL — Z podręcznika MySQL.
 * MySQL at Wikibooks.


 * Zasoby MySQL/MariaDB
 * Instrukcje obsługi MySQL — Dostępny w wielu różnych językach.
 * Baza wiedzy MariaDB
 * Konwencje kodowania bazy danych w społeczności MediaWiki.


 * Warto wiedzieć:
 * Przetestuj swój kod za pomocą MySQL/MariaDB.
 * MediaWiki używa obecnie MySQL i MariaDB jako podstawowego zaplecza bazy danych. Obsługuje również inne systemy baz danych, takie jak PostgreSQL i SQLite. Jednak prawie wszyscy programiści używają MySQL/MariaDB i nie testują innych baz danych, które w konsekwencji regularnie się psują. Dlatego zaleca się używanie MySQL/MariaDB podczas testowania łatek, chyba że specjalnie próbujesz poprawić obsługę innej bazy danych. W tym drugim przypadku upewnij się, że uważasz, aby nie zepsuć działania w MySQL/MariaDB (lub nie pisać zapytań, które są w nim strasznie nieefektywne), ponieważ MySQL/MariaDB jest tym, czego używają wszyscy inni.



JavaScript i CSS
JavaScript i CSS stały się wszechobecne w kodzie front-endowym. Nie musisz być zaznajomiony z JavaScript, jQuery i CSS, aby pracować na MediaWiki, ale może być to konieczne - w zależności od tego, nad czym zdecydujesz się pracować.


 * Naucz się JavaScript i CSS
 * JavaScript and CSS at Wikibooks.
 * Pierwsze kroki z jQuery — Samouczek jQuery.
 * Learning JavaScript — references and sources.


 * Zasoby JavaScript i CSS
 * Konwencje kodowania JavaScript w społeczności MediaWiki.
 * Konwencje kodowania CSS w społeczności MediaWiki.

MediaWiki
Baza kodu MediaWiki jest duża, a niektóre części są obrzydliwe - nie daj się tym przytłoczyć. Kiedy zaczynasz, staraj się napisać funkcje lub naprawić błędy, które dotykają tylko małego obszaru kodu.


 * Podstawy MediaWiki i niezbędne lektury:
 *  — Ogólny przegląd głównych komponentów MediaWiki i ich wzajemnej współpracy.
 *  — Omówienie dlaczego i jak pisać bezpieczny kod.


 * Zasoby MediaWiki:
 * — Lista ważnych plików i linki do bardziej szczegółowych informacji.
 * — Lista zaczepów (ang. hooks). Jeśli próbujesz znaleźć część kodu, która coś robi, często dobrym miejscem do rozpoczęcia jest wyszukanie powiązanych zaczepów.
 * — Przegląd ogólnych konwencji kodowania w społeczności MediaWiki.


 * Dokumentacja kodu (definicja klas) — Automatycznie generowana dokumentacja na podstawie kodu oraz komentarzy do kodu.
 * — Przewodnik debugowania MediaWiki.
 * — Narzędzie do interakcji z obiektami MediaWiki na żywo.



Rozszerzenia MediaWiki
Jeśli zdecydujesz się pracować nad kodem rozszerzeń MediaWiki, poniższe łącza zawierają więcej informacji.


 * Podstawy rozszerzeń MediaWiki:
 * Developing extensions — Jak napisać rozszerzenie dla MediaWiki.
 * Samouczek pisania rozszerzeń


 * Zasoby rozszerzeń MediaWiki:
 * Sprawdzone metody dotyczące rozszerzeń
 * Krótkie wprowadzenie do rozwoju rozszerzenia MediaWiki — Prezentacja wideo na temat tworzenia rozszerzenia MediaWiki ([slajdy https://wikimania2011.wikimedia.org/wiki/File:Wikimania_2011-_A_brief_introduction_to_MediaWiki_extension_development.pdf]).
 * Making a MediaWiki extension — opisuje, jak opracować rozszerzenie dla MediaWiki, najlepsze praktyki i jak zaangażować społeczność MediaWiki. Od lutego 2011.
 * Pomoc dla programistów rozszerzeń w Centrum programistów

MediaWiki skins
is helpful if you choose to work on MediaWiki skins.



Zobacz też

 * Wyszukaj kod w repozytoriach
 * – Po dokładnym przeczytaniu informacji zawartych w tym artykule nadszedł czas, aby przejść do informacji w centrum deweloperów.