How to become a MediaWiki hacker/fr

Cette page essaye de rassembler des informations sur les procédés du développement du logiciel MediaWiki, et de répondre à des questions des développeurs débutants. Si vous projetez de nous aider à programmer, mais que vous n'avez pas encore les compétences nécessaires, c'est un bon endroit pour commencer.

Voici d'abord, quelques liens cruciaux :
 * La page d'accueil du logiciel pour Wikipedia contient des informations générales au sujet du développement
 * La page du projet Wikipedia chez SourceForge vous permet de télécharger le code source et de signaler des bogues. Notez que nous n'employons pas le traqueur de patch de SourceForge (si vous ne savez pas de quoi il s'agit, voyez ci-dessous).
 * Listes de diffusion : wikitech-l pour le développement, mediawiki-l pour le support, mediawiki-cvs notes CVS
 * MediaWiki architecture a encore plus de documentation !

Systèmes d'exploitation
Le logiciel MediaWiki est écrit en PHP et utilise la base de donnée MySQL. Tous les deux ont été portés sur différents systèmes d'exploitation, incluant notamment, les variantes d'Unix et de Microsoft Windows. Il est donc possible d'installer et d'utiliser Wikipedia sous les deux systèmes. Vous obtiendrez probablement une meilleure aide si vous utilisez un Unix, car la plupart des développeurs préfèrent utiliser des outils du monde d'Unix (MySQL + PHP) dans un environnement Unix.

Si vous projetez de passer à un Unix, il existe de nombreuses variantes libres d'Unix disponibles. La plus populaire parmi elles est Linux, mais d'autres alternatives libres comme OpenBSD existent. Consultez un site d'aide pour vous familiariser avec le monde Unix.

Le langage de programmation PHP

 * Si vous n'avez aucune connaissance de PHP, mais que vous savez programmer orienté objet, n'ayez aucune crainte, PHP est facile à apprendre.
 * Si vous n'avez aucune connaissance de PHP ou d'autres langages de programmation orientés objet, vous devriez vous familiariser avec des concepts tels que des classes, objets, méthodes, événements, héritage.
 * Si vous n'avez aucune connaissance en programmation, PHP est un bon départ, car il est semblable à d'autres langages modernes, sa spécificité provient de la manière dont il est exécuté.

À la différence de la plupart des programmes, les scripts PHP ne sont pas typiquement lancés en ligne de commande ou via une interface graphique. Au lieu de cela, un script PHP est exécuté quand vous accédez à un fichier avec l'extension "php" (entre autres) d'un serveur web. En faisant cela, le serveur web, dans notre cas fr:Apache, appelle l'interprèteur PHP (qui peut être inclus dans le logiciel serveur), interprète le fichier PHP et renvoie le résultat à votre butineur. Le fichier PHP peut contenir des balises HTML banales et du PHP, rendant relativement simple l'ajout de fonctionnalités dynamiques à une page web statique.

Liens connexes : Tutoriel PHP Manuel PHP

SQL et MySQL
Wikipedia emploie actuellement MySQL (http://mysql.com/) comme base principale de données. Assurez-vous que le support de MySQL est compilé dans PHP !

Nous essayons également de faire fonctionner le wiki avec d'autres bases de données, en particulier fr:postgresql, (http://www.postgresql.org/) pour des soucis de performance et de portabilité.

Installer MediaWiki
Sur la façon d'obtenir le code source depuis fr:CVS : voir le PHP script.

Vous trouverez des instructions cachées dans le fichier INSTALL avec les sources. Essayez de les suivre. Vous pouvez aussi lire MediaWiki User's Guide: Installation.

Si vous souhaitez installer une copie locale de la base de données existante afin de bidouiller, créez tout d'abord une base de données vide avec MySQL et ensuite exécutez le script 'createdb.php ' dans le sous-répertoire maintenance (assurez-vous qu'il soit correctement configuré !). Notez que les scripts de maintenance incluent (include) des fichiers provenant du répertoire source principal, vous pouvez soit configurer un nouveau repertoire include pour PHP, soit vous y copier les fichiers.

Puis, une fois en possession d'une copie de la base SQL dans la langue souhaitée, importez le tout ainsi:


 * fr:Linux :
 * gzip -dc cur_table.sql.gz | mysql -u wikiadmin -padminpass wikidb
 * gzip -dc old_table.sql.gz | mysql -u wikiadmin -padminpass wikidb
 * cd maintenance ; php rebuildlinks.php


 * fr:Windows (eventuellement avec -u wikiadmin -padminpass wikidb comme au dessus) :
 * mysql < cur_table.sql
 * mysql < old_table.sql
 * cd maintenance ; php rebuildlinks.php

La reconstruction des tables de liens peut prendre un bon moment, en particulier si vous avez installé la base de données anglaise, qui est un peu volumineuse. (Notez également que vous pouvez ignorer l'ancienne table si vous souhaitez). Voir Database layout concernant l'utilisation de rebuilding.php.

Notez que si vous voulez créer un miroir public Wikipedia, ce n'est probablement pas la meilleure manière de l'aborder. Si vous installez un miroir de cette façon, veuillez svp bidouiller le code pour signifier que l'on regarde un miroir et inclure des liens vers le site principal.

Code MediaWiki
Le code MediaWiki est volumineux et laid. Ne vous sentez pas dépassé. Quand vous commencerez à développer, veillez à vous limiter à l'écriture de nouvelles fonctionnalités ou à la correction de bug dans une zone restreinte du code.

Voir aussi : (generated documentation)

Le meilleur moyen d'apprendre le fonctionnement de MediaWiki est de lire le code. Quelques points de départ :


 * index.php est le point d'entrée principal, même si déterminer l'évolution des choses à partir de là n'est pas évident.
 * Article.php contient du code pour l'affichage de page, l'effacement, l'annulation, le suivi et la fin de suivi. Elle contient également des utilitaires généraux pour la gestion des articles, comme retrouver une ancienne version ou sauvegarder.
 * EditPage.php contient à peu près la moitié du code nécessaire à l'édition, la moitié proche de l'interface utilisateur, la moitié restante se trouvant dans Article.php et dans les divers fichiers *Update.php.
 * Parser.php contient l'essentiel du code convertissant le wikitexte en HTML. On en trouve aussi un peu dans Skin.php.
 * Linker.php contient les fonctions nécessaires pour générer le code HTML pour les liens et les images.
 * Le code pour la plupart des pages spéciales se trouve dans les fichiers Special*.php.
 * Database.php contient les piles de fonctions pour accéder à la base de données.
 * OutputPage.php contient la classe OutputPage, qui est un buffer de sortie. Envoyez votre texte ici et il sera envoyé à stdout juste avant la fin du script.
 * Title.php est entièrement consacré aux titres - ce qui inclue les titres interwiki et les fragments "#".Il y a des fonctions là pour aller chercher des informations sur un article dans la base de données.
 * User.php contient la classe User, qui représente les préférences et permissions d'un utilisateur.
 * Setup.php fait toutes sortes d'initialisations, et semble responsable d'une grande partie du temps d'exécution. Parmi d'autres choses, il initialise beaucoup de variables globales, dont la plupart contiennent des objets.
 * DefaultSettings.php contient des valeurs par défaut pour beaucoup de variables globales, qui peuvent ou non être remplacées par celle de LocalSettings.php. N'utilisez pas isset, positionnez toujours une valeur par défaut pour chaque variable globale que vous introduisez.

Voir aussi Development policy.