How to become a MediaWiki hacker/de

Dieser Artikel soll noch unerfahrenen EntwicklerInnen helfen, die notwendigen Fähigkeiten zu erwerben, um zur MediaWiki-Entwicklung beitragen zu können.

Wenn Sie ein/e erfahrene/r EntwicklerIn sind, besuchen Sie stattdessen .

Überblick
MediaWiki ist die Software, welche die Wikipedia, ihre Schwesterprojekte und Tausende von Wikis in der ganzen Welt antreibt. MediaWiki läuft unter den meisten gängigen Betriebssystemen, ist in PHP geschrieben, verwendet primär MySQL Datenbanken und jQuery als Javascript Library für den Browser. Die Entwicklung von MediaWiki wird in erster Linie von der Wikimedia Foundation unterstützt, obwohl freiwillige Community-EntwicklerInnen eine große Rolle spielen.

Diese Seite soll Ihnen zeigen, wie man sich am besten in das Projekt MediaWiki einbringen kann. Dies ist kein Lernprogramm, sondern nur einige Punkte, die Sie zu verschiedenen Orten führen, zu denen man hingehen kann, um das zu lernen, was notwendig ist.

Erste Schritte
Registrieren Sie sich zuallererst für  und lesen Sie das Tutorial von Gerrit  durch, bevor Sie mit dem Runterladen, Testen und Einreichen von Patches beginnen. Danach können Sie fortfahren, um Code herunterzuladen, Änderungen vorzunehmen, diese zu testen und Patches einzureichen. Es stehen Ihnen zwei Möglichkeiten zur Verfügung, um eine Entwicklungsumgebung aufzusetzen: Entweder verwenden Sie eine vorkonfigurierte virtuelle Maschine (Vagrant) oder Sie setzen sich die Entwicklungsumgebung selbstständig auf.

Virtuelle Maschine mit Vagrant

 * Installation von Vagrant - Mit diesen Schritten installieren Sie einen MediaWiki Server auf einer Linux VM, welche unter Linux, Windows oder Mac OS verwendet werden kann

Manuelle Installation

 * Installationsvorausetzungen - Überprüfen Sie bitte zuerst die Handwarevoraussetzungen und installieren Sie dann einen LAMP, MAMP oder WAMP Server (Linux, Mac oder Windows, inklusive Apache, MySQL/MariaDB und PHP).
 * - Laden Sie sich den aktuellsten Quellcode von Git herunter.
 * - Setzen Sie dann die Installation und die Erstkonfiguration fort.
 * Aktivieren Sie frühzeitig die verschiedenen Debug Varianten in Ihrer Umgebung, um auf Warnungen und Fehler früher aufmerksam gemacht zu werden.

Es ist nicht notwendig, irgendwelche Wikipedia Datenbank Auszüge zu generieren, um MediaWiki Features zu erstellen. Eigentlich reicht es vollkommen, eine fast leere Datenbank mit einigen speziellen Testseiten zu verwenden. Falls doch der Fall der Fälle eintrifft, können Sie sich jederzeit einen Wikipedia Datenbank Auszug runterladen.

Nachlesen


Allgemeine Empfehlungen
Sollten Sie an einem Bug Report arbeiten, welcher es nötig macht, bestimmten Quellcode zu schreiben oder zu ändern, sollten Sie diese Seite unbedingt zuerst lesen:

 
 * Es gibt hauptsächlich zwei Wege, mit dem Entwickeln für MediaWiki zu beginnen. Entweder behebt man einen kleinen Bug im bereits bestehenden Code, oder man fügt neue Features hinzu, normalerweise über eine MediaWiki Erweiterung.
 * Coding conventions und alle für Ihre Aufgabe wichtigen Unterseiten (,, , ...)
 * Wenn Sie den  Richtlinien zur Beschreibung eines Commits folgen, insbesondere dem Beispiel-Abschnitt am Ende der Seite, wird automatisch eine Benachrichtigung über Ihren Patch zur entsprechenden Aufgabe in $ phab hinzugefügt. Daher gibt es keine Notwendigkeit mehr,  dem Bericht einen "Bitte überprüfen" Kommentar hinzuzufügen.
 * Prüfen Sie Ihren Code gegen die Pre-Commit-Checkliste  . Überspringen Sie diesen Schritt nicht, Sie werden froh sein, das nicht getan zu haben.
 * Code-Reviews erhalten. Suchen Sie Personen und fügen Sie diese als mögliche Prüfer für Ihren Patch hinzu.
 * Eine Änderung verbessern Erstellen Sie kein neues Gerrit Changeset, um Ihr vorheriges zu verbessern!
 * In den meisten Fällen bei der Arbeit mit MediaWiki, wollen den MediaWiki Kern nicht hacken, es sei denn, Sie wissen wirklich, was Sie tun.

Feedback, Fragen und Unterstützung
 
 * Es wird von Ihnen erwartet, dass Sie zuerst selbst eine grundlegende Recherche durchführen: Sehen Sie sich den Code an, versuchen Sie, ein gewisses Verständnis davon zu bekommen, was er tun soll, lesen Sie die zugehörige Dokumentation, versuchen Sie, mögliche Stellen zu finden, wo Sie Änderungen vornehmen müssen, um den Fehler zu beheben.
 * Wenn Sie allgemeine Fragen zur Infrastruktur, der Software-Architektur oder Workflows haben, die nicht an den spezifische Bug gebunden sind, den Sie bearbeiten wollen, verwenden Sie allgemeine Kanäle wie, Mailinglisten  oder Wiki Diskussionsseiten . Zum Beispiel, wenn Sie ein Problem mit Gerrit haben, könnte die Gerrit Diskussionsseite ein guter Ort sein, um nachzufragen.
 * Wenn Sie eine bestimmte Frage über den Fehler selbst zu haben, kommentieren Sie den entsprechenden Bericht . "Was muss ich tun, um diesen Fehler zu beheben?" ist keine gute Frage, mit der Sie beginnen sollten: Je genauer Sie Fragen sind, desto wahrscheinlicher ist es, dass sie jemand schnell beantworten kann. Wenn Sie überhaupt keine Ahnung haben, wie man den Fehler beheben könnte, ist dieser Fehler ist vielleicht (noch) nicht für Sie geeignet - überlegen Sie bitte, ob Sie zunächst einen leichteren finden können.
 * Wenn Sie fragen, beschreiben Sie ausführlich, was sie versucht und herausgefunden haben, so dass andere auf der richtigen Ebene helfen können. Versuchen Sie, genau zu sein - fügen Sie zum Beispiel Ihre Befehle und die Ausgabe ein (sofern sie nicht zu lang ist), statt das mit Ihren eigenen Worten zu paraphrasieren. Dies vermeidet Missverständnisse.
 * Vermeiden Sie private E-Mails oder Support-Anfragen in unseren Social Media Kanäle.
 * Bitte haben Sie Geduld, wenn Sie nach Hinweisen und Kommentaren suchen. Fragen Sie nicht im IRC, ob Sie fragen dürfen. Fragen Sie einfach: die meisten Fragen können auch durch andere Mitglieder der Community beantwortet werden, wenn Sie auf einem IRC-Kanal fragen. Wenn niemand antwortet, fragen Sie bitte im Fehlerbericht oder auf der korrespondierenden Wiki-Seite; verwerfen Sie die Frage nicht einfach.
 * Erfahren Sie mehr unter.

Kommunizieren Sie, dass Sie an einem Fehler arbeiten
Sie müssen nicht als Zuständiger im Bugreport eingetragen sein oder Ihre Pläne ankündigen, bevor Sie mit der Arbeit an einem Bug beginnen, aber es wird gern gesehen. Spätestens dann, wenn Sie kurz davor sind, einen Patch für einen Fehler zu erstellen, ist es ratsam, in einem Kommentar anzukündigen, dass Sie daran arbeiten. Ihre Ankündigung hilft auch anderen, damit sie nicht zur gleichen Zeit an diesem Fehler arbeiten und doppelte Arbeit machen.

Beachten Sie auch, dass Sie einen anderen Fehler zum Bearbeiten auwählen sollten, wenn ein Fehlerbericht bereits einen aktuellen Link zu einem Patch in Gerrit hat und dem Projekt "Patch-For-Review" zugeordnet wurde - vermeiden Sie doppelte Arbeit. Wenn der Patch in Gerrit noch nicht eingepflegt (gemerged) wurde und schon lange keine Änderungen mehr daran vorgenommen wurden, könnten Sie sich diesem existierenden Patch annehmen und versuchen, ihn zu verbessern.

Wenn Sie aufhören, an einer Aufgabe zu arbeiten, sollten Sie sich selbst als Zuständigen für diese Fehlermeldung entfernen und den Zuständigen auf den Standard-Zuständigen zurücksetzen, so dass andere wissen, dass sie an dieser Fehlermeldung arbeiten können und nicht erwarten, dass Sie weiterhin daran arbeiten.

Indem Sie früh kommunizieren, werden Sie mehr Aufmerksamkeit, Rückmeldungen und Hilfe von den Communitymitgliedern bekommen. 

An Erweiterungen arbeiten
Wenn Sie am Code von MediaWiki Erweiterungen arbeiten wollen, bieten die folgenden Links weitergehende Information.


 * Überblicksartikel für MediaWiki-Erweiterungen
 * Erweiterungen entwickeln — Wie man eine Erweiterung für MediaWiki schreibt.
 * Eine Erweiterung für den Wikimedia-Einsatz schreiben — Wenn Sie vorhaben, Ihre Erweiterung auf Wikimedia Seiten einsetzen zu lassen (möglicherweise inklusive Wikipedia), sind zusätzliche Prüfungen in Bezug auf Geschwindigkeit und Sicherheit notwendig.
 * Anleitung zum Schreiben von Erweiterungen


 * Quellen zu MediaWiki Erweiterungen:
 * Liste einfacher Erweiterungen — Ein einfacher Weg, sich mit der Funktionsweise von Erweiterungen vertraut zu machen.
 * Eine kurze Einführung in die Erweiterungsentwicklung für MediaWiki — Eine Videopräsentation darüber, wie man eine MediaWiki Erweiterung erstellt (Folien).
 * Eine MediaWiki Erweiterung bauen — Behandelt, wie man eine Erweiterung für MediaWiki entwickelt, bewährte Vorgehensweisen und wie man sich mit der MediaWiki Community bekannt macht. Von Februar 2011.
 * Vorlage für Spezialseiten — Fügen Sie eine Spezialseite hinzu, um hilfreiche Informationen darzustellen.
 * Wikitext erweitern — Fügen Sie einen Parserhook hinzu, um den Inhalt von Wikitext zu verändern.

PHP
MediaWiki ist in PHP geschrieben. Daher müssen Sie sich mit PHP vertraut machen, um am Kerncode von MediaWiki zu hacken.


 * PHP lernen
 * PHP-Anleitung — Erhältlich in vielen verschiedenen Sprachen. Wenn Sie kein Wissen über PHP haben, aber in anderen objektorientierten Programmiersprachen programieren können, wird PHP für Sie einfach zu erlernen sein.
 * PHP Programming at Wikibooks.
 * PHP topic at Wikiversity.


 * Quellen zu PHP:
 * Das PHP Handbuch — Erhältlich in vielen verschiedenen Sprachen.
 * PHP-Programmier-Konventionen in der MediaWiki-Community.


 * Wissenswertes:
 * Das Script  in MediaWiki stellt einen grundlegenden PHP Interpreter bereit, in dem MediaWiki Objekte und Klassen bereits geladen sind.

Datenbank
Viele Funktionen benötigen einiges an Datenbank-Änderungen. Daher wird es häufig notwendig sein, dass Sie mit MySQL/MariaDB vertraut sind.


 * Lernen Sie MySQL/MariaDB
 * MySQL Anleitung — Aus dem ReferenzhandbuchMySQL 5.0.
 * MySQL at Wikibooks.


 * MySQL/MariaDB Ressourcen
 * MySQL Referenzhandbücher — Erhältlich in vielen verschiedenen Sprachen.
 * MariaDB Wissensbasis
 * Datenbank-Programmier-Konventionen in der MediaWiki-Community.


 * Wissenswertes:
 * Testen Sie Ihren Code mit MySQL/MariaDB.
 * MediaWiki nutzt aktuell MySQL und MariaDB als hauptsächliches Datenbank-Backend. Es unterstützt auch andere Datenbanksysteme, wie beispielsweise PostgreSQL und SQLite. Allerdings nutzen fast alle Entwickler MySQL/MariaDB und testen nicht mit anderen Datenbanken. Dadurch kommte es regelmäßig dazu, dass diese nicht mehr richtig funktionieren. Es ist daher empfehlenswert, MySQL/MariaDB zu nutzen, wenn man Korrekturen (Patches) testet, es sei denn, Sie versuchen eben, die Unterstützung einer anderen Datenbank zu verbessern. Stellen Sie in diesem Fall sicher, dass Sie MySQL/MariaDB nicht kaputt machen (oder Abfragen schreiben, die schrecklich ineffizient sind), denn MySQL/MariaDB wird von allen anderen genutzt.

JavaScript and CSS
JavaScript und CSS sind im Frontend Code allgegenwärtig geworden. Sie müssen nicht mit JavaScript, jQuery und CSS vertraut sein, um an MediaWiki zu arbeiten, aber es ist möglicherweise notwendig, je nachdem, an was Sie arbeiten wollen.


 * JavaScript and CSS lernen
 * JavaScript and CSS at Wikibooks.
 * Erste Schritte mit jQuery — Eine jQuery Anleitung.


 * Quellen zu JavaScript und CSS
 * JavaScript-Programmier-Konventionen in der MediaWiki-Community.
 * CSS_Programmier-Konventionen in der MediaWiki-Community.

MediaWiki
Die MediaWiki-Codebasis ist groß und einige Bereiche sind hässlich; seien Sie nicht von ihr überwältigt. Wenn noch am Anfang sind, zielen Sie darauf ab, Funktionen schreiben oder Fehler zu beheben, die auf einen kleinen Bereich des Codes beschränkt sind.


 * MediaWiki Überblicksartikel und Pflichtlektüre:
 * MediaWiki Architektur — Eine Überblick aus der Vogelperspektive über die Hauptkomponenten von MediaWiki und wie diese zusammenarbeiten.
 *  — Ein Überblick darüber, warum und wie man sicheren Code schreibt.


 * Quellen zu MediaWiki:
 * — Eine Liste der wichtigen Dateien und Links zu weiteren Informationen.
 * — Eine Liste von Hooks. Wenn Sie versuchen, herauszufinden, welcher Teil des Codes etwas bestimmtes tut, ist es häufig ein guter Ausgangspunkt, nach den entsprechenden Hooks zu suchen.
 * — Ein Überblick über die allgemeinen Konventionen zum Programmierstil innerhalb der MediaWiki Community.
 * — Wege, für MediaWiki zu programmieren, von Benutzereinstellungen über Erweiterungen zum Kerncode.
 * Code Dokumentation — Automatisch aus dem Code und den Codekommentaren erstellte Dokumentation.
 * — Eine Anleitung für das Beheben von Fehlern in MediaWiki.
 * — Ein Werkzeug, um live mit MediaWiki Objekten zu interagieren.

Siehe auch

 * – Wenn Sie die Informationen in diesem Artikel gründlich gelesen haben, ist es an der Zeit, weiter zu den Informationen im Entwickler-Zentrum zu gehen.
 * MediaWiki Virtual Library (MVL) books; this page forms also part of the MediaWiki Developers Guide.
 * – Wenn Sie die Informationen in diesem Artikel gründlich gelesen haben, ist es an der Zeit, weiter zu den Informationen im Entwickler-Zentrum zu gehen.
 * MediaWiki Virtual Library (MVL) books; this page forms also part of the MediaWiki Developers Guide.