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 — Une manière simple de se familiariser avec la façon dont les extensions fonctionnent.
 * A brief introduction to MediaWiki extension development — Une présentation vidéo qui montre comment créer une extension MediaWiki (slides).
 * Making a MediaWiki extension — Montre comment développer une extension pour Mediawiki, les meilleures pratiques, et comment engager la communauté Mediawiki. From February 2011.
 * Special page template — Ajouter une page spéciale pour afficher des informations à portée de main.
 * Extending wiki markup — Add a parser hook to modify the content of wikitext.

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 aucunes connaissances 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:
 * Le manuel de PHP — Disponible dans plusieurs langues différentes.
 * PHP coding conventions within the MediaWiki community.


 * Truc à savoir:
 * Le script  dans MediaWiki fournit un interpréteur PHP de base avec des objets MediaWiki et des classes chargées.

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
 * Tutoriel MySQL — A partir du manuel de référence MySQL 5.0.
 * MySQL at Wikibooks.


 * Ressources MySQL/MariaDB
 * Manuels de référence MySQL — Disponible dans plusieurs langues différentes.
 * Base de connaissances de MariaDB
 * Database coding conventions within the MediaWiki community.


 * Truc à 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 BD, ce qui par conséquent "break on a regular basis". il vous êtes donc conseillé d'utiliser MySQL/MariaDB lors du test des patches, 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 language JavaScript, jQuery et 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
 * JavaScript and CSS at Wikibooks.
 * Mise en route avec jQuery — Un tutorial jQuery.


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

MediaWiki
Le code de base de MediaWiki est grand et certaines parties sont "moches"; Ne soyez pas submergé. Lorsque vous démarrez, essayez d'écrire des fonctionnalités ou de corriger des bugs qui se limitent à une petite portion de 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 — La documentation générée automatiquement à partir du code et des commentaires.
 * — Un guide pour déboguer MediaWiki.
 * — Un outil pour interagir avec la vie des objets MediaWiki.

Voir aussi

 * Atelier "Comment apprendre à devenir un geek MediaWiki"
 * – Lorsque vous aurez bien lu toutes les informations contenues dans cet article, il sera temps de passer aux ressources d'informations présentes dans le sanctuaire du développeur.
 * MediaWiki Virtual Library (MVL) books; this page forms also part of the MediaWiki Developers Guide.