Le Triste Statut de Markdown

2012-11-15 23:54, écrit par kib2 dans markup - programming

Le triste statut de Markdown

Back In Time

Il y a déjà quelques années, Markdown a gagné haut la main la bataille des langages de markup.

Et croyez-moi, il en existe plétore! Citons cependant ici les principaux:

Chacun définit donc sa syntaxe, ainsi que divers formats d'export: html, pdf, (La/Xe)TeX, doc, odt, pdf, etc.

So, where's the problem then ?

Je me suis toujours demandé ce qui avait poussé la communauté du Web à retenir ce candidat en particulier. C'est pour moi une aberation mentale totale.

Tout d'abord, Markdown est fermé au possible: son principal créateur, John Gruber, ne veut strictement rien entendre depuis des années sur sa spécification, sur les propositions d'étendre la syntaxe, et prétent même que les bugs de son implémentation en Perl sont inexistants (cest pour lui une feature). Lorsque je regarde le code source de Markdown, je ne peux m'empêcher de sourire: tout est traité à partir d'expressions régulières bien lourdes et sujettes au bugs, et on a même droit à du hachage cryptographique en md5 pour remplacer certaines balises inline saloper le tout.

Mais bon après tout, celà concerne John Gruber uniquement, et si l'envie lui prend d'écrire son code comme ça, après tout pourquoi pas.

Parlons maintenant syntaxe deux minutes: Markdown a été conçu pour être lisible au format texte. Et il réussi plutôt bien sur ce point il faut le dire. Par contre, la syntaxe est vraiment très peu intuitive, il ne me vient pas à l'idée par exemple que pour écrire un mot en italique comme ça, il faille écrire littéralement: __italique__. Je ne parle même pas des liens: [Texte de rendu](adresse Web): pas facile à retenir: faut-il placer les crochets avant ou après les parenthèses ? Qu'est-ce qui vient d'abord: le texte de rendu ou l'adresse Web ?

Une tentative d'unifier tout cela a été faite il y a quelques années, et des gens(biens) y ont passé beaucoup de leur temps: c'est ainsi qu'est né Creole. Une syntaxe vraiment intuive, on écrira par exemple //italique// pour avoir son texte en italiques, facile à retenir puisque c'est visuel. A cela ajoutons une spécification très bien fichue, de nombreux tests disponibles et une liste de cas "problématiques" avec des solutions enviseageables (oui, ils existeront toujours, et quelque soit le langage de markup choisit, on est obligé de faire des concessions).

Mais non: à mon grand regret Creole n'a pas été adopté par la communeauté. Je ne sais d'ailleurs comment s'est venu, petit à petit certainement: Github l'a adopté, puis StackOverflow, puis comme tout le monde utilise Github, alors on s'y est mis. Ce qui est marrant dans tout cela, c'est qu'en manque de spécification réèlle, chacun y va avec sa propre implémentation. Ainsi, un texte écrit avec le Markdown de Github ne sera pas nécessairement compatible avec celui de Stackoverflow: elle est pas belle la vie ?

Sans compter sur la multitude d'éditeurs de texte supportant son le format Markdown: marked sous OSX, MarkdownPad sous Windows, etc. Il en existe juste des dizaines, et il en pousse tous les jours.

Now, we're all on the same boat

En effet, et celui-ci se nomme Titatinic.

Jeff Atwood a publié cet article sur Coding Horror il y a de cela quelques jours, faisant un appel public à une spécification claire pour le langage.

Depuis, les réactions de John Gruber n'ont été que négatives, voire parfois infantiles (voir ici pour avoir un aperçu de ses twitts).

Des groupes se sont pourtant organisés pour apporter de l'eau au moulin, mais pour le moment j'ai comme l'impression qu'on n'ose pas toucher au bébé, parce que son papa n'est tout simplement pas d'acord.

Faut-il donc vraiment être adoubé par Monsieur J.Gruber pour avoir enfin quelque chose de propre à nous mettre sous la main ? Je crains que non: ça se fera certainement sans lui, et je dois dire que pour ma part ce sera tant mieux. S'il a fermé les yeux tant d'années, pourquoi bougerait-il le petit doigt maintenant ?

Love Boat

En attendant, il existe pourtant de belles choses à l'horizon, il reste juste à ouvrir les yeux pour s'apercevoir que le couloir n'est pas si sombre et que certaines portes restent ouvertes.

On peut, et on doit d'ailleurs, félciter Fletcher T. Penney pour son implémentation de MultiMarkdown exemplaire. Aucune expression régulière (le parseur est écrit en PEG, bien plus puissant et maintenable), une syntaxe enrichie, des tests en pagaille, etc.

J'aurai aussi du mal à oublier Pandoc qui depuis quelques années déjà se bat pour unifier un peu toutes les syntaxes les plus courantes (dont Markdown) dans un seul et même projet écrit en Haskell.

Enfin, signalons qu'il existe aussi de petites implémentations de Markdown qui ne font pas appel aux expressions régulières, celles-ci sont toutefois basées la plupart du temps sur des langages fonctionnels:

  • Cette implémentation en OCaml qui ridiculise la plupart des autres tellement elle est courte et rapide.
  • Celle-ci faite avec Clojure.
  • Celle-là implémentée en F#.
  • Cette dernirère qui est une vidéo de "prise en main" de F# où on nous explique pas à pas comment parser la syntaxe de Markdown.
comments powered by Disqus

 


© 2012 by Kib².