Zi CMS - Processwire

Oui, je l'admets, au départ, j'avais l'intention de faire ça en plusieurs épisodes pour avoir la place de médire tout mon soûl de Wordpress, Drupal, Joomla et quelques autres, bon, oui, surtout Wordpress en fait. Finalement, je me suis dit "qui suis-je pour juger, le masochisme est une pratique après tout comme une autre et joliment mise en littérature par le baron Von Sacher... ", bref, changement de cap, parlons de ce qui fait du bien sans faire du mal, Processwire.

Jamais entendu parler...

Et bien c'est chose faite... et c'est loin d'être fini.
C'est sûr, avec ses moins 0.1% de parts de marché, comparées aux plus de 40% pour Wordpress (>60% si on ne prend en compte que les sites reposant sur un CMS), ça pourrait prêter à sourire et, en fait, ça fait sourire ce micro pourcentage d'utillisateurs heureux qui ne s'arrachent pas les cheveux à chaque mise à jour de contenu (voire du cms lui-même et de ses extensions en ce qui concerne Wordpress...)
Pour ceux que ça intéresse, un tableau complet (en anglais mais facile à comprendre) et intéressant sur w3tech.com.

Donc, c'est quoi ce truc ?

D'abord, à tout seigneur, tout honneur, le site de Processwire

Maintenant, comme leur site est aussi en anglais, je raconte... Processwire est un CMS/CMF, déroulé : content management system/content management framework. La différence avec un CMS pur jus c'est le côté framework, en clair, donner aux développeurs la possibilité d'utiliser l'application avec laquelle le CMS est construit pour, de son côté, implémenter des fonctionnalités supplémentaires en plus d'avoir accès à la gestion de contenu de façon simple et cadrée. Un framework c'est un cadre de travail dont un des avantages est une certaine cohérence dans le code mais, quand c'est bien fait, et c'est le cas de Processwire, sans empêcher de faire son propre code à base du langage choisi, ici, php, voire, cerise sur le gâteau, à l'aide de hooks, de modifier beaucoup de ses fonctions "natives" pour leur faire faire plus précisément ce que l'on aimerait. Pour faire simple, Processwire répond exactement à ma façon de voir les choses "adapter l'outil au contenu et non le contenu à l'outil."

OK mais ce n'est pas le seul dans ce cas... C'est vrai, d'autres CMS comme Drupal ou le nouvel avatar de MODx Evolution (Evolution CMS) viennent l'un avec Symphony et l'autre avec Laravel, l'excellent Silverstripe embarque lui aussi son propre framework. Pourquoi Processwire alors ? Je vais essayer de faire court tellement il y aurait à dire...

Légèreté et propreté

L'API (Interface de programmation) de Processwire est relativement simple et c'est loin d'être un défaut ou de vouloir dire incomplète, au contraire. Cette simplicité a, notamment, pour résultat d'être très rapide à livrer le contenu, normal, l'API fait ce qu'on lui demande et ce dont elle a besoin pour tenir compte de la structure de vos templates, c'est tout... , en clair, pas besoin de charger une demi-tonne de dépendances à la mode Symphony pour afficher "bonjour le monde".
Une chose est évidente quand on commence à utiliser l'API de Processwire est qu'elle a été pondue par quelqu'un qui fait vraiment des sites, pas juste un dev qui s'est fait plaisir en livrant un truc de dingue pour bien faire sentir à quel point il est intelligent.
Faisons simple, au-delà de la théorie, API et bla bla bla, le résultat est là, un régal pour développer et une rapidité rare pour livrer le contenu, même avant d'utiliser quelque cache que ce soit.

L'effet sur les clients

Les réactions sont unanimes : "tellement simple", "super intuitif", parfois même jusqu'à "je m'éclate"... Il faut avoir mis une fois les doigts dans l'interface d'administration de Processwire pour s'en rendre compte, l'éditeur du site accède directement à l'arborescence des pages du site et, page par page n'a dans son interface que les champs utiles à l'édition, indications en prime si besoin.
La variété des champs et leur personnalisation permet en plus de rendre cette édition à la limite de l'évidence et d'éviter autant que possible les risques d'erreurs. Cerise de plus sur le gâteau qui commence à devenir nourrissant... rien n'empêche un dev de créer un type de champ particulier dans le cas, improbable, où il lui manquerait.

Bien sûr, il pourrait y avoir un petit côté contre productif à cette facilité d'utilisation, le client pouvant se demander si ça vous a vraiment demandé du travail pour qu'il ait ça... pas grave, en ce qui me concerne, c'est l'effet recherché, après, il faut juste expliquer, ben allons-y, expliquons...
Sans m'étendre sur le sujet, disons juste que c'est là une raison majeure dans mon choix d'un CMS, je suis dev, c'est mon métier et s'il faut se prendre la tête pour comprendre comment fonctionne un CMS, à la limite, ça me distraira. En revanche, ce n'est pas le cas de 99,999% de mes victimes aka clients et ce dont ils/elles ont besoin, c'est d'un outil simple à prendre en main pour éditer et mettre à jour leur site et pas d'un bundle avec abonnement chez le psychiatre pour se remettre de chaque ouverture de l'admin...

L'anti Wordpress...

Hop, hop, hop ! mais non, je vais même en dire presque du bien.
Aucun doute, une des raisons principales du succès de Wordpress est la possibilité pour chacun, sans écrire une virgule de code, de se faire un site, voire, en achetant un thème de bonne qualité, un très beau site agrémenté d'animations au goût du jour. Au passage, pour ceux qui craqueront sur Wordpress, achetez un thème sur un site spécialisé et renommé, fuyez les thèmes gratuits, incomplets et plus souvent qu'à leur tour nids de trous de sécurité quand ce n'est pas carrément de backdoors ou autres malwares mais bref, je ne suis pas là pour faire la pub de mon meilleur ennemi :)

Alors, c'est sûr, même quand chez un bon hébergeur, le mien par exemple, o2switch, Processwire est dans la liste des CMS installables en un click grâce à Softaculous, ce n'est pas exactement le même jeu...
À l'installation, Processwire propose quelques profils de sites, blank (mon choix), beginner, classic, default, languages, regular qui correspondent surtout à des modes de gestion des templates avec, pour certains, un mini contenu par défaut avec structure de menu, barre latérale et ce genre de choses + quelques champs préinstallés. Mais soyons clair, ce sont juste des squelettes de templates avec lesquelles vous ne pouvez en gros rien faire sans mettre les mains dans le moteur... c'est évidemment redhibitoire pour tout ceux qui ont juste envie de jouer au légo avec une interface graphique mais, pour un dev, c'est juste le bonheur total, rien d'imposé, rien d'inutile, à l'inverse, la boîte à outils grande ouverte pour construire de la cabanne à la villa de luxe.

La sécurité

Quand un site est fait avec Processswire, il est là pour un moment, survivra facilement aux évolutions de php et, pour quelques raisons simples, sera nettement moins la cible des salves d'attaques régulières sur le web avec cette particularité, si ça marche, pas besoin de guetter toutes les mises à jour à deux doigts de l'ulcère d'estomac...
- il ne signe pas son code source si vous ne le faites pas
- l'adresse de l'interface d'administration peut être unique à votre site
- et, bien sûr, un soin limite obsessionnel est appliqué à la sécurité de son API
Soyons clair, aucun site, CMS, framework ou pas, n'est entièrement à l'abri d'une attaque de la part d'un bon, j'ai eu le plaisir de voir un hacker de haut vol me faire une démo et ça laisse songeur, croyez-moi... mais ça représente un minuscule pourcentage des attaques de sites sur le net, des attaques ciblées, menées par un individu avec une bonne... ou une mauvaise raison et pas une moulinette. Bien sûr, tout dépend aussi de la qualité de votre hébergement mais il suffit de regarder les logs (fichier texte dans lequel sont inscrits les moindres mouvements sur un serveur) pour comprendre... tentatives d'accès à répétitions à votre domaine.com/wp-admin ou autre composant connu de ce cher Wordpress, que votre site l'utilise ou pas, bien la preuve que ce sont des attaques aveugles qui moulinent toutes seules et tentent le coup. Sa notoriété en rajoute bien sûr une couche, plus de chances de faire parler de soi en mettant par terre des millions de sites... Wordpress :D

Le multilingue

Il est possible de faire un site multilingue avec n'importe quel CMS, y compris ceux qui gèrent le multilinguisme très mal, voire pas du tout mais, à part feu Ionize CMS qui était assez stupéfiant sur ce sujet, la gestion du multilingue dans Processwire, native ! est sans aucun doute ce que j'ai vu de mieux, à tel point que gérer un site en une ou n langues ne fait guère de différence et ça ne complique en rien le travail. Je ne m'étendrai pas sur les aspects techniques pour ne pas vous faire du mal :) mais si un jour vous vous y frottez, vous comprendrez...
Juste une chose, le multilinguisme est évidemment vital pour beaucoup de professionnels, industries, restaurants, etc, ne serait-ce que pour que le site soit dans la langue de ceux qui font rarement cet effort, l'anglais.

Pas de soi-disant langage de templating, php forever !

Là, je sais que j'aborde et défends un point technique et qu'en plus ce n'est pas un point de vue très répandu... J'explique.

Je ferai un papier complet sur ce que c'est qu'un site et comment ça fonctionne vraiment là, je vais juste donner brutalement mon point de vue sur ces "langages" de templatage/ing. Il sont soi-disant là pour simplifier la vie des intégrateurs, je vérifie un truc, ben non, mon fondement n'est toujours pas composé de poulet !
Soyons clairs et précis, un langage dit de templating est juste une autre façon d'écrire la même chose qu'avec php, parfois un poil moins verbeux mais certainement pas plus simple et, surtout, une fois écrit sur base de twig, smarty ou autre (il y en a des tonnes, plus ou moins clairs et/ou complets), le langage en question a un interpréteur pour traduire et transmettre l'instruction à php au lieu de lui avoir donnée directement, euuuhhh, on peut me raconter ce que l'on voudra mais c'est juste une couche supplémentaire, donc un temps de réalisation supplémentaire aussi et donc... une perte de temps pour rien. Je parle php mais c'est vrai quel que soit le langage côté serveur.
Au passage, comme dit plus haut, il y en a une palanquée, donc, autant à apprendre d'un CMS ou framework à l'autre alors que php, il y en a un, le même pour tout le monde, universel et simple en plus d'être plus rapide.
J'entends d'ici le concert des pleureuses "oui mais ça fait du php spaghetti, gna gna gna..." ok, si vous préférez du twig spaghetti, c'est votre vie mais je ne vois pas l'intérêt de bouffer des spaghetti en plastique plutôt que des vrais, bref, je ne m'appesantirai pas plus sur le sujet, juste, merci et bravo Processwire de ne pas avoir donné dans cette stupidité sans nom !

La communauté

Non, non, rien à craindre pas de guru enlevé par des extra-terrestres ni d'adeptes en robes safrans... Il n'y a pas si longtemps, les clients à qui un CMS était suggéré demandaient à connaître sa réputation et l'état de sa communauté et ce n'était pas dénué de sens. Imaginez, vous vous faites faire un site par une agence ou un indépendant qui vous a fait une promotion effrénée pour son outil perso développé aux petits oignons, unique, le meilleur du monde, yadi yada... et paf, fâcherie, disparistion du dev ou de l'agence et vous voilà comme deux ronds de flan avec votre super trucmuche machin chose que personne ne sait utiliser et/ou faire évoluer, légère galère en perspective...
Donc, pas si bête de se renseigner sur quelques points
- la pérennité, le CMS existe-t'il depuis suffisamment longtemps pour sembler montrer qu'il n'est pas parti pour jouer l'étoile filante. Un petit article chez Ionos sur l'histoire de Processwire (et pas que) pour se rassurer...
- sa réputation, ça, autant le site de Processwire que les divers comparateurs regorgent de témoignages des heureux qui on sauté le pas et ne sont pas près de revenir en arrière...
- bien sûr, ses fonctionnalités, possibilités d'extensions, son langage de programmation côté serveur, etc, etc, et
- sa communauté, pour diverses raisons dont
--- ne pas se retrouver avec un outil inutilisable en cas de changement de prestataire, checked...
--- obtenir de l'aide en cas de besoin et, si possible, aimablement... là, il faut que je m'étende un peu

J'ai beaucoup fréquenté les forums divers pour aller donner des coups de mains aux collègues ou amateurs en difficulté mais j'ai fini par arrêter après une grosse prise de bec avec un modérateur d'alsacreation à qui j'avais eu l'audace de dire qu'envoyer chier (on ne peut pas le dire autrement...) les débutants ne me semblait ni aimable ni productif, ce qu'il n'a pas du tout aimé, hé, modérateur non mais, taulier en somme... prenant sans doute plaisir à passer pour un cador. Bien sûr, ce n'est pas une générailté, developpez.net n'a heureusement pas déteint sur tous les autres, ouf...

Bref, ours échaudé ayant des tendances au grognement, c'est forcément du bout des doigts de pieds qu'en 2012 je me suis inscrit sur le forum de Processwire juste parce que le CMS me faisait de l'œil, même si jusqu'à il n'y a pas si longtemps je continuais d'utiliser MODx evolution que je maîtrisais bien. Et là, paf, la claque... une bande de doux dingues prompts à aider, donner des bouts de code et/ou des pistes pour solutionner des questions simples ou plus sioux, s'entre congratulant quand une réponse leur semble vraiment top, publiant des tutos dignes d'une annexe de documentation, etc. Le tout avec bonne humeur et enthousiasme, ça pourrait presque faire se demander si on ne s'est pas trompé d'adresse avec un forum de cuisine.
Certains de ces fadas publient même des extensions mises dans le domaine publique et pas des trucs à la Wordpress, des modules dignes de ce noms, sûrs, utiles et, comme le CMS lui-même, extensibles et adaptables. En gros, heureusement que le CMS est vraiment excellent parce que, quoi qu'il en soit, sa communauté pourrait à elle seule être une raison de l'utiliser.
Bien sûr, quelques uns de ces fadas font aussi partie de ceux qui contribuent à enrichir le CMS sous la bienveillante houlette de son concepteur Ryan Cramer.
Soyons triviaux deux minutes, c'est aussi un excellent argument pour promouvoir Processwire auprès d'un client, changement de presta, dépôt de bilan frauduleux de l'agence, un bon dev saura facilement reprendre le bébé et aura une bonne adresse pour aller chercher un coup de main en cas de besoin.

Difficile de conclure mais il est temps... Disons pour faire simple que, pour le moment, à part peut-être un gros site e-commerce pur jus, je ne vois pas trop ce que je ne ferais pas avec Processwire, raison simple, ce qu'il ne propose pas nativement, il me laisse l'écrire avec, troisième cerise sur le gâteau, liberté totale en matière de design.