Wie man ein MediaWiki-Hacker wird

From MediaWiki.org
Jump to: navigation, search
This page is a translated version of the page How to become a MediaWiki hacker and the translation is 100% complete.

Other languages:
العربية • ‎български • ‎dansk • ‎Deutsch • ‎Ελληνικά • ‎English • ‎español • ‎فارسی • ‎français • ‎magyar • ‎Bahasa Indonesia • ‎italiano • ‎日本語 • ‎한국어 • ‎Nederlands • ‎occitan • ‎ਪੰਜਾਬੀ • ‎polski • ‎português • ‎português do Brasil • ‎română • ‎русский • ‎српски / srpski • ‎svenska • ‎ไทย • ‎Türkçe • ‎Tiếng Việt • ‎中文
Dieser Artikel wurde geschrieben, um EntwicklerInnen zu helfen, die notwendigen Fähigkeiten zu erwerben, um zur MediaWiki-Entwicklung beitragen zu können.

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

Überblick[edit]

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[edit]

Registrieren Sie sich zuallererst für EntwicklerzugangDeveloper access 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[edit]

  • 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[edit]

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[edit]

Allgemeine Empfehlungen[edit]

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:

Beobachten Sie, wie ein Entwickler einen Fehler ausbessert, einschließlich der Untersuchung, dem Übertragen nach git, dem Überprüfen, dem Zusammenführen und dem Schließen der Bugzilla Tickets (jetzt von PhabricatorPhabricator ersetzt).


Feedback, Fragen und Unterstützung[edit]

  • 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 IRCIRC, 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 PhabricatorPhabricator 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 KommunikationCommunication.


Kommunizieren Sie, dass Sie an einem Fehler arbeiten[edit]

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[edit]

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

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


Offene Vorschläge[edit]

Der nachfolgende Abschnitt beschreibt einige Beispielgebiete, in denen du mitarbeiten kannst. Du kannst dich natürlich auch in anderen Bereichen beteiligen.

In der oberen rechten Ecke der Aufgabe (task, bug report) in Phabricator siehst du das Produkt und die Komponente wo das Problem auftritt. Dies stellt eine Hilfestellung da, in welchem Teil des Git Repository sich der Code befindet und welches Entwicklerteam du kontaktieren kannst, wenn du es umfassender diskutieren möchtest (da sich Kommentare im Bug Report möglichst auf das spezifisch beschriebene Problem beziehen sollten).

Dokumentation[edit]

Pywikibot[edit]

PyWikibot ist ein auf Python basierendes Framework um Bots für MediaWiki zu schreiben Stelle deine allgemeinen Fragen zur Entwicklung auf der Pywikibot mailing list und dem #pywikibot IRC Kanal.

Multimedia[edit]

Stelle deine allgemeinen Multimedia Entwicklungsfragen auf der multimedia mailing list und dem #wikimedia-multimedia IRC Kanal.

Mobile Apps[edit]

Es gibt verschiedene Anwendungen für mobile Geräte (Android, iOS, Windows Phone, ...), um auf Wikimedia Wikis zugreifen zu können. Lies die allgemeine Entwicklungsinformation und stelle deine Fragen auf der Mobile mailing list und dem #wikimedia-mobile IRC Kanal.

Lesen[edit]

Das Reading Team entwickelt Software, die die lesenden Nutzer von Wikimedia Wikis bedient. Wir organisieren ebenfalls die Weberfahrung auf mobilen Endgeräten. Lies die allgemeine Entwicklungsinformation und stelle deine Fragen auf der Mobile mailing list und dem #wikimedia-mobile IRC Kanal.

Wikidata[edit]

Wikidata ist der zentrale Datenspeicher für strukturierte Informationen wie Interwiki-Referenzen und statistische Informationen. Ask your general development questions on the Wikidata mailing list, the #wikidata IRC channel and on the wiki.

Huggle[edit]

Huggle ist ein Programm zum Aufspühren von Vandalismus innerhalb der Wikimedia-Projekte. Geschrieben ist das Programm in der Programmiersprache C++.

Browsertests und Qualitätskontrolle[edit]

Automated browser tests help Wikimedia engineers produce quality user facing software faster. See the page on Browser testing for more on what technologies we use and how to get involved. Für mehr Informationen, siehe Quality Assurance.

Language Engineering (Localization/Translation/Internationalization)[edit]

Ask your general Language Engineering development questions on the mediawiki-i18n mailing list and the #mediawiki-i18n IRC channel.

VisualEditor und Parsoid[edit]

VisualEditor is MediaWiki's WYSIWYG editor. Ask your general VisualEditor development questions on the wikitech mailing list and the #mediawiki-visualeditor IRC channel.

VisualEditor is powered by Parsoid, a wikitext parser and runtime. Ask your general Parsoid development questions on the wikitext mailing list and the #mediawiki-parsoid IRC channel.

Discovery / Search[edit]

The Discovery team builds the path of anonymous discovery to a trusted and relevant source of knowledge. Ask your general development questions on the Discovery mailing list and on the #wikimedia-discovery IRC channel.

Analysen[edit]

The Analytics team empowers and supports data-informed decision making in Wikimedia. Ask your general development questions on the Analytics mailing list.

Design[edit]

Fixing design bugs or requests requires existing graphics skills working with a Vector graphics application (e.g. Inkscape). Basic knowledge of CSS can also be helpful for integration. Ask your general development questions on the Design mailing list and the #wikimedia-design IRC channel.

Skins[edit]

Skins allow users to customize the look and feel of MediaWiki. Basic knowledge of CSS and PHP is helpful. Check the project page in Phabricator for more information on each skin and contact information.

System messages and localization/translation problems[edit]

System messages in MediaWiki or its extensions often need small corrections to the English text, but the source text can only be changed in the code by developers, contrary to translations. This has grown into a large backlog of usually very easy fixes (which might be as easy as fixing a typo).

Also, many messages are unclear and require better documentation (see Localisation#Message documentation). Missing documentation can also be added by just editing the /qqq subpage of the message on translatewiki.net, like all translations, but may require some study of the code to understand what a message is for: it's therefore optimal to start understanding the code, and very useful for the translators (who do not have such skills).

Zusammenarbeit[edit]

The Collaboration team mainly works on Echo and Flow.

Ask questions regarding Collaboration team projects on the #wikimedia-collaboration IRC channel.

MediaWiki[edit]

MediaWiki is the core software which provides basic wiki functionality. It is complex, written in PHP, and some areas might not have clear maintainership. Ask your general development questions on the wikitech mailing list and the #wikimedia-dev and #mediawiki IRC channels.

Phlogiston[edit]

Phabricator is used by Wikimedia for project management, software bug reporting and feature requests. Phlogiston is a set of SQL, Python, and R scripts to report on Phabricator data, particularly burnup reports and forecasting.

Semantic MediaWiki[edit]

Semantic MediaWiki is one of the biggest and most popular MediaWiki extensions.

Maps[edit]

Maps is a popular MediaWiki extension that allows for, amongst other things, embedding of dynamic maps into wiki pages

Weiteres[edit]

Still not enough ideas? There are more fields you can explore - MediaWiki has hundreds of extensions and tools! Check out the complete list of bugs recommended for new contributors:

If you have any trouble or questions, please ask for help via IRC or feel free to contact Andre Klapper or Quim Gil.

Anhänge[edit]

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

PHP[edit]

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.

Datenbank[edit]

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[edit]

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[edit]

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
Quellen zu MediaWiki

Siehe auch[edit]