Si tu lis la zep5 tu n'as pas fini et l'historique est treeees long. Je vais te faire un résumé.
Alors oui notre zmarkdown est un fork de python-markdown. Pendant très longtemps je l'ai maintenu comme une collection d'extension et je rebasai sur l'upstream.
Ensuite j'ai dut faire quelques petites modifications en plein milieu. Il a été décidé, je vais y revenir, de se passer du rebase. Donc je me suis permis quelques autres petites modifs. Récemment j'ai fait quelques plus gros changements : j'ai transformé quasiment tous les preprocessing en parseur de blocs. Il y a de très bonnes raisons à ça mais du coup ça a déplacé et modifié plusieurs centaines de lignes. Enfin récemment aussi j'ai commencé a virer tout ce qui était inutile pour nous. Pour le moment C sont surtout les extensions qu'on utilise pas. Enfin j'ai re-ecrit quelques extensions qui posaient problème.
Actuellement ça serait donc la misère à rebaser mais le coeur est largement similaire voir identique sur de larges portions.
Pourquoi j'ai fait ça ?
Le but de la zep 5 est de produire des ebook et pdf. Pour le premier, c'est basé sur du HTML, on pourrait s'en sortir. Pour les pdf j'avais longtemps tenter de faire un fork de pandoc. J'ai réussi à avoir des pdf potable (en passant par latex) mais il restait pas mal de boulot. Dans tous les cas maintenir un fork de pandoc était une plaie. Je suis pas pro de haskell et ils cassent régulièrement des trucs en plein milieu. J'ai fini par laisser tomber cette idée.
Entre temps des bugs et demandes ce sont accumulés sur le zmarkdown. Le soucis avec ce dernier est qu'il est effectivement fait que pour produire du HTML. Il n'a pas d'AST. C'est pour ça que j'étais parti sur pandoc, ça semblait plus simple comme base. Mais au bout du compte :
- je suis toujours le seul à vraiment travailler sur le zmarkdown,
- malgré ces défauts, il a bien tenu et est resté solide,
- je (et les autres contributeurs de zds) suis largement plus efficace sur python que sur haskell.
La solution pragmatique choisi à donc été de repartir sur zmarkdown. La j'ai fini de couvrir et tester nos extensions. Je vais finir de régler une pr et après je continue à faire le ménage (=virer tout ce dont on a pas besoin). L'objectif est d'avoir une base de code plus simple et clean, on a pas besoin de traîner des tonnes de choses qu'on utilise pas.
Une fois cela fait (dans les semaines qui viennent), il faut en rediscuter. Une première suite est de voir si la communauté voudrais pas quelques ajouts. Il y a eu peu d'ajout pendant longtemps. Ça peut être l'occasion de rajouter des bricoles.
La deuxième vrai suite est de changer profondément le coeur pour passer par une vrai AST intermédiaire plutot que la génération quasi direct du html par le zmardown actuel. Ça représente un peu de boulot car ça demande de toucher à tout, dur de le faire par étape. Mais je pense avoir une idée pour régler le point et le faire de façon incrémentale ! (beaucoup plus safe vu que je suis seul sur le projet et que mes dispos sont fluctuantes).
Une fois qu'on aura une vrai AST, tout est possible. Il reste du boulot pour arriver à la génération d'ebook/pdf car il faut remonter d'un niveau et assembler plusieurs extraits pour faire un contenu. Mais ça sera beaucoup plus facile et sûrs de le faire avec des AST. Une fois qu'on a une AST complète, générer des ebook sera assez facile. Pour les pdf, il va falloir faire des essais. Il y a deux grosses pistes :
-
Utiliser un CSS dédié à l'impression et utiliser quelque chose comme weasyprint :
- Avantage : Beaucoup moins lourd qu'avoir Latex dans la stack pour le serveur, plus simple à gérer (en gros c'est du html + du css pour gérer la présentation).
- Inconvénient : Il y a des limitations, entre autre gérer les balises maths et les footnotes
-
Générer du Latex. Si on a une AST, c'est pas spécialement compliqué. Là on reviendra aux problèmes que j'avais, c'est a dire faire des rendu correct et sans erreurs de contenus complexes.
Il y a quelques autres détails mais c'est pas très important.
NB: Passer vers sphinx sera probablement assez facile une fois qu'on a une AST mais :
- Les deux ast seront pas forcément 100% compatible (ex: le markdown autorise un titre h3 dans un h1, ce que n'autorise pas a priori l'ast de sphinx)
- sphinx passe par latex pour les pdf, je suis pas sûrs qu'on y gagne beaucoup car les problèmes avec latex ce n'est pas de le produire, c'est de faire les bonnes macro et utiliser les bonnes extensions pour que le rendu soit correct.
Voila où on en est et où je compte aller. Je suis preneur de toute aide !
Hésite pas à me poser d'autres question ici ou en MP, et de me contacter si tu veux aider !