Au revoir Wordpress !
Quand j’ai commencé ce blog en 2015, c’était avec un système tout à fait maison plus ou moins fonctionnel. Ce n’était pas très beau, mais ça faisait le taf. Au bout d’un moment, j’ai eu envie d’un peu plus de fonctionnalités: une gestion plus simple des images, des statistiques de vues… et un design un peu plus pro. Comme beaucoup, je suis donc passé sur un Wordpress.
Et ça marche plutôt bien. Je pense que ça reste une bonne option pour quiconque veut un blog ou un site facile à configurer sans trop de connaissances techniques particulières. Par contre, Wordpress est lourd. Pas plus que la plupart des systèmes comparables, mais lourd tout de même.
Qu’est-ce que ça veut dire, lourd ? Qu’il occupe beaucoup de place sur le disque dur, d’une part, mais surtout que chaque chargement de page est assorti d’une foule d’opérations. Charger une simple page d’un blog crée des dizaines de requêtes: pour récupérer des “feuilles de style” (instructions données au navigateur pour le look de la page), des polices de caractère, des fichiers javascript (pour avoir des pages “réactives”… et pour faire du tracking.) Tout ça prend du temps, de la bande passante, de l’énergie.
C’est devenu la norme sur le web. On a tous des connexions haut-débit, n’est-ce pas? Alors pourquoi se priver?
Mais il y a maintenant depuis un certain temps un mouvement alternatif qui plaide pour un retour à un web simple, qui retire le superflu. Pour un blog, par exemple, on a finalement besoin de quoi? De montrer du texte, et quelques images pour illustrer. On retire tout ce qui distrait l’attention du contenu, on obtient des pages plus rapides à charger, et on arrête de vouloir absolument poursuivre tout le monde à travers tous les sites qu’iels visitent.
Et ça me parle plutôt, comme idée1.
Retour aux sources
Du coup je suis reparti de zéro pour construire quelque chose de simple et de minimaliste. Que du HTML, le “vieux” web: des pages statiques, sans interactivité, avec du texte, des images quand il faut, et des hyperliens.
Quand on charge une page, on charge le texte, les images, une feuille de style unique, une icône, et c’est tout.
Le blog ne gagnera pas des prix de design… mais l’important, au final, c’est que ce soit lisible, accessible, sans pubs, sans tracking. Pas de cookies, pas de petit robot Google qui compte les passants.
Côté technique
Les contraintes que je m’étais fixées étaient les suivantes:
- Je dois pouvoir récupérer tous mes anciens posts Wordpress pour qu’ils soient accessibles (avec la même adresse) sur le “nouveau” blog.
- Je veux pouvoir écrire et sauvegarder mes futurs posts en format Markdown, pour qu’ils soient lisible et éditable avec n’importe quel éditeur de texte.
- Le blog doit contenir une page d’accueil avec le dernier post, une page d’archive avec tous les posts, et un flux RSS.
Export Wordpress
Pour récupérer mes “archives” Wordpress, j’ai commencé par sauvegarder les rendus HTML des différentes pages d’articles. En tout, ça m’a donné huit fichiers, contenant en tout 77 articles. J’ai ensuite fait un script python qui, avec la librairie BeautifulSoup
, extrait tous les articles de chaque page et les sauvegarde dans des fichiers HTML séparés. Une autre méthode – toujours avec BeautifulSoup
– récupère tous les éléments de type img
et télécharge les images présentes sur le blog pour les sauvegarder localement. Enfin, les fichiers HTML sont convertis avec pandoc
en fichiers Markdown, avec en métadonnées l’auteur, la date et le titre de chaque post.
Système de microblogging
Reste à faire le système de microblogging en lui-même. Là aussi, je fonctionne en python, le but étant d’aller au plus simple.
J’ai un dossier avec tous mes articles en markdown. J’ai quelques templates HTML: pour la page d’accueil, pour faire une page “article”, pour la page d’archives. Et j’ai un script qui va:
- Récupérer tous les fichiers Markdown
- Les convertir en HTML avec
pandoc
et les insérer chacun dans le template “article”, et garder un index des dates / titres / fichier généré. - Trier l’index par date de publication et générer une liste à insérer dans le template “archives”.
- Similairement, générer le fichier “feed.xml” pour le flux RSS.
- Insérer le dernier article publié, ainsi qu’une liste des 5 articles précédents, dans le template “page d’accueil”.
En tout, on a en une petite centaine de lignes de code un système qui génère automatiquement un site statique avec des articles de blog. Avec une feuille de style pour quand même avoir un peu de mise en page, et une page “à propos”, on a tout ce qu’il faut pour un microblog.
Fonctionnalités manquantes ?
Ne serait-ce pas bien d’avoir… ?
Non, en fait. Pendant toute la période où les commentaires étaient ouverts sur mon Wordpress, je n’ai globalement eu que du spam et quelques trolls, et une petite poignée de messages réels. Et si quelqu’un veut vraiment réagir, mon mail est là.
Je n’aurai pas de statistiques d’utilisation du site. Ce n’est pas plus mal: j’écris ce que j’ai envie d’écrire, sans passer après du temps à guetter les statistiques pour voir si ça intéresse les gens ou pas.
Résultat
Quand on ouvre la page d’accueil de Google, avec juste un logo, une zone de recherche, deux boutons et quelques mots de texte, notre navigateur effectue plus de quarante requêtes (majoritairement liées à du tracking publicitaire), pour obtenir un page qui “pèse” environ 2 Mo en environ une seconde. Tant qu’on reste sur la page, des nouvelles requêtes sont régulièrement envoyées (il faut bien que Google soit au courant qu’on s’attarde.)
Quand on ouvre la page d’accueil de ce blog, quatre requêtes sont effectuées (plus une par image s’il y en a): une pour récupérer le contenu HTML (le texte), une pour récupérer la feuille de style, deux pour récupérer la “favicon” qui s’affichera dans le navigateur. La page pèse environ 20ko lorsqu’il n’y a pas d’images dessus, un peu plus s’il y en a, et prend environ 200ms à charger (à partir d’un bien moins bon serveur que ceux de Google). Une fois la page chargée, on peut rester dessus tant qu’on veut: tout reste uniquement sur le navigateur, plus rien n’est envoyé ni à Google, ni à moi.
Clairement, ce changement sur mon blog est une goutte d’eau dans l’océan, mais je pense que ça vaut la peine, quand on tient un site, de se poser la question: de quoi a-t-on vraiment besoin pour qu’il tourne? Et pour ceux que ça intéresse, j’ai mis le code du “moteur” de blogging (ce qui génère les pages à partir du fichier markdown) en ligne ici: https://gitlab.com/adfoucart/rikitikiblog/.
L’inspiration me vient en bonne partie d’Arthur Perret (https://www.arthurperret.fr/), pour rendre à César ce qui lui appartient.↩︎