Pourquoi abandonner WordPress pour un site Web statique ?

Réflexion écrite le par

Pour ce premier article, j’ai décidé d’aborder une question de plus en plus courante ces derniers temps : comment choisir entre un CMS (Content Management System) et un générateur de sites Internet statiques ?

Pour éviter toute forme de suspense, je vais admettre d’emblée que j’ai créé ce blog à l’aide de Jekyll, le générateur de sites statiques le plus répandu, si ce n’est le plus utilisé sur la Toile. Cependant, ne voyez pas cet article comme étant totalement biaisé par mon choix. En effet, j’ai décidé, pour la première fois, d’arrêter de regarder à travers ce fameux prisme déformant du “CMS à tout va” que l’on nous a imposé depuis des années.

Ma première expérience dans le vrai développement Web a commencé en 2007 avec WordPress. Durant des années je n’ai cessé de crier au génie de ce CMS open source à la pléthore de plugins disponibles. Oui, la richesse des ressources, de la documentation et, par dessus tout, la solidité de la communauté qui s’est formée autour de WordPress, ne sont que des avantages peu subtils qui nous sautent aux yeux et nous aveuglent.

Toutefois, au fil du temps mon avis positif sur les CMS a commencé à s’altérer. Toute cette richesse ne serait-elle que de la poudre aux yeux ? Derrière les plugins, derrière l’automatisme poussé à l’extrême se cache bien une lourdeur de code souvent accompagnée de failles de sécurité et d’un confinement aux seules possibilités offertes par le CMS.

Fort heureusement, des outils comme Jekyll ont aidé à offrir une alternative correcte à Joomla! ou à WordPress.

Avez-vous vraiment besoin d’utiliser un CMS ?

Si vous vous posez la question cela signifie sûrement que la réponse est non. La plupart des entreprises ont besoin d’un CMS dans des cas bien particuliers comme :

  • la publication soutenue et régulière de nouveaux contenus formatés
  • la possibilité de proposer à plusieurs membres d’intéragir sur le contenu

Après tout, qu’est-ce qu’un CMS ? Ce n’est ni plus ni moins qu’une interface ergonomique qui permet à un utilisateur lambda de créer, éditer et déployer du contenu facilement. Toutes ces modifications se font depuis une interface d’administration (un back-office) protégée par un mot de passe où les personnes concernées se connectent pour intéragir avec tout le contenu.

Une question se pose : qui gère le contenu de votre site Internet ? Il y a de fortes chances que la personne en question ne fasse ni plus ni moins partie de votre équipe de marketing digital. Il est aussi fort probable que cette personne ait assez de compétences techniques pour pouvoir se passer d’une interface créée pour les non-initiés. Le ratio entre le déploiement d’un CMS lourd et pas souvent exempt de problèmes de sécurité et la tendance a toujours vouloir tout simplifier est-il vraiment justifié ?

Bien entendu, les grosses organisations sont souvent obligées d’utiliser un CMS, surtout dans le cas où le nombre de pages sur le site est élevé et que le besoin d’un travail en équipe est plus que nécessaire. Mon article vise plutôt les petites et moyennes entreprises qui se retrouvent souvent frustrées par la complexité qui découlent de la simplification à outrance générée par les CMS.

Dans ce contexte, pourquoi aurez-vous besoin d’utiliser un CMS quand un générateur de sites peut convertir du simple texte en blogs ou en sites Internet parfaitement fonctionnels ?

La valeur ajoutée perçue d’un CMS comme WordPress

La véritable valeur ajoutée réside dans l’interface d’administration, entièrement automatisé et si pratique à utiliser que même votre enfant de 10 ans pourrait poster un article sur votre blog - ce qu’il ne manquera pas de faire. Et puis, comment pouvons-nous arriver à poster quelque chose sur notre site sans nous connecter à notre monsite.com/admin ? Cela parait tellement primitif, après tout le Web 1.0 et la suprématie du HTML c’est terminé n’est-ce pas ? Qui peut encore imaginer pouvoir administrer son site ou son blog sans interface d’administration aujourd’hui ? Personne.

Une fois connecté, le florilège du Web moderne s’offre littéralement à vous. De la mise à jour automatisée jusqu’au fameux éditeur WYSIWYG (What You See Is What You Get : éditeur visuel permettant de formater automatiquement du texte), tout est fait pour que vous puissiez diffuser votre message sur la Toile le plus rapidement et le plus facilement possible.

N’importe quel CMS propose un système de templating vous permettant d’installer rapidement un thème préfabriqué et ainsi donner une apparence professionnelle à votre site. L’ajout de plugins améliore instantanément votre site Internet en lui offrant de nouvelles fonctionnalités, en étendant ses possibilités et surtout sans avoir à écrire la moindre ligne de code.

Magique, normal, moderne me direz-vous. Mais la vérité est toute autre.

Derrière le miroir des fonctionnalités, le côté obscur du CMS

Quel est le véritable gain du CMS ? Quel est l’envers du décor ? En un mot : la concession. Concéder la créativité pour l’apparence formatée, concéder la sécurité de votre site, concéder que l’attrait de l’automatisation n’engendre souvent rien de bon.

Lancer son site Internet ou son blog en utilisant un CMS c’est avant tout se soumettre à ses imperfections et à l’enclos qu’il construit autour de votre pensée. Entreprendre la création de quelque chose d’original s’avère souvent comparable à courir un 400 mètres haies sur une piste jonchée de crevasses. Utiliser un CMS c’est avant tout se servir d’un outil créé pour être le plus générique possible afin qu’il puisse s’adapter à un nombre important de cas d’utilisation. Mais que se passera-t’il le jour où votre site comportera une fonctionnalité ou un concept incompatible au CMS ? Commencez à lacer vos chaussures, le coup de feu de départ est tiré.

Je parlais de problèmes de sécurité dus au CMS plus tôt. N’est-ce pas frustrant de devoir se reposer sur le travail de quelques contributeurs parfois peu soucieux de la qualité de leur code pour pouvoir ajouter des fonctionnalités basiques à votre site ? Oui, c’est au final bien ce que vous faites lorsque vous ajoutez un plugin ou que vous utilisez un thème. Vous sous-traitez une fonctionnalité de votre site à un développeur tiers, ouvrant ainsi une porte vers la faille de sécurité. Un site typique sur WordPress possède une vingtaine de plugins. Une vingtaine de chances de plus de créer des backdoors, de faire des mises à jour de correctifs sans fin.

De plus, l’ultime concession à faire concerne l’expérience d’utilisation finalement infernale pour les créateurs de contenu et pour les développeurs. Tout le monde perd au change. Entre les créateurs qui, bien souvent, se perdent dans les méandres de l’automatisme extrême et n’arrivent, au final, pas à donner une forme précise à ce qu’ils avaient en tête et les développeurs qui vont mener un combat sans fin contre un système sur lequel ils vont désormais dépendre. Ces derniers vivent d’ailleurs bien pire expérience que leurs collègues dans le sens où ils vont souvent devoir jouer des coudes, hacker le système pour tenter de le modeler aux demandes.

Il n’existe aucun système de template parfait mais il existe des alternatives viables.

Jekyll, un nouvel espoir

Depuis quelques années, des systèmes comme Jekyll font parler d’eux et entrent petit à petit dans la lumière comme étant des alternatives viables aux CMS comme WordPress, Drupal ou encore Joomla!. Jekyll est sûrement le plus connu du fait de son intégration dans le système GitHub Pages.

Après avoir pris rapidement mes marques, j’ai noté des avantages indéniables à l’utilisation d’un générateur de sites statiques dans de nombreux cas. Terminé le code spaghetti qui imprègne vos templates WordPress et qui vous permet de récupérer votre contenu par le biais d’une bonne dizaine de requêtes cachées à votre base de données MySQL pour finalement obtenir des données la plupart du temps statiques. Jekyll lui vous propose de générer du statique simplement sans avoir à déployer une arme de destruction massive pour créer un blog mis à jour toutes les semaines.

Ce qui frappe avec Jekyll est l’ouverture des possibilités. Fini les compromis de votre CMS, vous avez le champ libre pour créer ce que vous voulez créer. La facilité du système de templating Liquid couplé à l’ajout de meta data écrites en YAML vous permettent de pousser la customisation simplement et sans souffrance. Plus besoin de plugins lourds pour améliorer sensiblement le référencement naturel de vos page, l’ajout d’une simple ligne de meta data en YAML peut résoudre votre problème.

Alors bien évidemment cela peut paraître exagéré ou peu concret pour un étranger à ce système alors un exemple s’impose. Afin d’avoir une balise <title> et une meta description différentes sur chacune de vos pages, il ne vous suffit qu’à faire ceci entre les balises <head> :

...
<title>
  {% if page.title %}
    {{ page.title }}
  {% else %}
    Titre par défaut du site
  {% endif %}
</title>  
...
{% if page.description %}
  <meta name="description" content="{{ page.description }}">
{% endif %}
..."

Et par la suite écrire ces lignes dans le YAML Front Matter disponible sur chaque début de posts ou de pages :

---
title: Le titre de ma page
description: La description qui sera prise en compte par le moteur de recherche
---

Les 5 avantages d’utiliser un générateur de sites

Même si Jekyll ne ressemble pas à un CMS, il emprunte bon nombre de ses fonctionnalités. En effet, la structure, la hiérarchisation des contenus, la facilité de générer des posts ou des pages grâce au langage GitHub Markdown mais sans sa lourdeur. Voici les 5 avantages qui vous pousseront à choisir Jekyll et ses confrères pour votre prochain projet.

Facilité d’hébergement

Jekyll va vous générer un ensemble de fichiers HTML, CSS et JavaScript (si vous en incluez). Pas de langage serveur comme PHP à prendre en compte dans le choix de votre hébergeur ni de base de données à posséder. Les tarifs des hébergements sans PHP/MySQL sont bien plus bas (10Mo d’hébergement HTML offerts avec un nom de domaine chez OVH) et, dans le cas où vous administrez votre propre serveur, plus de configurations sans fin pour que PHP s’exécute correctement, plus de gestion des versions de PHP.

Développement en local

C’est sûrement l’une des grandes victoires des générateurs de sites. En effet, la création de contenu sur WordPress et consors implique d’accéder à l’interface d’administration donc d’avoir un accès à Internet. De plus, le système de gestion des versions de vos posts et pages WordPress, soit dit en passant fortement pratique, va enregistrer un nombre incalculable de données dans votre base.

Avec Jekyll, il vous suffit de taper quelques lignes de commandes pour créer un nouveau projet et pour lancer un serveur local afin de visualiser toutes les modifications apportées au site avant de le déployer en production.

Sous réserve d’avoir installé l’environnement Ruby sur lequel repose Jekyll ainsi que le gem correspondant au paquet de Jekyll, une simple commande jekyll new titre-du-site va vous générer automatiquement les dossiers et fichiers essentiels au démarrage rapide de votre projet. Un simple jekyll serve va vous lancer un site Web de test en local ce qui ressemble bien plus aux workflows modernes incluant Gulp.js, Grunt et BrowserSync, vous facilitant ainsi la vie.

La gestion du versioning peut s’effectuer par des outils comme Git, vous permettant de suivre la moindre modifications de vos fichiers sources ainsi que de vos posts et pages.

Lorsque votre site est prêt, la compilation de celui-ci va créer une copie propre directement uploadable sur votre serveur, que ce soit manuellement par le biais d’un client FTP ou automatisée avec l’ajout de paquets Ruby ou avec un déploiement lié à Git.

La rapidité avant tout

Quoi de plus rapide que du simple HTML dans votre navigateur ? Les ressources serveur sont épargnées, l’utilisateur est content et Google arrêtera de vous pénaliser car votre site est trop lent selon ses critères.

Vous avez besoin d’ajouter un peu de dynamisme sur votre site ? Pas de problèmes, Jekyll peut s’utiliser conjointement avec PHP ou avec un framework Javascript comme AngularJS ou Backbone.

WYCIWYG : What You can Control Is What You’ll Get

Arrêtons de se voiler la face, le WYSIWYG n’a jamais été une solution viable. Ou que celui qui voue encore un culte à FrontPage me jette la première pierre. Malgré tout l’intérêt que nous portons à un éditeur visuel et ergonomique qui va nous générer du code HTML, il arrive trop souvent que les limites du WYSIWYG surpassent ses avantages.

En offrant le choix d’utiliser à la fois du HTML/CSS/JS brut ou un entre-deux avec le langage Markdown, les possibilités de customisation de chacune de nos pages et de chacun de nos posts entre enfin en adéquation avec nos envies qui outrepassent souvent le simple article formaté.

Le Markdown, utilisé notamment en masse sur GitHub, permet de jouir des avantages du WYSIWYG avec un texte plus simple et plus lisible qui sera généré en HTML. Ainsi, mettre un texte en gras ressemblera à *cela* avec du Markdown, ce qui est plus clair que du HTML comme <strong>ceci</strong>.

La simulation des fonctionnalités des meilleurs CMS

Qui a dit que Jekyll n’était que du simple HTML sans valeur ni saveur ? Le principal avantage des générateurs de sites statiques et de pouvoir donner l’opportunité de simuler certaines des fonctionnalités des gros CMS.

Parmi ceux-ci, vous pouvez simuler une base de données si vous avez des données que très peu changeantes. Ainsi, par le simple ajout de fichiers CSV, JSON, XML ou YAML dans le dossier _data de votre installation Jekyll, vous ajouterez des collections de données utilisables directement dans vos templates.

Mais alors que faire ?

Encore une fois, pour chaque besoin il existe une technologie à appliquer. Mon but ici n’était pas de cracher du feu sur les CMS mais de montrer que la plupart du temps, ceux-ci sont surfaits et s’avèrent bloquants dans de nombreux cas.

Il vous faut vous poser les bonnes questions :

  • Ai-je besoin de déployer un Drupal ou un WordPress pour finalement ne changer mes contenus que très peu souvent ?
  • Ai-je besoin d’avoir un système aussi complexe pour m’aider à créer du contenu ?
  • Mes équipes sont-elles capables de transcrire les demandes marketing en code tout en restant dans le cadre limité du CMS ?
  • Suis-je prêt à risquer le piratage de mes données pour un plugin dont je n’aurais pas eu besoin sans mon CMS ?

Les questions sont nombreuses mais la réponse sera souvent la même : essayez d’abandonner votre esprit formaté vers le CMS et de prendre un peu d’air avec un générateur de sites statiques. Le plus important étant de commencer en douceur avec un nouveau projet, la courbe d’apprentissage étant très faible, la documentation abondante et les pré-requis serveur inexistants. Jekyll s’intègre parfaitement dans les workflows modernes ce qui vous permettra d’entrevoir plus rapidement les possibilités qui s’offrent à vous.

Mais alors que faire ? Ne pas rester camper sur ses acquis et choisir un projet qui correspond à vos besoins réels.