Table rase et Cobalt

Si jamais vous étiez lecteurs de mon blog, ça a dû vous faire un sacré choc : tout a disparu ! Plusieurs éléments m’ont poussé à cette décision pour le moins radicale. Explications !

🔗Pourquoi n’a pu rien ?

Tout d’abord, il faut bien le reconnaître, depuis le temps que je tiens ce blog (2004 !), les choses ont bien changé non seulement sur le plan technologique, mais aussi au niveau de mon avis sur plein de sujets. Du coup, beaucoup d’articles étaient obsolètes ou ne reflétaient plus mon point de vue. Voilà pourquoi je recommence de zéro, mais je réimporterai certains articles de l’ancien blog au fur et à mesure, s’ils me semblent toujours pertinents.

Ensuite, il y a quelques années, l’amie Célia m’a fait découvrir Jekyll, avec lequel elle a fait tout son site. À l’époque, je trouvais ça un peu compliqué pour faire un blog. Je ne voulais pas avoir à mettre les mains dans le cambouis pour écrire ; je voulais pouvoir changer de thème sans effort et la migration des vieux articles me semblait un peu trop fastidieuse. Pourquoi est-ce si compliqué ? Parce que Jekyll est un générateur de sites statiques.

🔗Késako qu’un générateur de sites statiques

Avant de parler de la catégorie de programmes dont fait partie Jekyll, il faut que j’explique grossièrement comment fonctionnent les moteurs de blog, dont le plus connu est WordPress.

🔗Les moteurs de sites dynamiques

WordPress et — je pense pouvoir l’affirmer sans trop de risques — la totalité des moteurs de sites sont dits « dynamiques » : quand vous vous rendez sur un site utilisant un tel moteur, le serveur va récupérer le texte à afficher dans la base de données. Il va ensuite le fusionner avec le thème actif et en faire quelque chose de compréhensible par un navigateur (mélange de HTML et de CSS). Ce dernier va se charger de transformer ça en une page que vous pourrez lire.

C’est un mode de fonctionnement très puissant, qui permet par exemple de générer à la volée la liste des articles qui correspondent au tag que vous venez de cliquer ou d’avoir une gestion de commentaires. Mais cela nécessite aussi beaucoup de travail côté serveur, qui devra refaire ça pour chaque visite sur le site (oui je sais, on peut ajouter un cache).

Ce blog a commencé sa vie avec Drupal (en 2004, donc), puis a migré vers Dotclear en 2005, et a fini sur WordPress pendant de longues années (2008-2017 !!!). Mais comme je l’ai évoqué dans mon article sur Ghost, je commençais à trouver WordPress un peu lourd pour un blog tout simple, son éditeur un peu capricieux, sans parler du fait que c’est du PHP derrière, technologie que j’abhorre (j’y reviendrai peut-être un jour)… Bref, tout cela me dérangeait.

🔗Les générateurs de sites statiques

C’est alors que l’amie Poulpette me reparle de Jekyll. Même réaction épidermique que la première fois, mais après avoir pris un peu de recul, l’idée fit son chemin et le côté geek commença à reprendre le dessus : puisque j’aime tant la bidouille technique, pourquoi ne pas en faire un peu plus, même si c’est juste pour blogger ?

J’ai alors commencé à étudier le monde des générateurs de sites statiques : ces programmes fonctionnent en prenant d’un côté un fichier qui contient le texte, souvent écrit en Markdown, et une série de fichiers « layout » qui correspondent au thème du site. Ils vont combiner tout ça et produire le mix HTML et CSS nécessaire au navigateur. Vous noterez que le tout est très similaire au fonctionnement dynamique. La différence se situe sur le moment où est faite cette compilation de fichiers pour produire la page lisible. Ici, tout est produit avant même que les fichiers soient sur le serveur.

On prépare le thème du site, on écrit son post et on lance une ligne de commande pour obtenir un ensemble de fichiers HTML et CSS qu’on upload sur le serveur. Celui-ci n’a plus qu’à servir ce résultat tout prêt, sans aucune manipulation supplémentaire : pas besoin de base de données, pas besoin d’un moteur de blog, pas besoin de PHP ! Autant dire que sans toutes ces briques logicielles, le fonctionnement est largement simplifié, surtout au niveau de la sécurité. La maintenance se réduit à garder le serveur web à jour. Plus besoin de mettre à jour WordPress rapidement à chaque nouvelle faille découverte, ni de mettre à jour un de ses plugins qui présenterait aussi une faille. Plus besoin non plus de mettre à jour MySQL ou encore PHP.

Bien sûr tout n’est pas rose :

  • ce n’est pas à la portée de n’importe qui vu que ça nécessite la ligne de commande ;
  • c’est un outil très geek et ça demande pas mal de bidouille pour atteindre son objectif ;
  • de plus, si on veut par exemple la liste des articles qui ont un certain tag, il faut avoir généré toutes les listes pour tous les tags, même si certaines de ces listes ne seront jamais vues, là où WordPress ou Ghost ne la créeront que s’il y en a besoin… et c’est pareil pour toute autre page dont on aurait peut-être besoin.

Mais pour un blog, c’est bien suffisant. Il manque tout de même une gestion de commentaires, qui ne peut pas se faire statiquement par essence. Les sites ainsi créés passent souvent par Disqus ou Facebook pour gérer tout ça. J’ai choisi de m’en passer pour l’instant et de toute façon, Cobalt ne le supporte pas encore.

🔗Cobalt

Le logo de Cobalt Le logo de Cobalt… oui je le trouve moche aussi ^^'

Le plus célèbre des générateurs étant Jekyll, j’ai regardé comment l’installer et malheureusement, c’est en Ruby, ce qui rend l’installation sous Windows affreusement compliquée à mon goût. Oui, j’ai décidé de bidouiller un peu plus pour le blog, mais faudrait pas pousser non plus !

En continuant ma fouille, je tombe sur Hugo, un générateur écrit en Go et réputé pour être bien plus rapide que Jekyll. Il se trouve que cette recherche de générateur se passait en même temps que ma découverte du langage Rust (j’y reviendrai très vite, j’ai une série d’articles en cours dessus ;-)). C’est alors que je me suis demandé si par hasard il n’existerait pas un générateur de sites statiques fait en Rust. C’est là que j’ai découvert Cobalt. Le projet n’est pas très vieux et n’est pas très avancé, mais vu que je cherchais un projet en Rust pour pratiquer le langage, j’ai trouvé là exactement ce qu’il me fallait ! :D

D’une part, me voilà donc contributeur sur le projet Cobalt, et d’autre part un nouveau site a vu le jour, fait avec ce générateur dont je parlerai plus en détail plus tard ! J’espère vous en avoir un peu appris sur les générateurs de sites statiques et que le nouveau blog vous plaira. :)