Ceci n’est pas Markdown

Je ne serais pas étonné d’apprendre que personne d’autre que John Gruber n’utilise Markdown. Ses propres articles montrent les limites de la spécification originale : elle n’intègre qu’une partie des éléments HTML communs, et ignore des pratiques très communes de la publication web1. Markdown « permet d’écrire dans un format de texte brut facile à lire et facile à écrire », sauf quand il ne le permet pas.

Son script de conversion ne précise pas d’« ordre des opérations »2, n’est pas assez strict3, et n’est pour ainsi dire pas documenté4. Il définit deux manières de décrire l’emphase et l’emphase forte, deux manières de signaler des titres, deux manières de faire des liens, deux manières d’intégrer des images, deux manières de… Mélangez le tout, et le résultat est trop souvent imprévisible. Markdown produit « du XHTML (ou HTML) structurellement valide », sauf quand il ne le fait pas.

Markdown est incomplet, Markdown est ambigu, Markdown est confus… autrement dit Markdown est simple, Markdown est souple, Markdown est extensible. Il n’est pas populaire en dépit de ses faiblesses, il est populaire parce qu’il n’est pas parfait : il n’impose rien, et ce qui manque peut lui être ajouté. S’il était opposé à toute personnalisation de Markdown, John Gruber l’aurait-il placé sous le régime d’une licence open source5 ? Il n’a certes jamais caché son aversion pour certaines variantes6, mais il n’a jamais manqué une occasion de saluer le travail de Michel Fortin ou la variante de Github7.

Je ne serais pas étonné d’apprendre que la grande majorité des « utilisateurs de Markdown » utilisent en fait MultiMarkdown sans le savoir. Parce qu’elle intègre les éléments HTML les plus utiles, et s’adapte à des pratiques très communes de la publication web, cette variante est devenue un standard de facto. Pourquoi, donc, fallait-il que Jeff Atwood lance un Standard Markdown ?8 Sans doute parce qu’il le peut, la licence du projet original n’interdisant pas explicitement l’usage d’un mot composé de Markdown pour décrire une variante n’ayant pas reçu la patente de John Gruber9.

Mais c’est surtout parce que le créateur de Stack Overflow refuse de voir dans la « stagnation » apparente de Markdown un effort conscient de le protéger de toute modification qui casserait le subtil équilibre entre imperfection et souplesse. Standard Markdown résout quelques-uns des problèmes d’implémentation les plus frustrants de Markdown, c’est vrai — mais il ne se fait pas force de proposition. En quoi est-il, donc, plus « standard » que Markdown, MultiMarkdown, ou toute autre variante ?

Il le serait circulairement parce qu’il passe la suite de tests qu’il définit. Il le serait d’autorité parce qu’il a été conçu avec le concours du génial créateur de Pandoc, qui est aussi le directeur du département de philosophie de Berkeley. Il le serait en toute modestie parce que Jeff Atwood a raison et que John Gruber a tort10. Il le serait simplement parce que c’est écrit dessus, comme le Port-Salut.

Où sont les choix forts, qui justifient l’instabilité au nom du bien commun ? Où est le consensus des usages, indispensable à tout processus de standardisation ? Nulle part, et surtout pas chez John Gruber. Standard Markdown n’est donc pas un standard : c’est au mieux une variante stricte remettant en cause une dizaine d’années d’extensions, au pire un prétendant à la standardisation de plus11. Il ne fait donc que diluer l’ensemble de l’écosystème, alors même qu’il prétendait le concentrer. Ce n’est pas cela, être le « parent responsable d’un projet open source »12.

Mise à jour du 05 septembre 2014 — Standard Markdown s’appelle désormais Common Markdown13. Ce qui ne change pas grand-chose.


  1. Le fichier source de son (excellent) article sur les choix d’Apple en matière de définition d’écran pour des iPhone plus grand est très instructif : comme Markdown ne possède pas d’équivalent pour les tables (un élément HTML commun) et les notes de bas de page (une pratique commune), Gruber doit les « écrire » en HTML. 

  2. ***Lorem ipsum*** doit-il donner <b><i>Lorem ipsum</i></b> ou <i><b>Lorem ipsum</b></i> ? \***Lorem ipsum\*** doit-il donner <pre>***Lorem ipsum***</pre> ou <pre><b><i>Lorem ipsum</i></b></pre> ? Et ainsi de suite. 

  3. Par exemple, Markdown permet d’écrire ####### Lorem ipsum. Comme l’élément <h7> n’existe pas, il produit <h6># Lorem ipsum</h6>, ce qui n’a aucun sens. 

  4. « Pourrait-on utiliser des références de liens dans d’autres références de liens ? », « Pourrait-on mettre des balises dans l’attribut d’une image ? » et « Pourrait-on mettre une liste dans un bloc de citation ? », sont trois débats dont l’absence de réponse me pose des problèmes plusieurs fois par semaine. 

  5. John Gruber, « Markdown : License », Daring Fireball, 2004. 

  6. John Gruber, réponse à « forking Markdown.pl? » dans la liste de diffusion Markdown, 14 mars 2008. 

  7. PHP Markdown est de facto le port officiel de Markdown.pl en PHP, cf. la section « Acknoledgments » de la description du projet. Sur la variante de Github, voir notamment John Gruber, « GitHub Flavored Markdown », Daring Fireball, 23 octobre 2009. 

  8. Jeff Atwood, « Standard Flavored Markdown », Coding Horror, 03 septembre 2014. 

  9. Cf. Sean Leonard, réponse à « Markdown as genericized » dans la liste de diffusion Markdown, 10 juillet 2014. John Gruber lui-même réagit sur l’utilisation du mot « Markdown » seul, pas d’un mot composé de « Markdown », comme dans sa réponse à « forking Markdown.pl? » dans la liste de diffusion Markdown, 18 mars 2008. 

  10. Cf. Daniel Jalkut, « Open Source Obligations », Red Sweater Blog, 30 décembre 2009. 

  11. Cf. Randall Munroe, « Standards », XKCD

  12. Jeff Atwood, « Responsible Open Source Code Parenting », Coding Horror, 29 décembre 2009. 

  13. Jeff Atwood, « Standard Markdown is now Common Markdown », Coding Horror, 05 septembre 2014.