Mon bilan sur Jekyll

web

J’ai récemment refait ce site en utilisant le générateur de sites statiques Jekyll, une technologie que je n’avais jamais expérimenté auparavant. Je vais faire le point de manière subjective et non exhaustive sur mon expérience.

Les aspects positifs

Le HTML c’est rapide

J’enfonce une porte ouverte en disant ça mais c’est vrai ! Demander de charger une page HTML à mon Raspberry Pi c’est toujours moins de charge serveur que faire tourner la moulinette PHP (et parfois SQL) à chaque chargement de page. En réalité, pour l’habitué du PHP que je suis, c’était là quelque chose qui m’attirait avec les générateurs de sites statiques, faire faire des économies de consommation à mon petit serveur.

Sécurité

L’avantage considérable induit par les pages statiques c’est qu’elles ne sont pas attaquables. Pas de CGI, pas d’injection pourrie à cause d’une faille dans le CMS. Les failles trouvées chez Drupal en mars/avril m’ont conforté dans cette idée de ne pas mettre des pages dynamiques par tradition mais de choisir ce qui correspond à mes besoins concrets.

Simplicité

Ce qui est vraiment intéressant lorsqu’on travaille avec Jekyll c’est qu’on peut travailler avec ses outils préférés. Moi je fais ma tambouille avec VS Code, j’ai un terminal à côté ouvert sur un jekyll serve --watch --livereload et je regarde le rendu sur mon Firefox. Les fichiers de contenus sont en Markdown : c’est simple et je pourrai migrer sur un autre outil sans trop de problèmes le jour où je le souhaiterai.

Pour migrer ma copie locale sur le serveur, j’utilise rsync avec SSH. En une seule commande et en quelques secondes mon contenu est mis à jour sur Internet : seuls les fichiers modifiés ou ajoutés sont copiés. C’est terriblement efficace.

Liquid, Sass, CoffeeScript

On peut éditer ses templates HTML avec Liquid qui est géré nativement, tout comme les feuilles de style Sass et le CoffeeScript sans avoir à bricoler des pipelines pendant trois heures. C’est vraiment un apport de confort plaisant.

La nostalgie aussi !

Eh oui ! J’ai le souvenir quand j’étais petit de ces applications pour Windows pour créer son site Web, on les trouvait dans des CD-ROM Micro Applications. C’était des vieux générateurs de sites statiques aussi, avec un assistant FTP pour envoyer le tout chez un hébergeur. Tout cela c’était avant le « Web 2.0 » et ça a bien disparu. Le retour aux sources (dans tous les sens du terme) offert par les générateurs statiques est un fait plaisant ! Depuis la vieille époque, on y a gagné en plus l’ouverture et les standards.

Ça correspond à ma façon de faire

Honnêtement, j’ai toujours été mal à l’aise de la surenchère de frameworks Javascript qui se succèdent comme des tendances Instagram, des CDN utilisés à l’excès, des CMS immenses pour créer des petits sites vitrines, des pages avec des centaines de requêtes HTTP pour afficher des choses banales.

Parfois utiliser des gros trucs c’est utile, mais parfois non. En réalité ce qui compte c’est la démarche : évaluer ses besoins et utiliser les outils adéquats.

Les aspects négatifs

L’installation

Jekyll repose sur Ruby et utilise le gestionnaire de paquets RubyGems. Je dois dire que j’ai été confus pour l’installer sur Fedora. En effet, la doc de Jekyll évoque vite fait Fedora mais propose d’installer Jekyll à travers RubyGems tandis que Fedora propose via DNF ses propres paquets comme rubygem-jekyll. En tous cas d’après la doc pour développeurs, la méthode du site de Jekyll semble être celle à privilégier (donc installer via RubyGems).

Catégories et étiquettes

Sur ce site, j’utilise à la fois les catégories et les étiquettes (tags dans la langue du grand Lebowski). J’ai mis un moment avant de comprendre la différence, mais en fait tout se passe dans l’URL. Les catégories sont hiérarchisées dans l’URL quand on en met plusieurs. Si je fais un post avec les catégories web linux bilan, je vais avoir …web/linux/bilan… dans l’URL de la page.

Malgré ça, il est impossible via Liquid d’accéder hiérarchiquement aux catégories. Par exemple, si j’itère sur tous les posts dans web, je ne peux pas réitérer sur tous les posts linux comme on pourrait s’y attendre (par rapport à l’URL). Il n’est pas possible non plus de le faire entre catégories et étiquettes. Je ne peux pas itérer toutes les étiquettes des posts d’une catégorie particulière par exemple.

On peut comprendre les limitations du modèle de données, mais c’est quelque chose auquel il faut faire attention selon ce que l’on veut faire, sous peine de devoir faire des contorsions avec Liquid.

Le point sur la vitesse

Le principal défaut de Jekyll par rapport à Hugo (par exemple) c’est sa relative lenteur. Forcément sur un site avec des milliers de page ça peut être handicapant, pour ma part ce n’est pas handicapant et je n’ai pas de souci avec la vitesse de rendu. Toutefois je reconnais que le serveur met quelques petites secondes à se mettre en route et ne réagit pas à la vitesse de l’éclair.

Conclusion

Je suis satisfait de Jekyll, c’est un bel outil bien intégré dans l’univers unixien. Je suis revenu à une forme de simplicité qui me plait. Malgré ça c’est une alternative aux CMS classiques pour certains besoins, mais ce n’est pas un remplaçant automatique à des outils comme Drupal ou Wordpress qui couvrent bien plus de besoins et de cas d’usage. Il faut évaluer ses besoins avant de passer sur un site statique.

La force de Jekyll, c’est son universalité, on peut vraiment le tordre facilement à ses besoins, tant qu’on reste cohérent avec les concepts et les limitations techniques de l’outil.