De nombreuses solutions de gestions de contenus sont disponibles et répondent parfaitement aux besoins traditionnels comme Drupal, WordPress, … Pour autant, un outil n’est parfait que dans le contexte d’une utilisation donnée, et ne répond pas à l’ensemble des problématiques. Alors quand on se pose la question de la meilleure solution pour un nouveau projet de site éditorial, on commence par identifier les particularités du sujet, afin de proposer la meilleure solution possible.
En PHP, d’abord : CraftCMS ? Victoire ? Quelques belles alternatives pointent leur nez depuis quelques temps. On sait tous qu’il faut une solution moderne pour remplacer Wordpress, le mastodonte et ses 30% de parts de marché, et chaque mois compte sa nouvelle tentative.
Seulement peut-on espérer améliorer le problème de la performance en continuant à se baser sur un langage de script pour servir des centaines de connexions concurrentes (oui, Javascript, c’est toi que je regarde) ?
Le Go, sa vie, son œuvre
Développé chez Google par Rob Pike et Ken Thompson (auxquels on doit, entre autres, l’UTF-8), le Go est un langage compilé destiné à être :
- rapide, avec une vitesse d’exécution proche de celle du C,
- productif, avec une syntaxe lisible, légère et un agnosticisme assumé de tout IDE,
- fun, avec un environnement de développement complet comprenant un gestionnaire de paquet, un formateur de code, un outil de documentation et un compilateur. Sans parler de la gestion automatique de la mémoire, du typage statique et de l’intégration native de fonctions relatives à la concurrence et au réseau (et notamment au web).
Le marché du CMS en Go
Il existe quelques petites dizaines de CMS en Go à l’heure actuelle mais un seul CMS « complet » (mêlant backoffice et frontoffice comme le ferait WordPress) :
Fragmenta
Fragmenta, est un CMS classique. La persistance de ses données peut être assurée via PostgreSQL ou MySQL.
Les pours
- Opérationnel en quelques lignes de commande
- Interface d’administration simple
- Éditeur WYSIWYG utilisant les styles du site
- Permet de créer en une ligne 3 types d’application différents : Application, CMS ou blog
Les contres
- L’installation automatique n’est valable que pour PosgreSQL. Pour MySQL il faudra jouer les migrations à la main.
- L’éditeur WYSIWYG ne gère pas l’ajout d’image, sauf à à drag and drop une image et la voir intégrée au contenu en base 64
- Il n’y a pas d’extension
Fragmenta semblait être un choix parfait, seulement ces trois derniers points laissent à penser qu’il n’a pas été conçu pour le grand public.
On ne peut plus lâcher un utilisateur sur un nouveau CMS sans lui offrir un minimum de confort et d’indépendance. Sans la possibilité d’ajouter une image convenablement dans un contenu ou celle d’étendre facilement (sans avoir à programmer) le fonctionnement de l’outil qu’il va utiliser au quotidien, il paraît difficile de proposer Fragmenta à un utilisateur lambda à l’heure actuelle.
L’alternative headless
Ponzu
Ponzu est un CMS headless. Il intègre nativement l’HTTP2, TLS et une base de données NoSQL facilitant le déploiement.
Les pours
- L’interface intuitive du backoffice permet une prise en main rapide par n’importe quel utilisateur
- Opérationnel et rapide au sortir de la boîte grâce à sa base de données NoSQL
- La création d’un type de contenu tient en une commande
Les contres
- La documentation, bien qu’assez complète, manque de cohésion (éparpillée entre le README et https://docs.ponzu-cms.org/) et d’une méthode de mise en œuvre rapide
- Il n’y a pour le moment que très peu d’addons (4 dont 1 payant)
Entre les deux se trouve la raison pour laquelle on ne peut pas choisir Ponzu pour remplacer WordPress : c’est un CMS headless.
Parfait pour un projet avec un front en React ou VueJS, seulement il faut atteindre un nombre conséquent d’entrées pour que la question de la performance se pose et l’on aura alors de grandes difficultés à arguer contre l’appel de l’isomorphisme.
Enfin il n’est pas complètement opérationnel au sortir de la boîte (par choix), ce qui n’en fera jamais un concurrent direct de WordPress.
L’option statique
Hugo
Hugo est un générateur de sites statiques. Ce qui le disqualifie d’office en tant que concurrent de WordPress.
Pourtant il ajoute son propre langage par dessus Markdown au cas où ce dernier ne serait pas suffisant, il sait retailler les images comme pas deux, il est capable de parler JSON ou AMP, il dispose d’une honorable galerie de thèmes et il existe même de la documentation pour vous aider à migrer votre contenu de votre CMS vers Hugo !
C’est dommage. Rien ne sera jamais aussi rapide et sécurisé qu’un site statique. En fait ce qu’il manque à Hugo c’est une interface pour rédiger et gérer les contenus grâce à un outil facile à prendre en main.
On vous la fait pas : ces outils existent. Ils permettent à l’utilisateur de s’abstraire complètement de la connaissance de Markdown, du versionning et du déploiement pour se concentrer sur ce qui l’intéresse : son contenu.
Parmi ces interfaces, on compte Forestry et Netlify. Ces deux services se basent sur Github pour le stockage des données, le versionning et l’authentification. On leurs donne les droits de lecture et d’écriture sur le dépôt et ils se chargent de proposer à l’utilisateur une interface claire et efficace d’édition de ses contenus, de commit le tout et de le déployer.
Tout simplement.
Conclusion
Fragmenta, reste un produit porté par deux développeurs et si l’on exclu un fix en janvier, le projet n’a pas bougé depuis mai 2017.
Ponzu est plus actif et compte beaucoup plus de contributeurs mais sans la possibilité d’ajouter un thème et davantage de plugins, il reste limité.
Quant à Hugo, couplé à un service d’édition et de publication des contenus, il paraît être l’alternative la plus viable mais appuyer son projet sur un service tiers a ses inconvénients et, souvent, son coût.
Pour l’instant les CMS PHP tenant le haut du pavé – WordPress, Drupal – restent donc la meilleure solution en terme de fonctionnalités, d’accessibilité et de rapidité de mise en œuvre.