How to become a MediaWiki hacker/de

Diese Seite versucht, Informationen über den Entwicklungsprozess der Software MediaWiki zu geben und Fragen von neuen Entwicklern zu beantworten. Wenn Sie vorhaben, uns beim Programmieren zu helfen, aber noch nicht die notwendigen Kenntnisse haben, ist dies ein guter Ort zum Starten.

Zunächst einige wichtige Links:


 * Die Wikipedia-Code Webseite enthält allgemeine Informationen über die Entwicklung.
 * Die Wikipedia SourceForge Projektseite erlaubt es ihnen, den Code zu betrachten und Fehler zu melden. Beachten Sie, dass wir nicht SourceForge's Patch Tracker verwenden. Sie können alternativ die Adresse http://cvs.defau.lt benutzen. Dort wird durch eine spezielle Technik die aktuelle Entwickler-Codeversion mehrere Stunden früher bereitgestellt als auf der Seite von Sourceforge (Sourceforge verzögert "Browse-CVS" Zugriffe).
 * Mailinglisten: wikitech-l für Entwicklung, mediawiki-l für Unterstützung, mediawiki-cvs für CVS-Bekanntgaben
 * MediaWiki Architektur weitere Dokumentation!

Betriebssysteme
Die MediaWiki-Software ist in PHP geschrieben und benutzt eine MySQL-Datenbank. Beide wurden zu einer Vielfalt von Betriebssystemen portiert, unter Anderem zu den meisten Unix-Varianten und Microsoft Windows. Daher ist es möglich, Wikipedia auf beiden System zu installieren und zu nutzen. Bei der Verwendung von Windows können allerdings einige besondere Funktionen, die externe Dienstprogramme verwenden, nicht verfügbar oder nur durch zusätzliches Herunterladen und zusätzliche Konfiguration verfügbar sein. Vom verwendeten Betriebssystem abhängige Fehler treten gelegentlich auf, daher ist es von Vorteil, einige Kenntnisse über die Unterschiede zwischen den verschiedenen Zielsystemen zu besitzen, unabhängig auf welchem System Sie entwickeln.

Die Programmiersprache PHP
Falls Sie keine Vorkenntnisse von PHP (PHP steht für „PHP: Hypertext Preprocessor“, ursprünglich „Personal Home Page Tools“) besitzen, aber in anderen objektorientierten Sprachen programmieren können, haben Sie keine Angst, PHP wird für Sie leicht zu lernen sein.

Falls Sie keine Kenntnisse von PHP oder anderen objektorientierten Sprachen besitzen, sollten Sie sich mit Begriffen wie Klassen, Objekten, Methoden, Ereignissen und Vererbung vertraut machen.

Falls Sie keine Kenntnisse irgendeiner Programmiersprache besitzen, ist PHP eine gute Sprache zum Beginnen, da sie anderen modernen Programmiersprachen verhältnismäßig ähnlich ist, obwohl sie in der Art ihrer Ausführung besonders ist.

Im Gegensatz zu den meisten Programmen werden PHP-Skripte typischerweise nicht von der Kommandozeile oder einem Fenstermanager gestartet. Stattdessen wird ein PHP-Skript ausgeführt, wenn Sie eine Datei mit der Endung ".php" (neben anderen) von einem Webserver anfordern. Wenn Sie das tun, ruft der Webserver - in unserem Fall Apache - den PHP-Interpreter auf (welcher im Webserver enthalten sein kann), verarbeitet die PHP-Datei und schickt die Ergebnisse zurück an Ihren Browser. Die PHP-Datei kann regulären HTML-Code und PHP-Code enthalten, was es relativ einfach macht, dynamische Funktionen zu einer statischen Webseite hinzuzufügen.

Verwandte Links:


 * PHP Tutorial (in vielen verschiedenen Sprachen verfügbar)
 * Das PHP Handbuch (in vielen verschiedenen Sprachen verfügbar)
 * PHP Wiki
 * PHP

SQL und MySQL
Wikipedia benutzt momentan MySQL als Datenbank. Stellen Sie sicher, dass PHP mit MySQL-Unterstützung kompiliert wurde!

Wir versuchen, das Wiki auch mit anderen Datenbanken zu betreiben, besonders mit postgresql, aus Leistungs- und Portabilitätsgründen.

Installation von MediaWiki
Eine Anleitung, um den Quelltext über CVS zu bekommen erhalten Sie hier: Download from SVN/de.

Sie finden Anleitungen in der Datei INSTALL. Versuchen Sie ihnen zu folgen. Weitere Hilfestellung finden Sie im MediaWiki User's Guide: Installation.

Es ist nicht notwendig, Wikipedia-Datenbank-Dumps herunterzuladen, um am MediaWiki zu arbeiten. Meist ist es sogar einfacher, eine beinahe leere Datenbank mit einigen speziellen Testseiten zu verwenden. Wenn Sie allerdings aus irgendeinem Grund eine Kopie der Wikipedia wünschen, können Sie sich hier einen Dump herunterladen: SQL dumps Sie können sie folgendermassen importieren:
 * 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 rebuildlinks.php

entpacken Sie die Datei
 * Windows (-u wikiadmin -padminpass wikidb (wie bei Linux) kann notwendig sein)
 * mysql < cur_table.sql
 * mysql < old_table.sql
 * cd maintenance ; php rebuildlinks.php

Die Link-Tabellen neu zu erstellen kann einige Zeit benötigen, besonders wenn Sie die englische Datenbank installieren, da diese besonders gross ist. (Sie können auch die alte Tabelle überspringen.) In Database layout wird erklärt, wofür rebuilding.php verwendet wird.

Bitte beachten Sie, falls Sie einen Öffentlichen Mirror der Wikipedia erstellen, dass dies vermutlich nicht der beste Weg ist. Wenn Sie auf diese Art einen Mirror erstellen, bitte verändern Sie den Code so, dass erkenntlich ist, dass es ein Mirror ist, und stellen Sie Links zur Hauptseite zur Verfügung.

Die MediaWiki-Codegrundlagen
Der MediaWiki-Code ist lang und unschön. Lassen Sie sich von ihm nicht überwältigen. Wenn Sie anfangen, versuchen Sie zuerst Funktionen zu schreiben oder Fehler zu verbessern, die sich auf ein kleines Codesegment beschränken.

Der beste Weg etwas über das MediaWiki zu lernen ist, den Code zu lesen.

Sie können die generierte Dokumentation ansehen.

Weiters sind hier einige Punkte zum Anfangen aufgelistet:


 * index.php ist der Haupteingangspunkt, obwohl es nicht sehr offensichtlich ist, wohin es von dort weitergeht.
 * Article.php enthält Code zum Betrachten, Löschen, Zurückgehen, Beobachten und Nicht-Beobachten von Seiten. Es enthält auch einige allgemeine Hilfsmittel zum Arbeiten mit Artikeln, wie z.B. Aufrufen einer Änderung oder Speichern einer Seite.
 * EditPage.php enthält ungefähr die Hälfte des Codes zum Bearbeiten und die Hälfte des Benutzer-Interface bezogenen Codes. Der Rest befindet sich in Article.php und den verschiedenen *Update.php Dateien.
 * Parser.php enthält den meisten Code, der Wikitext zu HTML umwandelt. Einige Teile befinden sich in Skin.php
 * Skin.php ist grundsätzlich eine Sammlung von Funktionen, die HTML für verschiedene andere Komponenten generieren, unter anderem für RC und den Parser.
 * Code für die meisten speziellen Seiten ist in den Special*.php Dateien.
 * Database.php enthält Funktionen, um auf die Datenbank zuzugreifen.
 * OutputPage.php die Heimat der OutputPage-Klasse, die einen Ausgabepuffer darstellt. Senden Sie Text hierher, wird er direkt vor dem Ende des Skripts auf stdout ausgegeben.
 * Title.php enthält alle Titelfunktionen -- inklusive Interwiki-Titeln und #-Fragmenten. Hier existieren einige Funktionen, die Informationen über einen Artikel aus der Datenbank holen.
 * User.php enthält die Userklasse, die Benutzereinstellungen und Zugriffsrechte verwaltet.
 * Setup.php initialisiert und scheint für eine Menge an Laufzeit verantwortlich zu sein. Neben anderen Dingen initialisiert sie sehr viele globale Variablen, die meist Objekte enthalten.
 * DefaultSettings.php enthält Standardeinstellungen für sehr viele globale Variablen, welche in LocalSettings.php teilweise überschrieben werden können. Benutzen Sie nicht isset, fügen Sie immer eine Standardeinstellung für jede globale Variable, die Sie neu einführen, hinzu.

Ihr erster Beitrag
Hier sind einige Ideen:
 * Programmieren Sie etwas, das Sie interessiert.
 * Programmierem Sie ein einfaches Feature, das die Massen begeistert, und das eine ästhetische Verbesserung darstellt.
 * Programmieren Sie eine spezielle Seite, um nützliche Informationen bereitzustellen. Sie können auch eine modulare spezielle Seite schreiben, Beispiele hierzu finden Sie im Extensions-Verzeichnis und dem Extensions-Modul.
 * Schreiben Sie einen Parser-Hook, mehr Informationen in Extending wiki markup
 * Beheben Sie einen störenden kleinen Fehler, um den sich niemand sonst kümmert.

Für genauere Ideen sprechen Sie bitte mit den Entwicklern in #mediawiki. Lassen Sie sich nicht durch mangelnde Ideen abschrecken. Wir haben genug Ideen, um ein halbes Dutzend Programmierer für Jahre zu beschäftigen.

Es ist außerdem empfehlenswert, mit einem erfahrenen Programmierer (z.B. Brion oder Tim) auf #mediawiki zu sprechen, bevor Sie beginnen, besonders wenn Sie nicht sicher sind, wie Ihre Erweiterung andere Teile des Codes beeinflussen wird.

Wenn Sie fertig sind, verlangen Sie CVS-Schreibzugriff, so dass Sie ihre Erweiterung übergeben können (Siehe commit access). Patches zu schreiben kann frustrierend sein, trotzdem werden Sie es ein oder zwei Mal tun müssen, um guten Willen zu zeigen. Bevor Sie ihre Erweiterung übergeben, stellen Sie bitte sicher, dass Sie einfach abgeschaltet werden kann.

Fragen Sie nicht nach Shell-Zugriff auf die Wikimedia Server. Es ist nicht möglich, die Shell in eine Art Sandbox zu packen. Daher erteilen wir Shell-Zugriff nur Leuten, denen wir wirklich vertrauen. Es tut uns leid, Sie abweisen zu müssen, aber meistens können wir nicht anders. Warten Sie, bis es ihnen angeboten wird; oder wenn es zu lange dauert, fragen Sie diskret nach Unterstützung.

Einen Patch posten
Wenn Sie einen Patch erstellt und getestet haben, machen Sie folgendermaßen ein "diff" von der modifizierten Datei: svn di path/to/modified_file.php > my.patch

Anschließend wird ein Kommentar bei der entsprechenden Bug-Meldung, mit dem Patch als Anhang eingefügt.

Wenn Sie die Zugehörigkeit von einem Bug ändern (z.B. sich selbst zuweisen) müssen Sie zuerst wikibugs-l@wikipedia.org zu der CC-Liste hinzufügen!

Siehe auch

 * Development policy