Comment devenir un hackeur de MediaWiki

This page is a translated version of the page How to become a MediaWiki hacker and the translation is 100% complete.

Cet article est destiné à aider les développeurs à acquérir les aptitudes nécessaires à la contribution au développement du cœur de Mediawiki et aux extensions de MediaWiki. À noter que dans la plupart des cas, lorsque vous travaillez avec MediaWiki, vous ne voulez pas modifier le noyau de MediaWiki à moins que vous ne sachiez vraiment ce que vous voulez faire.

La méthode principale pour commencer avec le développement dans Wikimédia est de contribuer aux projets Wikimédia qui proposent du mentorat. Une alternative sans mentorat est de corriger un bon premier bogue.

Si vous êtes un développeur expérimenté, déjà familier de l'utilisation de MediaWiki, voyez plutôt le Pôle des développeurs .

Pour d'autres façons de vous impliquer dans la communauté Wikimédia, voir Comment contribuer .

Aperçu

MediaWiki est le logiciel qui propulse Wikipédia, ses projets frères et des milliers d'autres wikis dans le monde.

MediaWiki est écrit en langage de programmation PHP[1]. Il utilise jQuery comme bibliothèque JavaScript cliente.

MediaWiki a d'abord été développé pour la plateforme LAMP[2] et fonctionne sur la plupart des systèmes d'exploitation. MediaWiki utilise principalement les serveurs de bases de données MySQL et MariaDB.[3]

Le développement se fait sur un modèle open source[4], essentiellement coordonné en-ligne, et soutenu par la Fondation Wikimedia, bien que la communauté de développeurs volontaires joue également un rôle important.

Cette page devrait vous aider à devenir un contributeur de MediaWiki. Ce n'est pas un tutoriel ; cela vous dirige simplement vers différents endroits où vous pouvez acquérir les connaissances dont vous avez besoin.

Configurer son environnement de développement

La plupart des projets utilisent Git et Gerrit. Suivez le tutoriel Gerrit pour configurer votre compte de développeur. Vous pouvez ensuite aller au téléchargement de notre code, faire des modifications, les tester, et soumettre des corrections. Il existe deux manières de mettre en place votre environnement de développement : en utilisant l'installation à partir d'une machine virtuelle pré-configurée (Vagrant ou Docker), ou en faisant une installation manuelle.

Machine virtuelle avec Vagrant

  • Installation de Vagrant — Ces étapes installeront un serveur MediaWiki avec tous les prérequis dans une machine virtuelle Linux (utilisable sous Linux, Windows, ou Mac).

Environnement de développement de Docker

  • MediaWiki Docker — exécuter MediaWiki en utilisant Docker (peut être utilisé avec des hôtes Linux, Windows ou macOS).

Installation manuelle

Il n'est pas nécessaire de télécharger des dumps de la base de données de Wikipédia pour pouvoir développer des fonctionnalités de MediaWiki. En fait, dans la plupart des cas il est plus facile d'utiliser une base de données presque vide avec quelques pages de test construites à cet effet. Cependant, si pour une raison particulière vous souhaitez avoir une copie de Wikipédia, vous pouvez obtenir un dump.

Conseils de communication et règles

Regardez comment un développeur corrige un bogue dans une extension MediaWiki, avec les investigations, les validations dans Git (commit), les relectures et fusion du code, ainsi que la fermeture du ticket Bugzilla (maintenant remplacé par Phabricator ).
  • Faites d'abord votre recherche : lorsque vous décidez de travailler sur une tâche, vous êtes censés faire d'abord un travail d'investigation de base vous-même : lire le code, esayer de comprendre un peu ce qu'il est supposé faire, lire la documentation associée, essayer de trouver le ou les endroits probables où vous allez faire vos corrections. Pour un aperçu général, veuillez lire les Bases à connaître.
    • Pour une tâche Phabricator donnée, voyez les étiquettes des projets dans la barre latérale afin de trouver le dépôt de code concerné par cette tâche.
  • Posez vos questions et discutez au bon endroit :
    • Dans les tâches Phabricator, ne discutez que des questions relatives au sujet de la tâche Phabricator en question. Les questions techniques générales (du type Comment configurer un environnement de développement ou les problèmes liés à Gerrit) sont hors sujet dans les tâches de Phabricator.
    • Pour les questions techniques générales, posez-les à la communauté Wikimedia qui est plus vaste et utilisez les canaux génériques tels que les discussions IRC ou les listes de diffusion. (Si vous prenez part à un programme de sensibilisation, vous pouvez également utiliser le flux du support technique de Zulip.)
    • Si vous prenez part à un programme de sensibilisation, alors Zulip doit être utilisé pour discuter des questions relatives aux programmes eux-mêmes.
  • Posez les bonnes questions : « Pouvez-vous me donner plus d'informations ? », « Aidez-moi s'il vous plait » , « Veuillez me dire par où commencer » ne sont pas de bons commentaires avec lesquels commencer : plus vos questions sont précises et plus vous avez de chance que quelqu'un puisse y répondre rapidement. Si vous n'avez aucune idée sur la manière de corriger le bogue, peut-être que ce bogue n'est pas (encore) pour vous — merci d'essayer d'en trouver un autre plus facile dans un premier temps.
  • Expliquez le contexte : lorsque vous posez votre question, expliquez ce que vous vouliez faire, et ce que vous avez essayé et que vous avez déjà trouvé, afin d'aider les autres avec un bon point de départ. Soyez précis – par exemple, copiez/collez vos commandes ainsi que leur résultat (si ce n'est pas trop long) au lieu de les paraphraser avec vos propres mots. Ceci évite les malentendus. Utilisez des lignes de titre et de sujet spécifiques (« Proposition » et « Aide demandée » ne sont pas spécifiques).
  • Utilisez inclusive language : Ne présumez pas de l'identité et du genre des personnes (« les gars » , « madame », « monsieur »). Utilisez plutôt le nom de la personne.
  • Posez vos questions de manière publique : n'envoyez pas de messages privés si le sujet de votre conversation n'est pas personnel. Les messages privés n'aident pas les autres.
  • Soyez patient lorsque vous cherchez des sujets et des commentaires, particulièrement pendant les weekends et les vacances.
    • Sur IRC, ne questionnez pas juste pour parler, posez simplement votre question : la plupart des questions peuvent également être répondues par d'autres membres de la communauté si vous choisisser un canal IRC. Si personne ne répond, réessayez à différents moments; n'abandonnez pas.
    • Ne demandez pas aux utilisateurs de relire le code immédiatement par des messages séparés. Les utilisateurs reçoivent les notifications de Gerrit et de Phabricator.
  • Gardez les conversations lisibles : quand vous répondez sur Zulip, dans les tâches de Phabricator, ou sur les listes de distribution, évitez s.v.p de répéter complètement un précédent commentaire. Expliquez le contexte suffisamment et gardez lisibles les fils de discussion.
  • Suivez le code de conduite des espaces techniques Wikimedia.
  • Si vous envisagez de travailler sur une tâche de Phabricator :
    • Ne demandez pas la permission : habituellement cela ne sert à rien si vous savez travailler sur une partie de code ou si quelqu'un pouvait vous assigner une tâche. Il n'y a pas d'autorité qui assigne les tâches ou à laquelle il faut s'adresser en priorité.
    • Vous n'êtes pas obligé d' annoncer ce que vous comptez faire avant de travailler sur une tâche, mais cela serait bienvenu. Enfin, quand vous êtes sur le point de proposer une correction pour une tâche, il est bien d'annoncer que vous travaillez dessus pour que les autres ne fassent pas le travail en double. S'il n'y a personne d'autre d'assigné, déclarez-vous personnellement comme responsable de la tâche en utilisant le menu déroulant « Ajouter une action… → Assigner/Demander »
    • Tâches ayant déjà des correctifs :
      • Si une tâche possède déjà une correction récente dans Gerrit, choisissez à la place une tâche différente sur laquelle travailler – évitez de faire le travail en double.
      • Si un patch existant dans Gerrit n'a pas été fusionné et n'a pas connu de changements depuis une longue période, vous pouvez aussi l'améliorer en prenant en compte les remarques présentes dans Gerrit et sur la tâche.
    • Quand vos objectifs ou vos intérêts évoluent : si vous souhaitez arrêtez de travailler sur une tâche, retirez-vous du poste de responsable de la tâche, afin que les autres puissent voir qu'ils peuvent travailler sur cette tâche sans penser que vous êtes encore dessus.

En communiquant de manière claire et réactive, vous attirerez l'attention et vous recevrez les commentaires ainsi que l'aide des membres de la communauté.

Annexes

 
Les contributeurs MediaWiki au travail à Bangalore, en Inde.

PHP

MediaWiki est écrit en PHP, vous aurez donc besoin de vous familiariser avec le langage PHP pour apporter des modifications au noyau de MediaWiki.

Apprendre PHP
  • Tutoriel PHP — Disponible dans plusieurs langues différentes. Si vous n'avez aucune connaissance en PHP, mais que vous savez comment programmer dans d'autres langages de programmation orientés objet, il vous sera alors facile d'apprendre ce langage.
  • PHP Programming at Wikibooks.
  • PHP topic at Wikiversity.
Ressources PHP
Choses à savoir
  • Le script maintenance/eval.php dans MediaWiki fournit un interpréteur PHP de base avec des objets MediaWiki et des classes chargées.
  • Aussi, le script maintenance/shell.php dans MediaWiki remplace maintenance/eval.php basé sur PsySH, voir Manual:Shell.php

Base de données

Beaucoup de fonctionnalités nécessitent de nombreuses manipulations de la base de données, de sorte que vous aurez souvent besoin de vous familiariser avec MySQL/MariaDB.

Apprendre MySQL/MariaDB
Ressources MySQL/MariaDB
Choses à savoir
  • Testez votre code avec MySQL/MariaDB.
    • MediaWiki utilise actuellement MySQL et MariaDB en tant que base de données principale d'arrière-plan. Cela supporte aussi d'autres SGBD, comme PostgreSQL et SQLite. Cependant, presque tous les développeurs utilisent MySQL/MariaDB et ne testent pas d'autres bases de données, ce qui par conséquent peut faire planter régulièrement. Il vous est donc conseillé d'utiliser MySQL/MariaDB lors du test de vos patchs, sauf si vous êtes spécifiquement en train d'essayer d'améliorer le support pour une autre base de données. Dans ce dernier cas, assurez-vous que vous faites attention à ne pas casser MySQL/MariaDB (ou écrire des requêtes qui sont horriblement inefficaces dans celle-ci), puisque MySQL/MariaDB est ce que tout le monde utilise.

JavaScript et CSS

JavaScript et CSS sont devenus omniprésents pour la partie graphique « front-end » du code. Vous n'avez pas besoin de connaître le langage JavaScript, jQuery ni CSS pour travailler sur MediaWiki, mais vous en aurez peut-être besoin, en fonction de ce que vous choisissez de faire.

Apprendre JavaScript et CSS
Ressources JavaScript et CSS

MediaWiki

Le code de base de MediaWiki est grand et certaines parties sont assez laides ; ne soyez pas submergé. Lorsque vous démarrez pour la première fois, essayez d'écrire des fonctionnalités ou de corriger des bogues qui ne concernent qu'une petite portion du code.

Bases de MediaWiki et lectures recommandées
Ressources sur MediaWiki
  • Code — Une liste de fichiers importants et des liens vers des informations plus détaillées.
  • Accroches — Une liste d'attaches (hooks). Si vous essayez de trouver quelle partie du code de base fait telle chose, souvent un bon endroit pour commencer est de rechercher les attaches connexes.
  • Conventions de codage — Une vue d'ensemble des conventions de codage générales au sein de la communauté MediaWiki.
  • Documentation du code (référence de classe) — La documentation générée automatiquement à partir du code et des commentaires.
  • Comment déboguer — Un guide pour déboguer MediaWiki.
  • Manuel:Eval.php — Un outil pour interagir avec la vie des objets MediaWiki.

Extensions de MediaWiki

Si vous choisissez de travailler sur le code d'extensions MediaWiki, les liens suivants vous fourniront plus d'informations.

Notions de base concernant les extensions MediaWiki
Ressources pour les extensions MediaWiki

Voir aussi

  1. La totalité de MediaWiki n'est pas écrite en PHP. Certains outils que nous supportons sont écrits dans d'autres langages, comme les fichiers batch, les scripts shell, les makefiles et Python.
  2. MediaWiki fonctionne sur la plupart des plateformes qui supportent PHP, cependant, l'absence de certains utilitaires ou de caractéristiques du système d'exploitation peuvent limiter les fonctionnalités ou les performances de MediaWiki sur les plateformes non LAMP.
  3. MediaWiki supporte d'autres bases de données DBMS que MySQL et MariaDB, dont Oracle, PostgreSQL, SQLite, et Microsoft SQL Server.
  4. L'équipe de développement est un ensemble de personnes volontaires et salariées (ou de consultants) pour différentes sociétés. Pour une liste complète de qui travaille sur le code de MediaWiki, lisez l'article Développeurs .
  5. Affichez le code source et les dépôts hébergeant les versions du code sur https://phabricator.wikimedia.org/diffusion/ ou téléchargez le code source sur votre système en utilisant Gerrit.