Markdown a besoin d'être standardisé rss

J'adore le Markdown. C'est un langage de formatage simple, lisible et parfaitement adapté au web. J'en mange 5 fois par jour, matin midi et soir sur ce blog, sur Github, sur GitLab, sur mon Wiki (en fait ça n'est pas du Markdown mais un type de markup language), sur Stack Overflow, etc. Le hic, c'est que le Markdown original n'a codifié qu'un nombre limité d'éléments HTML standards. Du coup, la plupart des services qui l'utilisent y ajoutent une surcouche ; le fameux Flavored Markdown.

Mais vous vous en doutez, sinon ça serait trop simple, cette surcouche ne reprend généralement pas les mêmes conventions en fonction des services. Faisons un petit tour d'horizon.

Markdown standard

Je fais un rappel rapide de ce qu'est Markdown, pour ceux qui ne connaitraient pas. Cet outil permet donc de formater du texte très simplement. C'est un peu le même principe que le BBCode à la grande époque des forums, sauf qu'on ne s'arrache plus les cheveux.

Un petit exemple :

# Titre principal

## Sous titre   

Ceci est une super liste :

 * Elément 1
 * Elément 2    

[Lien](http://hoa.ro "Titre : Tu m'emmerdes avec ton exemple")

Enfin bref, vous pouvez retrouver toute la syntaxe sur la page de documentation et encore plus dans l'image-mémo ci-dessous.

github-md.jpg

Flavored Markdown

L'image précédente n'est pas là tout à fait par hasard. Vous pouvez voir en bas de celle-ci quelques éléments clés du Github Flavored Markdown (que je vais appeler le GitFlav dans la suite, parce que c'est plus court).

Ainsi, comme vous pouvez le constater, sur Github vous pouvez écrire votre code après un triple backquote et le nom du langage. Par contre, vous ne pourrez faire ça QUE sur Github (ou un service qui implémente arbitrairement la même règle).

Sur ce même service, vous avez également la possibilité d'afficher des cases cochées/décochées. Pourquoi pas.

Une fois sur Stack Overflow, si vous voulez définir le langage utilise dans votre bout de code, il vous en coutera un :

<!-- language: lang-js -->

C'est l'exemple le plus parlant, mais il y a très certainement d'autres subtilités.

Note : La liste des différences entre GitFlav et l'original est ici (et elle est longue). De plus, à ma connaissance, les sources de GitFlav ne sont pas disponibles.

Normalisation

En bref, chaque fois qu'apparaît un besoin spécifique sur Markdown, mais non moins global, chacun y va à son coup de spécification. Un autre exemple, tout simple : Markdown ne prévoit pas dans sa norme le strike (barré). Basique, mais non implémenté. Que fait-on alors ? On forke et on rajoute un strike entre deux signes égals ? Ou deux dollars ?

Il est clair que le langage Markdown aurait un bon besoin de dépoussiérage, de normalisation et d'évolution. Vous saviez que la dernière version, la 1.0.1 date de 2004 ? Les usages ont tout de même un peu évolués en 10 ans.

Je pense qu'aujourd'hui les mieux placés pour porter ce changement sont les deux semi-géants de l'Internet cités précédemment : Github et Stack Overflow. Après tout, Twitter a bien révolutionné le monde des framework CSS, pourquoi un meilleur Markdown ne serait-il pas possible ?

Note : Image via le Colibri.

15 commentaires

#1 - Fred - 07 août 2013 @ 17:23 :

Les sources sont bien disponibles : https://github.com/github/markup

Pour le générateur de blog statique pelican, on a effectivement à faire à un autre flavoured markdown.

Sur Redmine et Jira, par défaut je viens de découvrir que le langage de balisage doit être du textile, qui est sympa aussi, mais différent.

Et pour Sphinx, un outil de documentation très utilisé, c'est le reStructuredText.

Peut être que dans quelques décennies l'un d'entre eux, ou un nouveau, aura pris le dessus :)

#2 - YP - 07 août 2013 @ 17:43 :

Pour ajouter à la liste de fred, il y a aussi asciidoc: http://methods.co.nz/asciidoc/ et surtout orgmode: http://orgmode.org/

Et franchement je ne peux que recommander orgmode, j'installe emacs rien que pour lui.

Il y a des tutoriaux et des démos sur youtube
http://www.youtube.com/watch?v=6W82EdwQhxU
http://youtube.com/results?search_query=orgmode

La courbe d'apprentissage est nettement plus longue, mais imho ça vaut le coup.

#3 - qwerty - 07 août 2013 @ 19:24 :

Personnellement, j'ai inventé un pseudo-markdown. Pourquoi ? Parce qu'en quelques lignes, le parser est torché, contrairement à la classe PHP trop lourde à mon goût !
Et pour les éléments non implantés : HTML. Après tout, revenons aux sources !

#4 - piR - 08 août 2013 @ 10:44 :

Perso ce qui m'ennuie c'est quand passer une ligne dans la source ne passe pas une ligne dans le résultat.

C'est quoi l'intérêt de ça ?

#5 - Arthur Hoaro - 08 août 2013 @ 11:47 :

@Fred : Ah merci pour les sources, j'étais passé à côté. Et j'espère quand même qu'on arrivera à quelque chose en moins de trente ans...

@YP : Je dois admettre que son copier/coller de tableau formaté en une commande m'a un petit peu impressionné. :)

@qwerty : Oui pourquoi pas. Mais pour être raccord avec l'article, la question à se poser est de savoir si tu as respecté les codes de markdown ou si tu en as crée de nouveaux.

@piR : Très honnêtement... Je n'en ai aucune idée. Après on s'y fait. Si tu veux faire un retour à la ligne sans changer de paragraphe, met deux espaces à la fin de ta ligne.

#6 - Riduidel - 08 août 2013 @ 14:09 :

Moi aussi je kiffe markdown. Et pour toutes ces histoires de transformation entre langage, la seule solution valable, c'est pandoc qui transforme tout en n'importe quoi (ou le contraire).
Concernant la normalisation, Jeff Atwood (l'un des créateurs de StackExchange) en a déja parlé sur son blog il y a un moment : http://www.codinghorror.com/blog/2009/12/responsible-open-source-code-parenting.html

Et je crois me souvenir qu'il avait écrit un autre texte parlant de la création d'une norme "post-markdown"là : http://www.codinghorror.com/blog/2012/10/the-future-of-markdown.html

#7 - Arthur Hoaro - 08 août 2013 @ 14:58 :

@Riduidel : Lectures intéressantes ! Du coup, dans le deuxième article, c'est exactement ce que je souhaite : que quelqu'un/une communauté ayant une légitimité reprenne le bébé. Le truc c'est que je ne sais pas si ça a donné suite...

#8 - Cindy Gentner - 16 août 2013 @ 01:22 :

Effectivement il existe des sources disponibles. Par contre Pandoc je ne trouve pas que ce soit toujours très fiable, si ?

#9 - Bronco - 17 novembre 2013 @ 19:28 :

Tout-à-fait d'accord à propos de markdown... c'est une très bonne alternative simple au bbcode par exemple et qui permet de produire un html standard et propre... mais c'est vrai également qu'une bonne normalisation ne serait pas de trop ^^

@qwerty: +1 pourquoi créer des classes pour ça ?! une fonction suffit... (je crois que je vais bosser dessus... XD )

#10 - Bronco - 18 novembre 2013 @ 18:33 :

Tiens, au passage, je mets là une lib pour parser le markdown: elle n'est pas de moi, je me suis contenté de la transformer en fonction... (à l'origine, c'est une classe, mais j'aime pas la POO ^^)

<a href="https://github.com/broncowdd/parsedown">https://github.com/broncowdd/parsedown</a>

Si ça peut servir, ça marche bien ...

#11 - Arthur Hoaro - 21 novembre 2013 @ 20:11 :

@Bronco : Roh bah c'est très bien la POO. :)

#12 - Bronco - 21 novembre 2013 @ 22:15 :

@Arthur: En effet, c'est super, mais pas pour tout ! ^^
en plus, sous php, je trouve ça moche ^^
En même temps, j'ai connu la prog spaghetti sous amstrad cpc, donc je viens de loin ^^

#13 - Yosko - 22 novembre 2013 @ 09:32 :

On dit pas " je trouve ça moche", on dit "j'aime pas" :D

#14 - Bronco - 22 novembre 2013 @ 12:12 :

@yosko: moi, je dis ce que je veux... çui qu'est pas content, une balle dans le fion...(^^)
De toutes façons, il y a des mochetés objectives: la POO php en fait partie, hinhinhin...

#15 - Yoplay - 03 mai 2015 @ 23:41 :

http://commonmark.org/

Écrire un commentaire

Quelle est la troisième lettre du mot qropo ? :