How to become a MediaWiki hacker/pl
Język: | English • dansk • Deutsch • Zazaki • français • Հայերեն • Bahasa Indonesia • italiano • 日本語 • 한국어 • occitan • polski • português do Brasil • српски / srpski • Türkçe • 中文 |
---|
Na stronie tej próbujemy gromadzić informacje związane z procesem tworzenia MediaWiki oraz odpowiadać na pytania świeżo upieczonych twórców tego oprogramowania. Jeśli planujesz pomóc nam w kodowaniu, a nie masz jeszcze odpowiednich umiejętności, to dobrze jest zacząć zabawę od zapoznania się z tą stroną.
Zacznijmy od kilku kluczowych linków:
- The Wikipedia source code page zawiera ogólne informacje dotyczące tworzenia oprogramowania
- Wikipedia SourceForge Project pozwala na wyciągnięcie aktualnego kodu oraz na zgłaszanie błędów. Zwróć uwagę, że nie korzystamy z mechanizmu śledzenia łat SourceForge'a (jeśli nie wiesz, co to są łaty, to sprawdź poniżej).
- Listy emailowe: wikitech-l związana z rozwojem kodu, mediawiki-l związana ze wsparciem, mediawiki-cvs podaje informacje o zmianach w CVS
- MediaWiki architecture zawiera więcej dokumentacji!
Contents
Systemy operacyjne[edit | edit source]
Oprogramowanie MediaWiki napisane jest w języku PHP i korzysta z bazy danych MySQL. Obie te platformy zostały przeniesione na różne systemy operacyjne w tym (ale nie tylko) na większość rodzajów Uniksa oraz na Microsoft Windows. Możliwe zatem jest zainstalowanie i używanie Wikipedii w obu rodzajach systemów. Warto jednak zwrócić uwagę, że w przypadku Windows niektóre mechanizmy korzystające z zewnętrznych narzędzi są niedostępne lub są dostępne po ściągnięciu odpowiedniego oprogramowania i przy odpowiedniej konfiguracji. Raz na jakiś czas pojawiają się błędy oprogramowania, które objawiają się tylko w niektórych systemach - najlepiej jest więc mieć pewne pojęcie o różnicach związanych z różnymi platformami, a nie ograniczać się tylko do własnego systemu.
Język programowania PHP[edit | edit source]
Jeśli nie znasz PHP (PHP to skrót od "PHP: Hypertext Preprocessor" - pol. "PHP: preprocesor hipertekstu"), ale wiesz, jak programować w innych językach obiektowych, to nie musisz się ani trochę bać - PHP nauczysz się z łatwością.
Jeśli nie znasz PHP ani innych obiektowych języków programowania, to powinieneś najpierw zapoznać się z takimi pojęciami jak klasy, obiekty, metody, zdarzenia i dziedziczenie.
Jeśli nie znasz żadnego języka programowania, to PHP jest dobrym językiem, od którego można zacząć, gdyż jest on podobny do innych współczesnych języków, choć ma własny sposób wykonywania instrukcji.
Skrypty PHP od większości programów różni to, że zwykle nie są one uruchamiane z wiersza poleceń czy z menadżera okien. Skrypty te są wykonywane, gdy do serwera WWW zostanie wykonane żądanie dostarczenia pliku z rozszerzeniem ".php" (w typowym przypadku). Po jego wykonaniu serwer WWW, w naszym wypadku Apache, wywołuje interpreter PHP (który może być wbudowany w sam serwer), interpretuje plik PHP i dostarcza wynik do przeglądarki. Plik PHP może zawierać tak zwykły HTML, jak i kod PHP, co sprawia, że relatywnie prosto dodaje się dynamiczną funkcjonalność do statycznej strony WWW.
Pomocne linki:
- Tutorial PHP (dostępny w wielu różnych językach)
- Podręcznik do PHP (dostępny w wielu różnych językach)
- PHP wiki (po niemiecku)
- wikibooks:PHP
SQL i MySQL[edit | edit source]
Warstwę przechowującą dane Wikipedii stanowi obecnie MySQL. Upewnij się, że masz wkompilowane wsparcie MySQL-a w swoim PHP!
Próbujemy również, ze względu na wydajność i przenośność, doprowadzić wiki do działania z innymi warstwami przechowującymi dane, w szczególności do działania z PostgreSQL-em.
Instalowanie MediaWiki[edit | edit source]
O tym, jak pobrać źródła z repozytorium CVS dowiesz się na MediaWiki from CVS.
Instrukcje postępowania znajdują się w pobranych źródłach w pliku INSTALL. Spróbuj z nich skorzystać. Możesz też spróbować przejrzeć MediaWiki User's Guide: Installation.
Opracowywanie nowych funkcjonalności MediaWiki nie wymaga ściągania obrazów bazy danych Wikipedii. W istocie w wielu wypadkach łatwiej jest korzystać z prawie pustej bazy, która zawiera jedynie kilka specjalnie opracowanych stron testowych. Jeśli jednak z jakiegoś powodu chciałbyś mieć kopię Wikipedii, to jej zrzuty możesz ściągnąć z w:Wikipedia:Database download. Importowanie ich może wyglądać jakoś tak:
- Linux
- gzip -dc cur_table.sql.gz | mysql -u wikiadmin -padminpass wikidb
- gzip -dc old_table.sql.gz | mysql -u wikiadmin -padminpass wikidb
- cd maintenance ; php rebuildall.php
- Windows (może być potrzebne -u wikiadmin -padminpass wikidb jak wyżej)
- odzipuj pliki j.w.
- mysql < cur_table.sql
- mysql < old_table.sql
- cd maintenance ; php rebuildall.php
UWAGA: we wcześniejszych wersjach skrypt przebudowujący linki był inny, tzn. trzeba było wykonać
- cd maintenance ; php rebuildlinks.php
Może się zdarzyć, że otrzymasz komunikat o błędzie, mówiący, że dostęp do bazy danych wiki jest zabroniony. Upewnij się wtedy, że utworzyłeś plik AdminSettings.php w swoim głównym katalogu instalacyjnym MediaWiki (w tym samym miejscu, w którym znajduje się LocalSettings.php). Pewne parametry możesz ustawić w pliku AdminSettings.sample - upewnij się, że nazwa użytkownika i hasło dla konta administratora MySQL są poprawnie ustawione. Więcej szczegółów znajdziesz w Manual:Upgrading/pl.
Odbudowywanie tabeli z linkami może zająć trochę czasu, zwłaszcza jeśli zainstalowałeś anglojęzyczną bazę danych, która ma swoje rozmiary. (Zwracamy uwagę, że jeśli masz ochotę, możesz też pominąć starą tabelę.) Zajrzyj do Database layout, aby dowiedzieć się, do czego służy rebuildall.php.
Warto zauważyć, że jeśli chcesz stworzyć publiczny odbiciem Wikipedii, to powyższy opis nie najlepiej odpowiada temu, co trzeba zrobić. Jeśli w ten sposób tworzysz obraz, to nie zapomnij poprawić kodu źródłowego tak, aby strony informowały, że są publicznym odbiciem, oraz aby zawierały linki prowadzące do pierwotnego źródła informacji.
Kod źródłowy MediaWiki[edit | edit source]
Kod źródłowy MediaWiki jest duży i brzydki. Niech Cię to nie przytłacza. Gdy zaczynasz, najlepiej ukierunkuj swą pracę na dodanie funkcjonalności lub poprawienie błędu, który dotyczą niewielkiego obszaru kodu.
Zajrzyj też do: (generated documentation - automatycznie wygenerowana dokumentacja)
Najlepszym sposobem na poznanie MediaWiki jest czytanie jego kodu. Oto kilka dogodnych punktów wejścia:
- index.php główny punkt wejścia, jednak nie jest zbyt oczywiste, gdzie wędruje przetwarzanie z tego pliku.
- Article.php zawiera kod widoku strony, usuwania, cofania, dodawania i usuwania z obserwowanych. Oprócz tego zawiera niektóre ogólne narzędzia związane z artykułami takie jak pobieranie rewizji lub zapisywanie strony.
- EditPage.php zawiera około połowy kodu związanego z edytowaniem, jest to ta połowa, która jest związana z interfejsem użytkownika. Reszta znajduje się w Article.php oraz różnych plikach *Update.php.
- Parser.php zawiera większość kodu, który przekształca wikitekst na HTML. Niektóre drobne kawałki znajdują się też w Skin.php.
- Linker.php zawiera funkcje generujące HTML dla linków i obrazków.
- Kod większości stron specjalnych znajduje się w plikach Special*.php.
- Database.php zawiera stosy funkcji dostępowych do bazy danych.
- OutputPage.php zawiera definicję klasy OutputPage, która implementuje bufor wyjściowy. Wyślij swój tekst tutaj, a zostanie on przekazany na standardowe wyjście tuż przed zakończeniem wykonywania skryptu.
- Title.php poświęcone jest całe tytułom -- obejmuje to też tytuły interwiki oraz fragmenty po znaku "#". Znajdują się tutaj też niektóre funkcje pobierające z bazy danych informacje o artykule.
- User.php zawiera klasę User, która obsługuje preferencje użytkownika oraz jego prawa dostępu.
- Setup.php wykonuje wszelkiego rodzaju inicjalizacje oraz zajmuje dużą część czasu wykonywania (zob. Profiling). Inicjuje on między innymi wiele zmiennych globalnych, przeważnie zawierających obiekty.
- Manual:DefaultSettings.php zawiera wartości domyślne dla dużej liczby zmiennych globalnych, które mogą, lecz nie muszą być zmieniane w LocalSettings.php. Nie używaj isset(), zawsze dodawaj domyślną wartość dla każdej wprowadzanej przez siebie zmiennej.
Twoja pierwsza funkcjonalność[edit | edit source]
Oto kilka pomysłów na nią:
- Zakoduj coś, co Cię interesuje.
- Zakoduj jakąś prostą podniecającą ludzi funkcję, poprawkę estetyczną.
- Napisz stronę specjalną zawierającą jakieś użyteczne informacje. Możesz nawet zrobić moduł strony specjalnej; przykłady znajdziesz w katalogu rozszerzeń, oraz w module rozszerzeń.
- Napisz dodatek do parsera, zajrzyj Write your own MediaWiki extension po więcej informacji.
- Popraw mały, irytujący błąd, który nikogo innego dotąd nie zainteresował.
Bardziej szczegółowe pomysły mogą wyniknąć z rozmowy z twórcami kodu na kanale IRC #mediawiki. Nie zniechęcaj się brakiem pomysłów. Mamy dosyć własnych pomysłów, aby zająć przez rok dobre pół tuzina programistów.
Dobrym pomysłem jest przed rozpoczęciem pisania porozmawianie z dojrzałym twórcą kodu (np. Brionem lub Timem) na #mediawiki, szczególnie, gdy nie jesteś pewny, jak Twoja funkcjonalność wpłynie na inne części kodu.
Gdy już będziesz miał gotową swoją funkcjonalność, to wystaraj się o prawa do zapisu w CVS-ie, abyś mógł swoje poprawki nanieść do repozytorium. Wysyłanie łat (patchy) może być frustrujące, ale możesz chcieć to jednak zrobić raz czy dwa razy, aby zademonstrować dobrą wiarę. Zanim naniesiesz poprawkę do repozytorium upewnij się, że można ją łatwo zdezaktywować.
Nie proś o konto shellowe na serwerach Wikimedia. Nie ma sposobu na ograniczenie dostępu takiego konta do jakiejś małej "piaskownicy", więc taki dostęp jest dawany tylko ludziom, którym możemy naprawdę wierzyć. Odmawianie ludziom jest dla nas bolesne, ale często musimy to robić. Poczekaj, aż Ci to zaproponujemy sami lub jeśli to zajmuje dużo czasu, dyskretnie szukaj wsparcia.
Zobacz też: Development policy/pl