Comment devenir un MediaWiki hacker

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 95% complete.

Outdated translations are marked like this.
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 • ‎中文
Cet article est destiné à aider les développeurs à développer les aptitudes nécessaires à la contribution du développement de MediaWiki.

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

Aperçu[edit]

MediaWiki est le logiciel 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 en PHP, utilise de préférence les serveurs de bases de données MySQL et MariaDB et la bibliothèque JavaScript JQuery. Le développement de MediaWiki est principalement assuré par la fondation MediaWiki, bien que des développeurs volontaires de la communauté y apportent également une énorme contribution.

Cette page devrait vous aider à démarrer sur le chemin qui mène à devenir un contributeur de MediaWiki. Ce n'est pas un tutoriel; celà vous dirige tout simplement vers différents endroits où vous pouvez acquérir toutes les connaissances dont vous avez besoin.

Premiers pas[edit]

Commencez par vous enregistrer dans Accès pour les développeursDeveloper access et lisez le Tutoriel Gerrit.

Vous pouvez ensuite allez 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: utiliser une machine virtuelle pré-configurée (Vagrant), ou faire l'installation manuellement.

Machine virtuelle avec Vagrant[edit]

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

Il n'est pas nécessaire de télécharger les dumps de la base de données Wikipedia 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 construites à cet effet. 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[edit]

Recommandations générales[edit]

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 :

Regardez comment un développeur corrige un bogue, y compris les investigations, les Git commits, les relectures et fusion du code, ainsi que la fermeture du ticket Bugzilla (maintenant remplacé par PhabricatorPhabricator).
  • Les deux méthodes principales pour commencer avec le développement MediaWiki sont de 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.


Retours, questions et support[edit]

  • Vous êtes censé faire de la recherche basique par 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 dans le but de corriger le bogue.
  • Si vous avez des questions générales sur l'infrastructure, l' architecture logicielle ou les workflows qui ne sont pas liés spécifiquement au bogue sur lequel vous voulez travailler, utilisez des canaux génériques comme IRCIRC, les listes de diffusion ou les 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 bogue lui-même, ajoutez des commentaires dans le rapport PhabricatorPhabricator correspondant.

"Que dois-je faire pour corriger ce bogue?" 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 n'avez aucune idée de comment réparer le bogue, peut-être que ce bogue n'est pas (encore) pour vous - merci d'envisager d'en trouver un autre plus facile dans un premier temps.

  • 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 se mettant à 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 lorsque vous recherchez 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 [[CommunicationCommunication|comment communiquer]].
  • You can ask at the weekly Technical Advice IRC Meeting on #wikimedia-tech


Faire savoir que vous travaillez sur un bogue[edit]

Vous n'êtes pas obligé d'être mentionné comme l'initiateur dans un rapport de bogue ou d'annoncer vos objectifs avant le démarrage d'une résolution de bogue, mais ça serait bienvenu.

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 évite ainsi à d'autres de ne pas travailler sur le bogue en même temps et de faire 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 croire que vous y travaillez toujours.

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


Travailler sur les extensions[edit]

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

Ressources pour les extensions MediaWiki 
Ressources pour les extensions MediaWiki 


Suggestions pratiques[edit]

Les sections suivantes décrivent quelques exemples de domaines dans lesquels vous pouvez contribuer, mais vous n'êtes pas limités à ces domaines !

Dans le coin supérieur droit d'une tâche (rapport de bogue) de Phabricator vous pouvez voir le produit et le composant où le problème est localisé. Cela vous donne une indication sur le dépôt Git où le code est situé, et sur l'équipe de développement que vous pouvez contacter si vous souhaitez en discuter d'une manière «plus large» (sous forme de commentaires dans les rapports de bugs qui devraient de préférence se rapporter au problème spécifique décrit uniquement dans le rapport).

Documentation[edit]

Pywikibot[edit]

PyWikibot est un "framework" à base de Python qui permet d'écrire des robots pour MediaWiki. Posez vos questions concernant le développement général sur la liste de diffusion Pywikibot et le canal IRC #pywikibot.

Multimédia[edit]

Posez vos questions générales concernant le développement Multimedia sur la liste de diffusion multimédia et le canal IRC #wikimedia-multimedia.

Applications Mobiles[edit]

Il existe de nombreuses applications pour les appareils mobiles (Android, iOS, Windows Phone, ...) pour accéder aux "wikis" Wikimedia. Lisez les informations de développement générales et posez vos questions sur la liste de diffusion Mobile et le canal IRC #wikimedia-mobile.

Lecture[edit]

L'équipe reading construit le logiciel qui sert à nos lecteurs. Nous gérons également l'expérience Web mobile. Lisez les informations de développement général et posez vos questions sur la liste de diffusion Mobile et le canal IRC #wikimedia-mobile.

Wikidata[edit]

Wikidata est une base de connaissances centralisée pour les données structurées, telles que les références "interwiki" et les informations statistiques. Posez vos questions concernant le développement généneral sur la liste de diffusion Wikidata, le canal IRC #wikidata et sur le wiki.

Huggle[edit]

Huggle est une application "desktop" pour faire face aux actes de vandalisme sur les projets Wikimedia, elle est écrite en C++.


Tests des navigateurs & Assurance Qualité[edit]

Le test automatisé des navigateurs aide les ingénieurs Wikimedia à produire une interface utilisateur de qualité et un logiciel plus réactif. Voir la page sur le test des navigateurs pour en savoir plus sur les technologies que nous utilisons et comment y participer. Pour obtenir plus d'informations générales, veuillez consulter Quality Assurance.

Ingénierie des Langues (Localisation/Traduction/Internationalisation)[edit]

Posez vos questions concernant le développement général de l'ingénierie des langues sur la liste de diffusion mediawiki-i18n et le canal IRC #mediawiki-i18n.

Éditeur Visuel et Parsoid[edit]

VisualEditor est l'éditeur WYSIWYG MediaWiki. Posez vos questions concernant le développement général sur la liste de diffusion wikitech et le canal IRC #mediawiki-visualeditor.

VisualEditor est propulsé par Parsoid, un analyseur syntaxique de wikitext, incluant un runtime. Posez vos questions concernant le développement général sur la liste de diffusion wikitext et le canal IRC #mediawiki-parsoid.

Découverte / Recherche[edit]

L'équipe Discovery conçoit des méthodes de recherche et de découverte vers une source de connaissance fiable et pertinente. Posez vos questions concernant le développement général sur la liste de diffusion "Discovery" et sur le canal IRC #wikimedia-discovery IRC.

Analytique[edit]

L'équipe Analytics autorise et soutient la prise de décision de données qui est faite dans Wikimedia. Posez vos questions concernant le développement générai sur la liste de diffusion "Analytics".

Design[edit]

La résolution de bugs de "design" ou de "demandes" requiert d'avoir des compétences en graphisme pour pouvoir travailler avec une application graphique vectorielle (e.g. Inkscape). Des connaissances de base en CSS peut aussi être utile pour l'intégration. Posez vos questions concernant le développement général sur la liste de diffusion "design" et le canal IRC #wikimedia-design.

Habillage (Skins)[edit]

Skins permettent aux utilisateurs de personnaliser l'apparence et le comportement de MediaWiki. Les connaissances de base du langage CSS et PHP sont utiles. Consultez la page du projet dans phabricator pour obtenir plus d'informations concernant les indications pour chaque "skin" et contact.

Les messages "système" et les problèmes de localisation/traduction[edit]

Les messages "système" présents dans MediaWiki ou ses extensions ont souvent besoin de petites corrections, mais le texte source (qui est en anglais) ne peut être modifié dans le code que par les développeurs, contrairement aux traductions. Cela se traduit par une importante accumulation de correctifs généralement très facile (qui pourrait être aussi facile que la correction d'une faute de frappe).

En outre, de nombreux messages ne sont pas claires et nécessitent une meilleure documentation (voir Localisation#Message documentation). La documentation manquante peut aussi être ajoutée tout simplement en modifiant la sous-page /qqq du message sur translatewiki.net, comme toutes les traductions, mais peut nécessiter une étude du code pour comprendre à quoi le message correspond : il est donc judicieux de commencer par comprendre le code, ce qui est très utile pour les traducteurs (qui ne disposent pas de telles compétences).

Collaboration[edit]

L'équipe "collaboration" travaille principalement sur Echo et Flow.

Posez vos questions concernant les projets de l'équipe Collaboration sur le canal IRC #wikimedia-collaboration.

MediaWiki[edit]

MediaWiki est le noyau applicatif qui fournit les fonctionnalités "wiki" de base. Il est complexe, écrit en PHP, et certaines portions de codes pourraient ne pas être "clairement maintenues". Posez vos questions concernant le développement général sur la liste de diffusion et les canaux IRC #wikimedia-dev et #mediawiki.

Phlogiston[edit]

Phabricator est utilisé par Wikimedia pour la gestion de projet, les rapports de bogues de logiciels et les demandes de fonctionnalités. Phlogiston est un ensemble de scripts SQL, Python et R qui permet de faire des rapports à partir des données de phabricator, en particulier les rapports "burnup" et les prévisions.

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

Et bien plus encore...[edit]

Toujours pas assez d'idées ? Il y a d'autres domaines que vous pouvez explorer - MediaWiki a des centaines d'extensions et d'outils ! Consultez la liste complète des bogues recommandés pour les nouveaux contributeurs :

Si vous avez des difficultés ou des questions, vous pouvez demander de l'aide via le canal IRC ou contacter librement Andre Klapper ou Quim Gil.

Annexes[edit]

Les contributeurs MediaWiki au travail à Bangalore, en Inde.

PHP[edit]

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
Truc à savoir
  • Le script maintenance/eval.php dans MediaWiki fournit un interpréteur PHP de base avec des objets MediaWiki et des classes chargées.

Base de données[edit]

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

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
Ressources JavaScript et CSS

MediaWiki[edit]

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.

Ressources MediaWiki et lectures recommandées
Ressources sur MédiaWiki

Voir aussi[edit]