En vacances depuis peu, je viens de passer une semaine avec quelques amis en HackFest. Pour faire simple, c’est une fête de geeks : on a codé, discuté du Libre, échangé sur plein de choses, et on s’est bien amusés. De cette semaine, un projet a émergé, il s’agit de lp4all.
Lp4all est un outil de Literate programming (ou programmation littéraire en français). L’idée principale de notre projet est d’offrir un outil de mise en forme du code source d’un programme. Cette visualisation s’appuie sur une syntaxe wiki pour les commentaires, offrant ainsi un large panel de possibilités, pour le commentaire du code directement, mais aussi pour la génération de documentation développeur.
Pendant cette semaine, nous avons utilisé l’outil de gestion de version décentralisé mercurial. Cet outil mérite vraiment le détour, tant pour la partie décentralisée (le merge de branches séparées est assez efficace) que pour ses outils de visualisation. Le seul défaut, qui sera certainement corrigé bientôt est la perte de l’historique d’un fichier quand on le renomme.
J’ai profité de cette HackFest pour migrer ma machine en utf‑8, et pour quitter xemacs pour emacs (merci Fred!). Bref, que du bon :)
Les liens :
Celà m’a l’air fort intéressant. Par contre, il y a certains points que je ne comprends pas. Le but est de mettre en wiki les commentaires d’un fichier sources :
– quels fichiers sources sont pris en compte ?
– pour quel wiki la sortie est-elle écrite ?
Ce serait possible de rajouter, sur le site de Lp4all un exemple concret de code source, et ce que celà donne une fois transformé en wiki via l’outil.
Une version française du site est prévue ? ;)
- Lorsqu’on appelle lp4all, on lui passe en paramètre les fichiers que l’on veut traiter, donc ceux qui sont pris en compte, c’est ceux qu’on veut, il suffit que la forme des commentaires et du code soit connu par lp4all
– on a écrit un parseur de wiki spécifique, en lex/yacc. Tous les autres moteurs de wiki font un remplacement brutal par du code html. Comme à terme on souhaite avoir d’autres sorties (comme le LaTeX), on construit un arbre. La syntaxe de notre wiki est présentée sur notre site.
– Pour l’exemple concrêt de code source, on a fait plus fort encore qu’un simple exemple : le site de lp4all a été fabriqué par lp4all à partir des sources de lp4all. Autrement dit, tu vois directement le résultat :) Il y a aussi quelques exemples en page principale…
– Pour la version du site en français, pour l’instant ce n’est pas prévu, mais on espère ajouter à terme un outil de traduction de commentaire incorporé à lp4all : comme notre site en est un produit, on l’utilisera certainement pour ça.
ca a l’air vraiment sympa votre truc :) bonne continuation :D
lp4all, attention au copyright ;-) C’est le nom de l’entrée de gamme des VTT Lapierre !
Quelques questions au passage :
Qu’apporterait cette syntaxe de commentaire par rapport à doxygen, docutils (ReStructured Text), PyRTF ou javadoc ?
Sinon une suggestion pour la syntaxe, reprendre celle de txt2tags :
http://txt2tags.sourceforge.net/
Sinon, le projet est pas mal :-) Ça peut donner que du bon ;-)
bobuse > lp4all, on l’avait choisi comme nom de projet au début de la semaine. Quand on s’est décidés à le mettre en ligne, on a regardé ce que donnait une recherche sur ce nom. Évidemment on a trouvé la marque de vélo. On s’est dit que ça ne poserait pas de problème, et surtout qu’on allait vite les exploser en google rank ;)
Sinon, la différence majeure entre lp4all et un outil comme doxygen est le rendu final : les outils comme doxygen sont proches du langage, et extraient de nombreuses informations, construisant des pages qui au final ne suivent plus linéairement le code source. Le but de la programmation litéraire est de proposer une représentation du code source qui devient la documentation (voir noweb par exemple). L’objectif est de proposer quelque chose qui s’abstrait du langage (lp4all est multi-langage), et qui permet de construire une documentation développeur (et non juste celle d’une API) où l’on explique l’algorithme, puis où l’on voit le code…
Enfin, concernant la syntaxe, c’est une idée que je garde dans le coin de la tête. Mais pour l’instant, nous avons choisi une syntaxe type dokuwiki/wikini voire mediawiki, car à terme nous espérons proposer l’édition des commentaires par le navigateur web…
Voili voulou :)
Ok, merci pourles explications et la ref noweb, dont l’url exacte devait être :
http://www.eecs.harvard.edu/nr/noweb/
certainement un gourage d’onglet ;-)
Exact, il va falloir que j’apprenne à me relire ^^
Je corrige :)
connais-tu le site :
http://en.literateprograms.org
il me semble assez proche de ton projet.
peux-être serait il plus rentable d’améliorer LP.org que de repartir « from scratch »…
en tout cas bon courage