Wie man ein MediaWiki-Hacker wird

This page is a translated version of the page How to become a MediaWiki hacker and the translation is 86% complete.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Nederlands • ‎Tiếng Việt • ‎Türkçe • ‎dansk • ‎español • ‎français • ‎interlingua • ‎italiano • ‎polski • ‎português • ‎português do Brasil • ‎română • ‎svenska • ‎čeština • ‎Ελληνικά • ‎български • ‎русский • ‎українська • ‎বাংলা • ‎ไทย • ‎中文 • ‎日本語 • ‎한국어

Dieser Artikel wurde geschrieben, um Entwickler zu helfen, die notwendigen Fähigkeiten zu erwerben, für die Entwicklung des MediaWiki-Kerns und MediaWiki-Erweiterungen.

Der Hauptweg, um mit der Wikimedia-Entwicklung zu beginnen, ist 'an Wikimedia-Projekten, die Mentoring anbieten, mitzuarbeiten. Eine Alternative ohne Mentoring ist es, einen guten ersten Fehler zu beheben.

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

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

Überblick

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

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

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

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

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.[5]

Diese Seite soll zeigen, wie man sich zum Projekt MediaWiki beitragen 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.

Set up your development environment

Die meisten Projekte verwenden Git und Gerrit. Folgen Sie dem Gerrit-Tutorial, um Ihr Entwicklerkonto einzurichten. 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 eine vorkonfigurierte virtuelle Maschine (Vagrant oder Docker) verwenden oder die Entwicklungsumgebung manuell aufsetzen.

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).

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.

Communication tips and guidelines

Beobachte, wie ein Entwickler einen Fehler in der MediaWiki-Erweiterung ausbessert, einschließlich der Untersuchung, dem Übertragen nach git, dem Überprüfen, dem Zusammenführen und dem Schließen von Fällen auf Bugzilla (jetzt von Phabricator ersetzt).
  • Do your research first: When you decide to work on a task, you are expected to do some basic research yourself first: Look at the code, try to get some understanding what it is supposed to do, read related documentation, try to find the probable place(s) where you need to make code changes. For a general overview, please read the Basics to know.
    • In a Phabricator task, see the project tags in the side bar to find out which code repository a task is about.
  • Ask and discuss in the best place:
    • In Phabricator tasks, discuss only specific questions about the topic of that very Phabricator task. General technical questions (e.g. how to set up a development environment or problems with Gerrit) are off-topic in Phabricator tasks.
    • For general technical questions, ask the broader Wikimedia community and use generic channels like IRC chat or mailing lists. (If you take part in an outreach program, then you can also use Zulip's technical-support stream.)
    • If you take part in an outreach program, then Zulip is for discussing questions about the outreach programs themselves.
  • Ask good questions: "Can you give me more info?", "Please guide me", "Please tell me how to start" are not good comments to start with: The more specific your questions are, the more likely somebody can answer them quickly. If you have no idea at all how to fix the bug, maybe that bug is not (yet) for you – consider finding an easier one first.
  • Provide context: When asking, explain what you want to achieve, and what you have tried and found out already, so others can help at the right level. Be specific – for example, copy and paste your commands and their output (if not too long) instead of paraphrasing in your own words. This avoids misunderstandings.
  • Ask in public: Do not send private messages if your conversation topic is not secret. Private messages do not help others.
  • Be patient when seeking input and comments, especially during weekends and holidays.
    • On IRC, don't ask to ask, just ask: most questions can be answered by other community members too if you ask on an IRC channel. If nobody answers, please try again at a different time; don't just give up.
    • Do not ask people immediately for code review in a separate message. People receive Gerrit and Phabricator notifications.
  • Keep conversations readable: When you reply in Zulip, in Phabricator tasks, or on mailing lists, please avoid unneeded quoting of a complete previous comment. Provide sufficient context and keep threads readable.
  • Follow the code of conduct for Wikimedia technical spaces.
  • When you plan to work on a Phabricator task:
    • No need to ask for permission: Usually there is no reason to ask if you can work on something or if somebody could assign a task to you. There is no authority who assigns tasks or who needs to be asked first.
    • You do not need to announce your plans before you start working on a task but it would be welcome. At the latest when you are close to proposing a patch for a task, it is good to announce that you are working on it, so that others don't duplicate work: If nobody else is already assigned, set yourself as task assignee by using the Add Action… → Assign/Claim dropdown.
    • Tasks with existing patches:
      • If a task already has a recent patch in Gerrit, choose a different task to work on instead – avoid duplicating work.
      • If an existing patch in Gerrit has not been merged and has not seen any changes for a long time, you could also improve that existing patch, based on the feedback in Gerrit and in the task.
    • When your plans or interests change: If you don't work on a task anymore, please remove yourself as the assignee of the task, so others know that they can work on the task and don't expect you to still work on it.

By communicating clearly and early you get attention, feedback and help from community members.

Anhänge

 
Menschen die an MediaWiki mitwirken, bei der Arbeit in Bangalore, Indien.

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
Wissenswertes
  • Das Script maintenance/eval.php in MediaWiki stellt einen grundlegenden PHP Interpreter bereit, in dem MediaWiki Objekte und Klassen bereits geladen sind.
  • Also, the script maintenance/shell.php in MediaWiki is a replacement of maintenance/eval.php 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/MariaDB Ressourcen
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
Quellen zu JavaScript und CSS

MediaWiki

Die MediaWiki-Codebasis ist groß und einige Bereiche sind hässlich; seien Sie nicht von ihr überwältigt. Zum ersten Einstieg versuchen Sie, Funktionen zu schreiben oder Fehler zu beheben, die nur einen kleinen Bereich des Codes betreffen.

MediaWiki Überblicksartikel und Pflichtlektüre
  • MediaWiki Architektur — Eine Überblick aus der Vogelperspektive über die Hauptkomponenten von MediaWiki und wie diese zusammenarbeiten.
  • Security for developers — Ein Überblick darüber, warum und wie man sicheren Code schreibt.
Quellen zu MediaWiki
  • Manual:Code — Eine Liste der wichtigen Dateien und Links zu weiteren Informationen.
  • Manual:Hooks — 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.
  • Manual:Coding conventions — 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.
  • Manual:How to debug — Eine Anleitung für das Beheben von Fehlern in MediaWiki.
  • Manual:Eval.php — Ein Werkzeug, um live mit MediaWiki Objekten zu interagieren.

MediaWiki-Erweiterungen

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

Überblicksartikel für MediaWiki-Erweiterungen
Quellen zu MediaWiki Erweiterungen

Siehe auch

  1. Nicht alle Anteile von MediaWiki sind in PHP geschrieben. Einige Hilfs-Tools sind in anderen Sprachen realisiert, so z. B. batch files, shell scripts, makefiles und Python.
  2. MediaWiki runs on most platforms that can support PHP, however, the lack of certain utilities or operating system features may limit the functionality or performance of MediaWiki on non-LAMP platforms.
  3. MediaWiki unterstützt auch andere DBMS abseits von MySQL und MariaDB wie Oracle, PostgreSQL, SQLite und Microsoft SQL Server.
  4. Die Entwickler sind ein Mix aus Freiwilligen und bezahlten Mitarbeitern (auch externe) verschiedener Organisationen. Eine vollständige Liste der Beitragenden zum MediaWiki-Code findet sich im Artikel Entwickler .
  5. Browse the source code and revisions of code repositories at https://phabricator.wikimedia.org/diffusion/ or download the source code to your system by using Gerrit.