How to become a MediaWiki hacker/fr

Cet article est destiné à aider les développeurs novices à développer les aptitudes nécessaire à la contribution au développement de MediaWiki.

Si vous êtes un développeur expérimenté, voyez plutôt le .

Résumé
MediaWiki est le logicel qui propulse Wikipédia, ses projets frères et des milliers d'autres wikis dans le monde. Il tourne sur la plupart des systèmes d'exploitation, est écrit dans le langage PHP, utilise de préférence la base de donnée MySQL et utilise JQuery en tant que bibliothèque JavaScript pour les clients web. Le développement de MediaWiki est principalement assuré par la fondation MediaWiki, bien que des développeurs volontaires de la communauté jouent un énorme rôle également.

Cette page devrait vous aider à démarrer sur le chemin de la contribution à MediaWiki. Ce n'est pas un tutoriel, c'est simplement un point d'entrée vers les endroits divers et variés ou vous pourrez apprendre ce qui est nécessaire.

Commencer
Dans un premier temps, faites le tour des articles  et Tutoriel Gerrit afin de pouvoir télécharger notre code, le tester et commencer à soumettre des patches. Il existe deux manières de mettre en place votre environnement de développement : soit utiliser une machine virtuelle pré-configurée (setup), ou faire l'installation manuellement.

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)

Installation manuelle

 * Configuration requise pour l'installation — Vérifiez la configuration matérielle requise, et installez un serveur LAMP, MAMP ou WAMP (Linux, Mac or Windows, plus Apache, MySQL/MariaDB and PHP).
 * — Téléchargez la dernière version du code source à partir de Git.
 * — Continuez avec l'installation et la configuration initiale.
 * Configurez les différents modes de débogage dans votre environnement pour afficher les messages d'erreurs et de mise en garde (warning) de manière préventive.

Il n'est pas nécessaire de télécharger les "dumps" de la base de données Wikipedia dans l'ordre pour pouvoir développer des fonctionnalités 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 spécialement adaptées. Cependant, si pour une raison particulière vous souhaitez avoir une copie de Wikipedia, vous pouvez récupérer un "dump".

Lectures suggérées


Recommandations générales
Si vous choisissez de travailler sur un rapport de bogues qui nécessite l'écriture ou la modification de code, vous devriez au moins jeter un coup d’œil sur les éléments suivants :

 
 * Les deux méthodes principales pour commencer avec le développement MediaWiki sont de soit résoudre un  petit bug ennuyeux dans le code existant, ou bien d'ajouter une nouvelle fonctionnalité, généralement par le biais d'une extension MediaWiki.
 * Les conventions de codage et toutes les sous-pages applicables à votre tâche (,, , ...)
 * En suivant les lignes directrices des messages "Commit", et plus particulièrement la section Exemple dans le bas, on ajoutera automatiquement une notification en rapport avec votre patch pour le rapport correspondant en $Phab. Il n'y a donc pas besoin d'ajouter un commentaire du type "Examinez s'il vous plaît" dans le rapport.
 * Vérifiez votre code à l'aide de la Liste des vérification "pre-commit". Ne pas sauter cette étape ; Vous serez heureux comme vous ne l'avez jamais été.
 * Passer en revue le code. Trouver et ajouter des personnes pour la revue de votre patch.
 * Modification d'un changement. Ne pas créer un nouveau Gerrit changeset pour corriger votre précédente modification !
 * Dans la plupart des cas, lorsque vous travaillez avec MediaWiki, vous ne voulez pas modifier le noyau MediaWiki sans savoir vraiment ce que vous êtes en train de faire.

Retours, questions et support
 
 * Vous êtes censé faire de la recherche de base vous même dans un premier temps : Regardez le code, essayez de comprendre ce qu'il est censé faire, lisez la documentation correspondante, essayez de trouver le(s) emplacement(s) probable(s) où vous devez faire des changements et réalisez les dans l'ordre pour corriger le bug.
 * Si vous avez des questions générales sur l'infrastructure, l' architecture logicielle ou les flux de travail qui ne sont pas liés au bogue spécifique que vous voulez travailler, utilisez des canaux génériques comme, listes de diffusion ou pages de discussion wiki. Par exemple, si vous avez un problème avec Gerrit, la page de discussion de Gerrit pourrait être un bon endroit pour poser une question ou demander de l'aide.
 * Si vous avez une question précise sur le bug lui-même, ajoutez des commentaires dans le rapport de  correspondant . "Que dois-je faire pour corriger ce bug ?" n'est pas une [good question to start with|bonne question pour commencer] : Plus vos questions sont précises, plus il probable que quelqu'un puisse y répondre rapidement. Si vous ne savez pas du tout comment résoudre le bug, peut-être que ce bogue n'est pas (encore) pour vous - merci d'envisager d'en trouver un autre plus facile pour démarrer.
 * Lorsque vous effectuez une demande, expliquez ce que vous avez essayé de faire et déjà découvert, alors d'autres personnes pourront vous aider en s'adaptant à votre niveau. Essayez d'être précis - par exemple, faire un copier/coller de vos commandes et du résultat affiché en sortie (si ce n'est pas trop long) au lieu de paraphraser dans vos propres mots. Cela permet d'éviter les malentendus.
 * Évitez les emails privés ou les requêtes de support dans nos canaux de médias sociaux.
 * Merci d'être patient lorsqu'on recherche l'entrée et les commentaires . Sur un canal IRC, ne demandez pas juste pour demander, demandez simplement : la plupart des questions peuvent être résolues par d'autres membres de la communauté. Si personne ne répond, merci de faire une demande sur la page de rapport de bogue ou la page wiki en relation avec le problème; Ne laissez pas la question sans réponse.
 * En savoir davantage sur |Comment communiquer.

Faire savoir que vous travaillez sur un bogue
Vous n'êtes pas obligé d'être mentionné comme l'initiateur dans un rapport de bogue ou d'annoncer vos plans avant le démarrage d'une résolution de bogue, mais ça serait un plus. A la fin lorsque vous êtes proche de la création d'un patch pour le bogue, il est bon de mentionner dans un commentaire que vous êtes en train de travailler dessus. Votre annonce contribue également à d'autres de ne pas travailler sur le bogue en même temps et en double travail.

Veuillez noter également que si un rapport de bogue possède déjà un lien récent vers un patch dans Gerrit et a également comme projet associé le projet "Patch-For-Review", vous devez choisir un autre bogue pour éviter de travailler en doublon. Si le patch dans Gerrit n'a pas été fusionné et n'a pas connu de changements depuis une longue période, vous pouvez aussi récupérer ce patch existant et essayer de l'améliorer.

Si vous arrêtez de travailler sur une tâche, vous devez vous retirer en tant que cessionnaire d'un rapport de bogue et réinitialiser le cessionnaire au cessionnaire par défaut, pour que les autres puissent savoir qu'ils peuvent choisir de travailler sur cette tâche sans en attendre inutilement la fin du développement ou de la correction.

En communiquant dès le début, vous obtiendrez plus d'attention, de retour d'informations et d'aide des membres de la communauté. 

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


 * MediaWiki extensions primers:
 * Développer des extensions — Comment écrire une extension pour MediaWiki.
 * Ecrire une extension pour le déploiement - Si vous avez l'intention d'avoir votre extension déployée sur les sites Wikimedia (y compris éventuellement Wikipedia), un examen plus approfondi est justifié en termes de performance et de sécurité.
 * Tutoriel - Écrire une Extension


 * MediaWiki extensions resources:
 * List of simple extensions — A simple way to become more familiar with how extensions work.
 * A brief introduction to MediaWiki extension development — A video presentation about how to create a MediaWiki extension (slides).
 * Making a MediaWiki extension — Covers how to develop an extension for Mediawiki, best practices, and how to engage the Mediawiki community. From February 2011.
 * Special page template — Add a special page to display some handy information.
 * Extending wiki markup — Add a parser hook to modify the content of wikitext.

PHP
MediaWiki is written in PHP, so you'll need to get familiar with PHP to hack MediaWiki's core.


 * Apprendre PHP
 * Tutoriel PHP — Available in many different languages. If you have no knowledge of PHP but know how to program in other object-oriented programming languages, PHP will be easy for you to learn.
 * PHP Programming at Wikibooks.
 * PHP topic at Wikiversity.


 * PHP resources:
 * The PHP manual — Available in many different languages.
 * PHP coding conventions within the MediaWiki community.


 * Truc à savoir:
 * The script  in MediaWiki provides a basic PHP interpreter with MediaWiki objects and classes loaded.

Base de données
Many features require some amount of database manipulation, so you'll often need to be familiar with MySQL/MariaDB.


 * Learn MySQL/MariaDB
 * Tutoriel MySQL — From the MySQL 5.0 reference manual.
 * MySQL at Wikibooks.


 * MySQL/MariaDB resources
 * MySQL Reference Manuals — Available in many different languages.
 * MariaDB Knowledge Base
 * Database coding conventions within the MediaWiki community.


 * Truc à savoir:
 * Test your code with MySQL/MariaDB.
 * MediaWiki currently uses MySQL and MariaDB as the primary database back-end. It also supports other DBMSes, such as PostgreSQL and SQLite. However, almost all developers use MySQL/MariaDB and don't test other DBs, which consequently break on a regular basis. You're therefore advised to use MySQL/MariaDB when testing patches, unless you're specifically trying to improve support for another DB. In the latter case, make sure you're careful not to break MySQL/MariaDB (or write queries that are horribly inefficient in it), since MySQL/MariaDB is what everybody else uses.

JavaScript et CSS
JavaScript and CSS have become omnipresent in front-end code. You don't have to be familiar with JavaScript, jQuery and CSS to work on MediaWiki, but you might need to, depending on what you choose to work on.


 * Learn JavaScript and CSS
 * JavaScript and CSS at Wikibooks.
 * Getting Started with jQuery — A jQuery tutorial.


 * JavaScript and CSS resources
 * JavaScript coding conventions within the MediaWiki community.
 * CSS coding conventions within the MediaWiki community.

MediaWiki
The MediaWiki code base is large and some parts are ugly; don't be overwhelmed by it. When you're first starting off, aim to write features or fix bugs which are constrained to a small region of code.


 * MediaWiki primers and must-reads:
 * MediaWiki architecture — A high-level overview of the main components of MediaWiki and how they work with each other.
 *  — An overview of why and how to write secure code.


 * ressources sur MédiaWiki:
 * — Une liste de fichiers importants et des liens vers des informations plus détaillées.
 * — A list of hooks. If you're trying to find what part of the codebase does something, often a good place to start is by searching for the related hooks.
 * — An overview of general coding conventions within the MediaWiki community.
 * Intro-to-MediaWiki workshop syllabus — Ways to hack MediaWiki, from user preferences to extensions and core.
 * Documentation du code — Automatically generated documentation from the code and code comments.
 * — A guide to debugging MediaWiki.
 * — A tool to interact with MediaWiki objects live.

Voir aussi

 * atelier comment apprendre à bidouiller MediaWiki (Learn how to hack MediaWiki)
 * – When you've thoroughly read the information in this article, it's time to move on to the information in the developer hub.
 * MediaWiki Virtual Library (MVL) books; this page forms also part of the MediaWiki Developers Guide.