Hakyll, générateur de sites statiques

Hakyll, générateur de sites statiques

Publié le 4 janvier 2015 par Lancelot SIX.
cc-by

Encore une fois, ce blog renaît de ses cendres. Encore une fois, avec une nouvelle technologie. Aujourd’hui, on quitte le monde à la mode du «Ruby On Rails» pour rejoindre celui de hakyll.

Deux changements majeurs :

  1. plus de site dynamique (après tout le contenu d’un article de blog de change pas tous les deux jours),
  2. on passe en haskell comme langage de description de la «logique métier» (un bien grand mot pour décrire un simple moteur de blog),
  3. les contenus peuvent être rédigés dans n’importe quel langage de formatage compris par pandoc.

Ce que l’on gagne

Voici donc un petit retour sur ces différentes raisons de changement.

Le site tel que perçu maintenant est complètement statique. Fini le moteur de blogue qui pour chaque affichage doit se connecter au système de gestion de base de données sous-jacent, extraire le contenu, le mettre en forme, et enfin l’envoyer à chaque client.

Dans le cas d’un blog, tout cela est relativement superflu. Le contenu à afficher est identique d’une requête à l’autre. Donc plutôt que de refaire l’opération chaque fois, on peut le faire une fois poru toute, générer des pages HTML et les servir directement. De plus, nous limitons ainsi les problèmes liés à la plateforme de déploiement. Il faut bien avouer que ce petit détail peut rapidement devenir un cauchemar avec RoR !

Une solution alternative envisagée a été de migrer sur yesod. De même, on fait du haskell. On gagne la vérification de type du compilateur qui permet de s’assurer de ne pas produire de lien mort. Idem avec les formulaires et leur vérification, que du bonheur ! Cependant, certains problèmes des sites dynamiques persistent. Nous avons une certaine difficulté à gérer les dépendances (même si cabal et ses sandbox aident grandement), et des difficultés de migrations d’une version à l’autre qui font que pour un site que de toute façon personne ne lit, on peut être tenté de ne pas faire les migrations vers les version plus récentes du cadriciel.

Or, c’est là que la bât blesse. Les mises à jours sont là pour plusieurs raisons. On a d’un côté les nouvelles fonctionnalités inutiles (autrement dit on s’en cogne), et d’un autre les mises à jours de sécurité corrigeant des vulnérabilités. Autant les premières sont en général plutôt embêtantes puisque la nouvelle façon super de faire le choses est incompatible avec l’ancienne (et implique souvent de devoir faire le changement qu’on le veuille ou non), autant les mises à jours de sécurité sont nécessaires. Tout ça pour dire que se tenir à jours demande du travail. Pour un ensemble de pages HTML, il n’y a pas tant de soucis à se poser.

Ce que l’on perds

Le site n’étant plus dynamiques, nous perdons toues les fonctionnalités dynamiques. Pour être honnête, la seule partie dynamique de ce site jusqu’ici exploitée est la possibilité donnée aux visiteurs de laisser des commentaires. N’ayant pour ainsi dire aucun visiteur, et les rares qui tombent ici par je ne sais quelle malchange ne laissent pas de commentaire, pas de problème. On ne perd pas grand chose du coup.

Ce qu’il manque

Il y a encore quelques limitations/manques à l’utilisation de hakyll. La plus grande qui me vienne à l’esprit est l’absence de vérification des liens tel que disponible lors de l’utilisation de yesod. Cependant, malgré cela, la charge de calcul limitée sur le serveur vaut le coup !