À la bonne Sainte-Force

Tools

Mots-clés

Nouveau site

29 mai 2012

Chère amie, cher ami,

À la bonne Sainte-Force, ton site préféré, a changé un petit peu d'apparence. Derrière tout cela, ce qui sert à générer le site a totalement changé ! Ces modifications n'auront pas pris beaucoup de temps et me permettront de mettre à jour le site plus facilement, donc plus souvent.

Ce site est construit de cette façon : certains fichiers sont là et ne bougent jamais, et d'autres sont générés à partir d'autres fichiers. C'est pour générer ces derniers que l'homme a besoin d'un outil qui lui permette de transclure (au sens le plus simple) des portions de document dans d'autres documents. Il n'est pas vraiment possible de réaliser cette opération en spécifiant une quelconque balise HTML. La majorité des gens s'occupent de ça avec un gestionnaire de contenu, des pages écrites dans un langage de script côté serveur (comme Ruby) qui peuvent inclure des documents à la demande et de manière dynamique, ou bien d'un générateur de site statique, qui génère un ensemble de pages HTML qui ne bougeront plus à partir de pages agrémentées d'informations spéciales.

Jusqu'à présent, la matérialisation de la Sainte-Force sur la toile était l'œuvre de nanoc, un de ces générateurs de sites statiques. T'écrire une nouvelle lettre se faisait de la manière suivante :

  • je crée un nouveau fichier nouvelle_lettre.md dans le répertoire ALaBonneSainteForce/content/read;
  • je remplis des champs de métadonnées (titre, tags, date de publication, langue…) dont j'oublie toujours le format particulier;
  • je pratique l'écriture automatique sous absinthe et LSD pendant 15 minutes à 5 heures, prenant le soin de formater ma logorrhée au format Markdown, consultant la documentation de ce dernier puisque j'oublie à chaque fois comment faire des notes de bas de page;
  • si je dois inclure des fichiers ou des images, je dois suivre un ensemble de règles strictes, notamment les mettre dans le répertoire ALaBonneSainteForce/content/media;
  • pour m'assurer de la pérennité du site et de mon droit de rétractation, je dois signaler à mon gestionnaire de versions que j'ai ajouté des choses (je ne peux pas lui dire d'ajouter n'importe quoi, car pas mal de fichiers viennent du cache généré par nanoc, et je ne veux pas les ajouter, eux);
  • je bascule entre édition et visualisation des changements, utilisant la commande nanoc view ou l'autre nanoc autocompile;
  • à chaque fois que le site doit être généré, je dois attendre une vingtaine de secondes, durant lesquelles je remets en question mes choix de vie et mon dernier bulletin de vote;
  • une fois que tout est fini, je signale à mon gestionnaire de versions qu'il faut enregistrer tous mes changements;
  • en une opération, je dis à nanoc de générer le site une bonne fois pour toutes, puis à lftp d'envoyer le site sur la planète Mars, où se trouve le serveur qui permet de lire ces pages.

Bien que l'aventure fût sympathique, le fait que la procédure soit terriblement longue lorsqu'on manque de temps m'a poussé à abandonner momentanément nanoc pour un autre système. Puisque j'utilise régulièrement Tinderbox pour essayer de faire des choses sérieuses la journée, et que ce dernier est capable de transformer ses données en n'importe quel format, j'ai tenté de l'utiliser pour ce site.

En à peine une après-midi, je suis parvenu à transférer À la Bonne Sainte-Force des sources nanoc à un fichier Tinderbox flambant neuf. Il n'a pas été évident de trouver comment remplacer les petites commandes Ruby que j'utilisais par des expressions Tinderbox, ni d'adapter la structure du Tinderbox pour générer ce qu'il fallait. Mais avec un peu de persévérance, on y arrive et on commence à aimer ça. C'est simplement un peu étrange d'en venir à utiliser un outil aussi bien foutu et mal foutu à la fois. À l'intérieur, il est élégant et conciliant. À l'extérieur, il est moche et maladroit. C'est un peu le Quasimodo des logiciels commerciaux sous Mac.

Tinderbox n'est pas gratuit, il coûte même la peau des fesses et on se demande comment il est possible de payer aussi cher pour une telle horreur (au lieu d'acheter le coffret intégral de Stargate SG-1, par exemple). Il n'est même pas libre ! Sa durée de vie excède cependant celle de mon système d'exploitation et il est relativement facile de transférer les informations de Tinderbox, contenues dans un modeste fichier XML, dans un format quelconque.

Tinderbox, cependant, est cool, voire Sainte-Forcesque. Il est aussi fabriqué artisanalement dans une cave (mais par un mec vachement fortiche). Si les ordinateurs sont des vélos pour l'esprit, Tinderbox est un monster truck. Sa spécialité, c'est les données textuelles (les notes), et il offre de nombreux outils pour automatiser leur traitement ou leur création. Entre autres, il permet d'utiliser la notion d'héritage de la programmation pour ces données, grâce aux prototypes. Je ne vais pas faire plus de publicité (même si ça me permettrait d'arrêter de racoler sur le trottoir pour rembourser la facture), mais regarde un peu la nouvelle procédure que j'utilise pour t'écrire de nouvelles lettres :

  • j'ajoute une note dans Articles (elle prend automatiquement le prototype •Article, donc cette note agira comme un article);
  • dans cette note, je remplis les champs qui se présentent à moi, j'écris et je formate le texte comme je le ferais sous LyX, par exemple;
  • pour ajouter des images ou des fichiers, je les insère au bon endroit dans la structure du site et j'y fais référence dans une note de prototype •Figure ou •Download (le reste se fait tout seul);
  • pour générer le site, je tape sur ⌘⌃H et j'appuie sur Entrée; environ une demi-seconde plus tard, je regarde ce que ça donne;
  • pour envoyer le site sur Mars, j'ouvre une note nommée Ouvrir cette note pour synchroniser;
  • pour dire à mon gestionnaire de version de photographier l'état du site, il me suffit de réaliser une commande brutale comme hg add . & hg commit -m caca & hg push (que je pourrais aussi mettre dans une note, pour le fun).

C'est quand même vachement plus Sainte-Force comme ça. Bien sûr, la plupart de mes problèmes provenaient de la façon dont nanoc s'organise, et j'aurais pu bénéficier d'une procédure plus rapide en passant à Jekyll (avec Github Pages). D'ailleurs, des pages HTML toutes simples auraient largement suffi. Un mec connu pourrait même en dire ceci : "All it could accomplish could be duplicated by sufficient use of pencil and paper.". C'est une histoire de préférence, et de montrer qu'on a de l'argent à foutre en l'air.

Deux représentations de la même Sainte-Force.
Deux représentations de la même Sainte-Force.

J'allais oublier. La navigation par mot-clé a été enlevée et reviendra peut-être un jour, sous une autre forme. Si tu as besoin de voir les pages qui parlent d'un aspect particulier du site, utilise Google.

  1. Cela permet, par exemple, de ne pas avoir à recopier les en-têtes sur chaque page, puisqu'on garde ça dans un seul endroit, et on l'inclut dans toutes les autres pages du site. Lorsqu'on change l'en-tête, le changement sera alors répercuté sur toutes les autres pages lors de la génération.
  2. Oui, Tinderbox n'est pas explicitement fait pour ça. En fait, il n'est fait pour rien, ce qui fait qu'il est fait pour tout !

Au plaisir de te lire,
Hubert Sainte-Force