MDN-10years_twitter-avatar_400x400px.pngCette semaine marque le dixième anniversaire du wiki MDN (Mozilla Developer Network). Ce billet explore les origines de MDN, ses évolutions diverses et la direction qu’il pourrait prendre.

(Ce billet est principalement basé sur une table ronde qui a eu lieu lors du week-end Hack On MDN d’avril 2015 à Berlin et sur le billet de Florian Scholz à propos de l’histoire de la documentation JavaScript sur MDN.)

Qu’est-ce que MDN aujourd’hui ?

Pour de nombreux développeurs web, MDN sert de référence pour le Web. C’est pour eux l’endroit où chercher des documents et où apprendre à propos des technologies du Web. MDN offre bien plus. C’est une ressource pour apprendre sur le Web, un endroit pour partager ses connaissances et son savoir. La force de MDN réside dans son ouverture : n’importe qui peut aider à améliorer les ressources, que ce soit petit à petit ou de façon conséquente. MDN encourage également la croissance des technologies web, là où elles n’étaient pas présentes auparavant.

MDN est une communauté de développeurs, d’écrivains techniques et de traducteurs. Quelques membres sont des employés de Mozilla mais cela ne représente qu’un sous-ensemble d’une plus grande communauté, formée de personnes qui apportent de petites ou de grandes contributions.

Le meilleur retour pour les contributeurs à MDN : ce que nous entendons quand nous discutons avec les développeurs qui nous disent à quel point ils apprécient MDN. Ce n’est pas « MDN, ouais, c’est pas mal » ou « c’est super.». La réponse que nous entendons le plus est « j‘adore MDN, c’est la meilleure ressource que je connaisse ». C’est extrêmement gratifiant de savoir que vous contribuez à quelque chose que les gens aiment vraiment.

MDN, pour qui ?

MDN s’adresse à différents publics :

  • tout d’abord aux développeurs web
  • aux personnes qui veulent apprendre le développement web
  • aux enseignants qui forment aux compétences et aux concepts du Web
  • aux développeurs des produits qui s’inscrivent dans l’écosystème Mozilla : les modules Firefox, les applications Firefox OS
  • aux développeurs qui contribuent au code de Mozilla

Les débuts de MDN

Le site qui est devenu MDN, developer.mozilla.org, ou « Devmo » fut d’abord une redirection vers une page pour les développeurs à partir du site mozilla.org. Plus tard, ce contenu fut déplacé sur Devmo. Il contenait principalement des informations à destination des développeurs qui contribuaient au code de Mozilla.

De la même façon que le projet Mozilla émergea des restes de Netscape, MDN tel que nous le connaissons démarra à partir de la documentation écrite initialement à Netscape. Le site connu sous le nom « Netscape DevEdge » documentait les technologies du Web comme JavaScript ou d’autres, implémentées comme produits Netscape. Après que Netscape ait été acquis par AOL, le site DevEdge fut fermé et les informations qu’il contenait disparurent du Web.

Mitchell Baker (à la présidence de Mozilla) et d’autres personnes de Mozilla travaillèrent avec AOL afin de trouver un arrangement pour publier le contenu de DevEdge. Mitchell Baker annonça cela en février 2005. Au même moment, Deb Richardson était recrutée pour migrer le contenu de DevEdge vers Devmo et s’occuper de ce contenu.

Mitchell et Deb décidèrent de placer ce contenu dans un wiki afin que quiconque puisse contribuer ouvertement pour mettre à jour et maintenir le contenu. Auparavant, le contenu de DevEdge était géré via un système de gestion de version CVS et publié sous forme d’un site statique. Utiliser un wiki pour publier de la documentation était un concept nouveau pour l’époque. Ça a pris un peu de temps pour que certains développeurs du projet Mozilla s’habituent à cette méthode. D’autres, en revanche, adoptèrent immédiatement cette aproche. Parmi les premiers contributeurs, nombreux furent les développeurs qui contribuaient au projet Mozilla par ailleurs.

Deb et quelques contributeurs, passèrent plusieurs mois à dénicher et à migrer le contenu utile de DevEdge, en travaillant sur un serveur de test. Cette tâche était toujours en cours lorsque le contenu fut migré sur le site Devmo qui prit alors le nom de « Mozilla Developer Center » (« MDC ») en juillet 2005. C’est cette date qui constitue le point de départ de ce qui s’appelle désormais Mozilla Developer Network.

L’évolution de la plateforme

Au cours de son histoire, MDN a vécu sur trois plateformes wiki différentes : tout d’abord MediaWiki puis MindTouch DekiWiki et maintenant Kuma, une plateforme développée par Mozilla. L’infrastructure technique du projet est intéressante, non seulement pour l’aspect technique mais aussi pour l’influence qu’elle a sur des structures sociales comme la communauté.

MediaWiki

Pour la première itération de MDC, la plateforme utilisée fut MediaWiki. Le logiciel open-source qui soutient Wikipédia. À l’époque, c’était la technologie wiki la plus robuste et la plus utilisée. Le projet Devmo découvrit petit à petit q’un logiciel conçu pour écrire une encyclopédie généraliste n’était pas nécessairement idéal pour écrire de la documentation technique à destination des développeurs. Les exemples de code, par exemple, n’étaient pas bien gérés et devenaient illisibles. Mozilla tenta de résoudre ces problèmes en créant son propre fork de MediaWiki, ce qui s’avéra en fin de compte assez difficile à maintenir.

Sur le plan des contributions, utiliser MediaWiki était un avantage car de nombreux techniciens étaient déjà familiers avec son fonctionnement. Cependant, le projet atteignit rapidement un seuil où il devint difficile de faire revenir les contributeurs. Ceci, associé aux problèmes techniques, entraîna la recherche d’une nouvelle plateforme plus facile d’utilisation.

DekiWiki

Après un processus d’évaluation pour voir l’ensemble des solutions « wiki » du marché (et pas seulement celles qui étaient open-source), le choix se porta sur DekiWiki, construit par MindTouch. Un avantage de DekiWiki était que le format source des articles était du HTML plutôt qu’un balisage de wiki. Ce choix était donc logique pour cibler les développeurs web : utiliser le même format pour la documentation que pour le Web. Cela nécessitait de migrer tout le contenu de MediaWiki, écrit dans un langage particulier, vers du HTML : cela constituait un projet de migration majeur. Le choix de DekiWiki fut annoncé en novembre 2007 et le site bascula vers cette solution en août 2008.

Bien que DekiWiki fut un produit de qualité, il y avait un biais important dans le processus de sélection et un grand groupe de participants manquait à l’appel : les contributeurs volontaires qui participaient au site. Le taux de contribution plongea car la communauté de contributeurs n’avait pas adopté la plateforme. Les communautés de localisation notamment, qui traduisent le contenu dans d’autres langues que l’anglais, furent sévèrement touchées. Elles avaient construit des outils et des processus qui fonctionnaient avec MediaWiki, outils et processus qui ne fonctionnaient plus avec DekiWiki. Après quelques mois, la plupart de ces groupes se dissolurent et décidèrent d’arrêter leurs contributions. Le résultat qui s’ensuivit fut que la documentation traduite devint immobile et de moins en moins à jour au fur et à mesure.

DekiWiki était aussi écrit en C# et donc conçu pour s’exécuter dans un environnement Microsoft .NET. Il y avait donc un écart avec l’infrastructure technique de Mozilla, basée sur Linux. Les tentatives pour faire fonctionner DekiWiki sur Mono aboutirent à de nombreuses instabilités, le site étant alors hors service pendant des jours voire des semaines à ce moment.

Suite à ces problèmes, l’équipe rechercha une autre solution. Les meilleurs candidats sur le marché restaient MediaWiki et DekiWiki. Alors que le contenu était désormais intégralement écrit en HTML, le remigrer vers la syntaxe MediaWiki n’était plus faisable. Aucun produit ne semblait répondre aux besoins spécifiques d’un site de documentation pour développeurs ouverts aux contributions, Mozilla décida donc de créer sa propre plateforme.

Kuma

La plateforme actuellement utilisée pour MDN s’appelle Kuma et est écrite en Python avec Django. Initialement, Kuma était un fork de Kitsune, la plateforme utilisée pour le site de support de Mozilla. Ce fork fut adapté pour les besoins d’un wiki destiné aux développeurs plutôt qu’aux utilisateurs des produits Mozilla. Note : « kitsune » signifie renard en japonais et « kuma » signifie ours (en effet tout le monde sait bien que les utilisateurs sont des renards et les développeurs des ours…).

Comme DekiWiki, Kuma utilise le format HTML pour stocker le contenu des articles. Pour passer de DekiWiki à Kuma, la migration consistait à migrer les scripts et macros utilisés sur le site. DekiWiki utilisait « DekiScript », un langage basé sur Lua alors que Kuma a vu naître KumaScript, basé sur JavaScript et Node.js. KumaScript a été créé et conçu par Les Orchard. Cela signifie qu’en plus de stocker ses documents en HTML, KumaScript est implémenté en utilisant les technologies documentées sur MDN, lesquelles sont connues des contributeurs. Il fut possible de migrer automatiquement 70% des macros, le reste a du être migré manuellement.

Lors du lancement de la plateforme Kuma, le but était d’obtenir les mêmes fonctionnalités qu’avec DekiWiki. Le contenu fut migré vers le nouveau système et les changements qui étaient apportés progressivement sur le serveur de production était également appliqués sur le serveur de test utilisant Kuma. De cette façon, l’instance de Kuma était synchronisée avec le serveur DekiWiki. Ainsi, bien que la migration effective prit des mois de travail pour lancer Kuma, le lancement réel passa presque inaperçu. Il suffit d’activer un interrupter et le traffic fut redirigé vers le nouveau site, sans aucun problème et sans même perturber les sessions des personnes connectées.

L’évolution de la communauté

Depuis le début, la communauté du site DevMo a grandi de façon organique en commençant avec des contributeurs déjà actifs sur d’autres parties du projet Mozilla. Comme pour d’autres domaines de Mozilla, la communication est basée sur une liste de diffusion (mailing list) et sur un canal de discussion IRC. Au milieu de l’année 2007, il y avait environ 250 contributions par mois. Comme évoqué auparavant, la migration vers DekiWiki a entraîné une chute phénoménale des contributions en localisation. Le nombre total de contributions déclina également.

mdn_doc_sprint.jpg Doc Sprint MDN à Paris en 2010

Afin que la communauté soit mieux engagée dans le projet, je (Janet Swisher) fus recrutée comme écrivain technique vers juin 2010. Cela me permit d’apporter l’expérience que j’avais de la documentation open source pour les développeurs. La méthodologie des « books sprints » utilisée par le projet FLOSS Manuals pour produire des manuels sur les logiciels libres en cinq jours ou moins fut particulièrement utile. Le premier « doc sprint » a eu lieu en octobre 2010 dans les bureaux de Mozilla Paris. Les docs sprint permettent de réunir les contributeurs à MDN, physiquement ou virtuellement, afin de travailler ensemble, de façon collaborative et concentrée pendant un week-end. Ces sprints eurent lieu tous les trimestres pendant environ trois ans. Récemment, ceux-ci ont évolué et ont lieu moins souvent mais durent plus longtemps, ils s’appellent désormais « Hack on MDN ». Afin que ces événements soit plus attractifs pour les développeurs, c’est l’occasion de travailler sur le contenu de la documentation mais aussi sur la plateforme et les outils.

11073502_781006205281080_8135317797319228200_o.jpg Présentation des sujets lors du week-end Hack On MDN à Berlin en 2015

De plus, la communauté se réunit régulièrement en ligne pour échanger des informations générales autour de MDN mais aussi pour suivre les différents projets. Ces activités communautaires, associées à la migration vers Kuma en 2012 ont entraîné une augmentation significative des contributions : il y en a, à l’heure actuelle, environ 1000 par mois.

L’évolution de la marque

MDC_wordmark.pngAu début, le site DevMo était connu sous le nom « Mozilla Developer Center ». Le site portait simplement ce nom et un style MediaWiki avait été choisi pour la mise en forme. Lors de la migration vers DekiWiki, le mot « Mozilla » fut placé en avant et suivi d’un « <developer center/> » qui indiquait un lien avec les langages du Web.

MDN_robodino_logo.pngEn septembre 2010, le nom du site changea « Mozilla Developer Center » devint « Mozilla Developer Network » ou MDN. Ce changement fut reçu avec un certain scepticisme de la part des développeurs qui utilisaient le site. Aujourd’hui, le terme MDN semble désormais globalement accepté. Le design visuel du site changea également pour adopter un thème plus sombre. MDN eut alors son propre logo « robot dino », une image qu’il n’avait jamais porté auparavant.

Ces changements visuels furent accompagnés de nouvelles fonctionnalités pour que le site soit plus que de la documentation. Une fonctionnalité réussie fut le « Demo Studio », une zone où les développeurs peuvent envoyer le code de leurs démos pour les partager et les montrer.

Lorsque MDN passa de DekiWiki à Kuma, l’apparence du site fut conservée et il y eut donc très peu de différences entre le site avant et après la migration. Après six à huit mois passés à résoudre des bugs liés à Kuma, un projet fut mis en place pour changer le design graphique mais aussi la structure du contenu. Ces modifications furent diffusées grâce à des flags destinés aux utilisateurs beta-testeurs. Ainsi, la plupart des utilisateurs voyait le site sans changement et les beta-testeurs pouvaient voir et tester le nouveau design et la nouvelle structure. Le « lancement » de ce nouveau design consista simplement à activer la fonctionnalité dans la base de données pour que celle-ci soit visibile de tout le monde.

Cette refonte apporta un nouveau logo, la tête de dinosaure sur fond de carte, mais aussi de nouvelles fonctionnalités structurelles comme la barre de navigation qui s’adapte en fonction du sujet de l’article. Pour les articles localisés, cette barre permet aussi d’indiquer quels articles sont traduits ou non. S’ils ne sont pas traduits, elle affiche un message invitant le lecteur à participer à cette traduction.

L’évolution du contenu

La date de naissance de MDN tel que nous le connaissons aujourd’hui correspond à l’acquisition et à la re-publication du contenu de Netscape DevEdge en 2005. Mais dans les premiers temps, le contenu était très orienté vers les produits et technologies Mozilla. Cette orientation ne concernait pas uniquement la documentation autour de XUL et des API internes à Mozilla mais aussi celle des technologies web qui étaient plus centrée autour de Mozilla et Firefox. On pouvait par exemple trouver de grandes bannières « fonctionne avec Firefox 2.0 » ou des explications sur le support d’une fonctionnalité dans Gecko en plein milieu d’un article relativement neutre.

Lorsque Mozilla s’engagea plus activement pour la communauté de MDN en 2010, les membres de la communauté exprimèrent l’idée que MDN devait être neutre (entre les différents navigateurs) afin de mieux servir les développeurs web. MDN pouvait ainsi devenir une ressource utile quel que soit le navigateur visé. Adopter cette stratégie demanda un effort conséquent pour retirer le contenu spécifique à Firefox au sein des articles portants sur les technologies standard du Web. Cela permit notamment de créer les tableaux de compatibilité qui existent aujourd’hui, chacun comportant des informations sur les principaux navigateurs. Le contenu de MDN devenant plus « agnostique », les autres organisations commencèrent à contribuer à MDN.

MDN : aujourd’hui et demain

En ce moment, deux projets ont un impact majeur sur MDN, à court ou à moyen terme. Ces projets sont la « Learning Area » d’une part et le projet des données de compatibilité d’autre part.

Les informations présentes sur MDN sont, depuis longtemps, utilisées par les développeurs web expérimentés. En ce qui concerne les débutants en revanche, MDN a manqué de contenu pour les accompagner. Le but de la Learning Area (Apprendre le Web) est de changer ça en apportant des tutoriels et d’autres ressources pour que les lecteurs de MDN puissent apprendre le développement web par eux-mêmes. Ce projet est une réponse aux sondages que nous avons proposés au public de MDN. Les résultats ont mis en avant le manque de contenu pour l’apprentissage et la découverte. Ce projet a démarré depuis un an et a vu la création d’un vaste glossaire sur les concepts liés au Web, de tutoriels s’inscrivant dans la littératie du Web développée par la Fondation Mozilla. La Learning Area est une excellente opportunité pour commencer à contribuer à MDN car nous avons à la fois besoin de débutants et d’experts pour enrichir ce projet.

Actuellement, les données de compatibilités des différents navigateurs sont gérées dans des tableaux présents sur les différentes pages. Les données qu’ils contiennent sont plutôt bonnes grâce aux nombreuses contributions. Toutefois, cette approche n’est pas durable ou maintenable. Par exemple, chaque tableau doit être répliqué puis maintenu sur les différentes versions localisées. Le projet des données de compatibilité vise à améliorer la qualité de ces données, de faciliter la contribution à ces données, de simplifier l’accès à ces données et de pouvoir réutiliser ces données grâce à un dépôt centralisé. Ce projet est géré en termes d’actions plutôt qu’avec un planning donné. Les contributions de tout bord sont bienvenues !

MDN dans 10 ans ?

MDN tel que nous le connaissons aujourd’hui est très différent de ce qu’il était 10 ans auparavant. Le Web a évolué, Mozilla a évolué et MDN a évolué. Les 10 ans à venir verront sans doute des changements encore plus forts. La vision d’un « cyber-espace » directement connecté va peut-être se concrétiser. Une chose est sûre, il y aura de plus en plus de développeurs web, de plus en plus de types d’appareils et de nouveaux standards à venir.

Certains éléments ne changeront pas : la mission de Mozilla sera toujours de travailler afin qu’Internet soit une ressource publique mondiale, ouverte et accessible à tous. MDN continuera d’être un moyen au service de cette mission en fournissant les ressources nécessaires pour que chacun puisse créer et développer sur cette plateforme qu’est le Web. Peu importe la façon dont son contenu est distribué, MDN continuera d’être le fruit des contributions d’une communauté mondiale de personnes passionnées par l’enseignement et le partage des connaissances autour du Web.