vinch.be logo

CMS 99% bad

8 janvier 2009

Le titre de ce billet est inspiré du titre d’un article très connu de Jakob Nielsen nommé “Flash 99% bad”. Je ne prétends pas être aussi pertinent que Jakob Nielsen dans mes analyses mais je trouvais l’idée des 99% très appropriée. En effet, je trouve que dans 99% des cas, les CMS sont à chier !

Très récemment, j’ai eu une expérience relativement malheureuse avec un CMS (SilverStripe pour ne pas le citer) et comme je l’avais déjà laisser entendre sur Twitter, j’ai décidé d’en faire une note car je trouve le sujet relativement important (toutes proportions gardées).

Je ne sais pas si vous réagissez comme moi mais personnellement, quand un nouveau CMS sort et commence à buzzer sur le Web, je m’emballe vite et je pense avoir trouvé la perle rare, le CMS parfait que j’attends depuis longtemps… Au début, tout à l’air beau et génial mais au final, après avoir trempé ses mains dedans un certain temps, il y a toujours une grosse quantité de trucs qui ne nous conviennent pas et qui deviennent carrément insupportables sur la durée !

Mais repartons à zéro et définissons le terme CMS…

CMS est l’abréviation de “Content Management System” ce qui veut dire “système de gestion de contenu” dans la langue de Molière. Ce site se compose en général de deux parties. La première est le “frontend”, il s’agit du site public, accessible au monde entier. La deuxième partie est privée. On l’appelle le “backend” ou “admin” et elle permet aux administrateurs du site (via un login/password) d’en modifier le contenu, de façon plus ou moins sophistiquée. Ils sont devenus très populaires aujourd’hui car ils constituent un argument commercial de poids ! En effet, une fois le site terminé, le client ne devra plus faire appel à l’agence/webmaster pour faire la maintenance. Il peut se débrouiller tout seul ! En général, ça ne se passe jamais vraiment comme ça, mais c’est une autre histoire…

Et alors, pourquoi c’est si merdique un CMS ?

Pour moi, la grande faiblesse des CMS, c’est son élément central et indispensable : l’éditeur WYSIWYG. Un éditeur WYSIWYG (acronyme de “What You See Is What You Get”) permet, sans aucune connaissance d’HTML, de pouvoir structurer et mettre en forme le contenu. Il s’agit d’un outil puissant et complexe mais qui a ses limites. Il est en effet difficile d’assurer la qualité du code source généré par un éditeur WYSIWYG. Pour un accro aux standards du Web comme moi, c’est un véritable cauchemar !

Mais le pire ennemi de l’éditeur WYSIWYG se cache ailleurs, il s’agit de Microsoft Word ! Même si vous faites le backend le plus ergonomique du monde, la plupart des clients éditeront d’abord leur texte dans Word et le copieront ensuite dans votre éditeur… Et là, c’est l’hécatombe… En effet, Word génère un code HTML propriétaire merdique qui va foutre en l’air tout votre beau travail. Au mieux, le site s’affichera correctement mais la validation HTML ne sera plus au rendez-vous. Au pire, votre interface sera totalement explosée ! C’est en général à ce moment là que le client vous téléphone (et que vos ennuis commencent)… Certains éditeurs WYSIWYG proposent une fonction “Paste from Word” qui arrange le problème. Encore faut-il que le client l’utilise en lieu et place du classique Ctrl+V…

L’éditeur WYSIWYG est malheureusement incontournable. Imposer au client d’éditer directement en HTML ou via une syntaxe alternative (Wiki, Markdown, Textile, etc.) est rarement envisageable. Personnellement, j’utilise TinyMCE, en limitant les fonctionnalités au strict minimum (paragraphes, gras, italique, liens et listes).

Une autre raison pour laquelle je n’aime pas les CMS est leur lourdeur, pas tellement au niveau des performances mais surtout en ce qui concerne le nombre de fichiers. On peut considérer cette situation comme normale car les CMS essayent de couvrir le plus de besoins possibles et ont généralement des possibilités assez larges mais ça me fait toujours mal au coeur de devoir mettre plusieurs dizaines de méga-octets de fichiers en ligne, tout ça pour un formulaire de contact et un forum… Ça me donne une sensation de bordel et de perte de contrôle total de l’outil… Je déteste ça !

Et puis, comme je viens de le dire, même si les CMS proposent de nombreuses fonctionnalités dont la plupart ne vont vous servir à rien (souvenez vous de la loi de Pareto qui dit que 20% des fonctionnalités sont utilisées par 80% des personnes), il y en a toujours une ou deux que vous auriez bien aimé avoir mais qui manquent à l’appel. C’est super frustrant !

La plupart des CMS open source sont au départ des CMS destinés à un usage personnel qui sont devenus tellement aboutis que le développeur a décidé de le mettre à disposition sur le Web. Environ un développeur sur deux développe son propre CMS (et parmi eux, un sur dix le finira un jour). Le problème, c’est qu’il s’agit en général d’un CMS dont les idées viennent du cerveau d’un seul mec (le développeur) et destiné au départ à n’être utilisé que par un seul mec (toujours lui). Pour le mec en question, c’est génial mais ce n’est peut-être pas comme ça que l’aurait fait un autre développeur. Dix développeurs vont aborder de dix manières différentes un problème et le résoudre de dix manières différentes, pour arriver au final au même résultat. Ce que je veux dire par là c’est qu’utiliser le CMS d’un autre, c’est un peu comme si on allait dormir dans un autre lit que le sien. Ça peut être super confortable mais rien de tel que son propre lit ! Même si c’est open source, se plonger dans le code d’un autre (qui a un autre style et d’autres conventions) et le modifier est une chose que je déteste car je considère (à tort, bien évidemment) que mon style et mes conventions sont meilleurs (c’est très subjectif).

Et n’allez pas croire que les CMS payants sont meilleurs ! Je connais quelques CMS en .NET (dont je ne citerai pas les noms) qui coutent un porte-avion et qui ne valent rien (façon de parler).

Bref, tout ça pour dire que les CMS et moi, ça n’a jamais été le grand amour et que je suis partisan du full custom. Le seul CMS que j’aime encore bien est WordPress qui répond parfaitement à mes besoins de bête blogueur qui se croit influent. J’essaye d’éviter Drupal, CMS Made Simple et SilverStripe si je veux rester de bonne humeur.

Si j’ai le choix, je préfère donc utiliser un framework comme Symfony qui me permet d’écrire mes propres composants réutilisables. Sur le long terme, ça permet de gagner du temps et d’avoir des sites plus facilement maintenables et qui tiennent la route !