Après quelques mois d’absence, voici le retour du blog 10io. Cette fois-ci, on va essayer le garder up un peu plus longtemps :) Les sujets sont toujours les mêmes: développement web, quelques geekeries et du fun.

Qui dit nouveau blog, dit nouveaux essais comme moteur de blog. Après Lighttpd, Ruby, Rails et Simplelog, je voulais essayer autre chose. Il me fallait quelque chose de simple, quelque chose avec laquelle je puisse poster, personnaliser et déployer facilement. Je savais que je voulais rester avec Ruby, mais les systèmes de blog existant me faisait hésiter: soit ils m’ont pas convaincu(Typo), soit ils étaient mort (Simplelog ou Mephisto anyone?). J’ai même hésiter à faire mon propre système de blog (Make your own bread and eat it!). Bref, c’était un peu la jungle.

Hello Jekyll

Puis je suis retombé sur le moteur de Jekyll, qui se définit comme suit:

Jekyll is a simple, blog aware, static site generator.

En gros, Jekyll prend le contenu d’un site avec quelques fichiers de layout, les fait passer à travers Markdown, Textile et Liquid et crache un site statique tout beau, tout frais. La simplicité du processus est limite choquante. Tellement choquante que je me suis dit en premier On est oú là… un site statique…on retourne au web 0.5alpha.

Et puis, en réflechissant et en fouillant le web pour trouver d’autres utilisateurs de Jekyll, c’était évident que l’approche avait des avantages non négligeables:

  • Site statique: n’importe quel serveur web fera l’affaire pour le déploiement.
  • Pas de base de données, pas besoin de faire des backups: les billets sont à la fois sur le serveur et sur ma machine perso qui me fait la génération du site.
  • Tous les billets sont des bêtes fichiers markdown(voici un exemple): on peut même les imprimer tels quels.
  • Tous les liens dynamiques(ex. les 5 derniers billets) sont générés offline.
  • Les fichiers layout basés sur Liquid sont très simples à faire.
  • Il permet la coloration syntaxique grâce à Pygments

Mais il y avait aussi des inconvénients:

  • Site statique: au revoir les parties dynamiques d’un blog dont les outils de création de billet(pas de formulaire pour créer un billet) sur le site et….
  • Au revoir les commentaires.
  • A chaque nouveau billet, il faut regénérer tout le site de manière offline, l’envoyer au serveur et éventuellement dire au serveur web que les fichiers ont changé.

A ces inconvenients, les utilisateurs ont trouvés des parades intéressantes. Etant dans le développement web, j’ai toujours à portée ma machine personnelle qui s’occupe de la génération du site. De plus, tout le code du site, le layout et le contenu sont sauvés sur un serveur git. Ce qui permet aussi de contrer le troisième inconvénient. Git propose des hooks qui permette de faire des actions sur le serveur dès qu’il y a un commit.

Le problème des commentaires me semblait le plus gros. Là encore, il y avait une solution intéressante: il suffit de les déléguer à des services tiers comme Disqus. L’avantage de ce genre de service c’est de s’intégrer très facilement (du javascript et un peu de css), il propose aux visiteurs de s’identifier avec différents systèmes(Twitter, Facebook, OpenID et d’autres) et enfin, plus besoin de s’occuper du spam. J’étais pas très motivé par héberger les commentaires sur un site tiers. Mais pour finir, je me suis dit Hell, why not?.

Alors bien sûr, ce genre de système de blog n’est pas fait pour monsieur tout le monde: il est destiné à ceux qui doivent mettre les mains dans le moteur pour être content. Ce qui est bien pour ma part. Enfin, j’allais pouvoir mettre à jour un blog comme je code: je checkout les sources, je crée mon billet et je commit les modifications. Finit. Plus rien à faire. Et comme je m’intéresse à git, ça tombait bien j’allais pouvoir faire d’une pierre deux coups.

Il restait plus qu’un dernier détail à régler: je suis un newb en design web. Il fallait donc que je me base sur un thème existant pour un blog. Après quelques recherches je suis tombé sur le design de Hemingway. Super simpliste(très peu de couleurs utilisées), il propose une organisation des sections sur la page originale qui était sympa. De plus, il y avait une version obscure (blanc sur noir). Il en fallait pas plus, et hop je l’ai embarqué.

Après l’intégration de Hemingway et des modifications sur Jekyll, vous avez sous les yeux le résultat qui tourne sous nginx. Pas mal, non? :)