How to become a MediaWiki hacker/de

Andere Sprachen: English (en) 日本語 (ja) Français (fr:)...Translate this page!

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 Projekt Seite erlaubt ihnen, den Code zu betrachten und Fehler zu melden. Beachten sie, dass wir nicht SourceForge's Patch Tracker verwenden
 * 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 Diensteprogramme 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 Objekt-Orientierten 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 Obektorientierten 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ältnissmässig ä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 Interpreten 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: MediaWiki from CVS.

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, das 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, das es ein Mirror ist und stellen sie Links zur Hauptseite zur Verfügung.

Die MediaWiki Code Grundlagen
Der MediaWiki Code ist lang und unschön. Lassen sie sich von ihm nicht überwältigen. Wenn sie beginnen, 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, denn Code zu lesen. Hier sind einige Punkt zum starten:


 * 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 das 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 Ausgabe Puffer dastellt. 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 User Klasse, 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.

Dein erster Beitrag
Hier sind einige Ideen:
 * Programmiere etwas das dich interessiert.
 * Programmiere ein einfaches Feature, das die Massen begeistert, das eine ästhetische Verbesserung darstellt
 * Programmiere eine spezielle Seite um nützliche Informationen bereitzustellen. Du kannst auch eine modulare spezielle Seite schreiben, Beispiele hierzu findest du im Extensions Verzeichnis und dem Extensions Modul.
 * Schreiben sie einen Parser Hook, mehr Informationen in Write your own MediaWiki extension
 * 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 weiterhin eine gute Idee, mit einem erfahrenen Programmierer (z.B0. 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. 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.

Mehr dazu: Development policy