How to become a MediaWiki hacker/de

Dieser Artikel wurde geschrieben, um Entwickler zu helfen, die notwendigen Fähigkeiten zu erwerben, für die Entwicklung des MediaWiki-Kerns und MediaWiki-Erweiterungen.
 * In den meisten Fällen bei der Arbeit mit MediaWiki, willst du den MediaWiki-Kern nicht hacken, es sei denn, du weißt wirklich, was du tust.

The main path to get started with Wikimedia development is to contribute to Wikimedia projects that offer mentoring. An alternative without mentoring is to fix a good first bug.

Wenn Sie ein erfahrener Entwickler mit MediaWiki-Erfahrung sind, besuchen Sie stattdessen .

Andere Möglichkeiten, um sich in der Wikimedia-Gemeinschaft zu engagieren, siehe .

Überblick
MediaWiki ist die Software, welche die Wikipedia, ihre Schwesterprojekte und Tausende von Wikis in der ganzen Welt antreibt.

MediaWiki ist in PHP programmiert. Es wird die jQuery-JavaScript-Bibliothek eingesetzt.

MediaWiki is primarily written for the LAMP platform and runs on most operating systems. MediaWiki benutzt hauptsächlich MySQL- oder MariaDB-Datenbanken.

Die Entwicklung geschieht im Stile von open source. Dies wird größtenteils online koordiniert und von der Wikimedia-Foundation unterstützt, freiwillige Entwickler tragen jedoch ebenfalls einen großen Teil bei.

Diese Seite soll Ihnen zeigen, wie man sich am besten in das Projekt MediaWiki einbringen kann. Dies ist kein Lernprogramm, sondern nur eine Liste einiger Punkte, die Sie zu verschiedenen Orten führen, zu denen man hingehen kann, um das zu lernen, was notwendig ist.
 * Development discussion happens on various mailing lists and IRC channels. Die allgemeine Mailingliste der Entwickler ist wikitech-l. The main developer IRC channels are #mediawiki and #wikimedia-dev.
 * Source code is managed using the Git revision control system.
 * Code-Durchsichten werden auf durchgeführt. Follow this tutorial to set up Git and Gerrit in order to submit patches.
 * Fehler-Meldungen und Aufgaben werden auf Phabricator verwaltet.

Set up your development environment
Registrieren Sie sich zuallererst für $dev 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

Docker development environment

 * MediaWiki Docker – Führe MediaWiki aus mit Docker (kann auf Linux, Windows oder macOS als Hauptrechner genutzt werden).

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


Feedback, Fragen und Unterstützung
"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. 
 * 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.
 * In a Phabricator task, see the project tags in the side bar to find out which code repository a task is about.
 * If you have general questions which are not tied to the specific task that you want to work on, use generic channels like IRC chat or mailing lists but not the specific task. Questions how to set up your development environment or how to use Gerrit are out of scope for a task.
 * Wenn Sie eine bestimmte Frage über den Fehler selbst zu haben, kommentieren Sie den entsprechenden Bericht.
 * 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.
 * Frage nicht, wenn du eine Aufgabe abarbeiten kannst.
 * 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.

Kommunizieren Sie, dass Sie an einem Fehler arbeiten
Sie müssen nicht fragen, ob sie an einem Task arbeiten dürfen. Sie müssen nicht Ihre Pläne ankündigen, bevor Sie mit der Arbeit an einem Bug beginnen, aber es wird gern gesehen. You are welcome to set yourself as the assignee in a task: Use the dropdown Add Action… → Assign/Claim in Phabricator. 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. 

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.
 * Also, the script  in MediaWiki is a replacement of   based on PsySH, see Manual:Shell.php.

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.
 * Learning JavaScript — references and sources.


 * 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:
 *  — 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.


 * Code Dokumentation (class reference) — 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.

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.
 * Anleitung zum Schreiben von Erweiterungen


 * Quellen zu MediaWiki Erweiterungen:
 * Best practices für Erweiterungen
 * 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.
 * Help for extension developers on the Developer Hub

Siehe auch

 * Search for code across repositories
 * – 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.
 * – a collection of related pages