Les CMS sont ils de bon outils techniquement parlant ?

Les CMS sont ils de bon outils techniquement parlant ?

Aujourd’hui les CMS occupent une part de marché grandissante dans la mise en place des sites Web, mettre en place un site Web et déployer un CMS sont devenus sont presque devenus des synonymes. Pourtant, est ce que ces outils sont bien conçu en accord avec les bonnes pratiques du génie logiciel, de la qualité Web, de l’accessibilité, sont ils performants, sont ils des outils des pour répondre facilement aux problématiques propres à chaque projet, à chaque client. Pas besoin d’entretenir le suspense, ce ne sont pas de bons outils mais ce sont les meilleurs pour l’instant … Explications

Wordpress, Drupal et Joomla écrasent le marché

Water & Stone, agence de webdesign spécialisée dans les CMS open source depuis 2003, publie une étude approfondie (19 CMS sont analysés) qui a pour but de déterminer quels sont les CMS les mieux placés en terme de taux d’adoption et d’image de marque. Ce ne sera une surprise pour personne, l’étude identifie WordPress comme le leader incontesté suivi du duo Joomla/Drupal . L’étude identifie également Elgg et… MODx comme “étoiles montantes” :)

Une architecture techniquement dépassé

Initiés aux début des années 2000, ces produits se sont basé sur les standard de l’époque. C’était les début de PHP 4, le modèle objet était défaillant et très limité. Le génie logiciel quasi inexistant à l’époque. Les hébergeurs ont aussi une part de responsabilité, ils ont pendant longtemps proposé uniquement PHP 4, ce qui n’a fait que ralentir l’adoption d’un modèle objet cohérent. La compatibilité ascendante a propagée ces vestiges d’un temps révolu.

L’industrialisation de PHP n’est apparu que bien plus tard. Il aura fallu attendre la fin de l’année 2009 et la sortie de PHP 5.3 pour avoir un modèle objet complet et les éléments indispensables (namespaces, closures, …) pour pouvoir coder dans les meilleurs conditions.

Un modèle qui fait consensus

Un autre aspect qu’il faut prendre en compte, c’est le niveau de connaissances des bonnes pratiques de programmation, de génie logiciel des personnes qui vont intervenir sur les projets. Beaucoup de d’utilisateur ne maitrise pas les concepts de la programmation orientés objets, ils en maitrise parfois la syntaxe. Parler de chaine de responsabilité, de factory, de builder à une personne qui connait à peine la différence entre des attributs privé et public, c’est un non sens.

La programmation procédurale est quelque chose de beaucoup plus facile à assimiler et comprendre pour les non-initiés. Tous les utilisateurs, contributeurs n’ont pas eu la chance d’être formé à la programmation orientés objets.

Le modèle mis en place dans ces CMS est un modèle beaucoup accessibles pour les néophytes. Pourtant, elle regorgent de mauvaises pratiques qui finalement rendent les développement sous les CMS plus complexes qu’avec un modèle objet.

Wordpress : la sur-exploitation des variables globales

Dans Wordpress, le concept de Loop passent exclusivement par des variables globales. Ce concept permet d’être efficace dans un premier temps. L’écriture de template avec Wordpress est rapide dans la plupart des cas. En revanche, l’utilisation des variables globales rend plus difficile la compréhension d’un programme ainsi que son débuggage et sa modification ultérieure, il est également nécessaire de maitriser tous le processus pour connaitre les implications d’un changement dans une variable globale.

Ainsi, dès que l’on veut aller plus loin, le niveau d’expertise nécessaire pour maintenir l’application dans un état stable est bien plus important que pour un programme dans une logique où tout est bien cloisonnée.

On trouve exactement le même concept dans la notion de boucles sous SPIP. On gagne peut être en efficacité si aucune personnalisation n’est demandé. Après, on commence vite à perdre du temps à manipuler ces variables globales, identifier les effets de bords et les corriger.

Drupal : l'hérétique

Drupal n’est pas a véritablement un CMS. Dries Buytaert, développeur initial du projet à partir de 2000 à l’université d’Anvers, le définit comme « assembleur rapide de site web » (Rapid website assembler). Ici, ce n’est pas forcément l’outil qui n’est pas adapté mais son utilisation. C’est plutôt un outils de prototypage.

Pour une utilisation, comme CMS, je suis en accord avec l’avis de Gauthier Delamarre Je prendrais que 2 exemples sur le planète drupalfr qui traduisent bien les difficultés que posent Drupal en terme de développemet :

Drupal, n’est pas mauvais, si le périmètre fonctionnel correspond aux possibilités du produit (sans views et sans panels) alors oui Drupal est efficace. Sinon, passer votre chemin.

Joomla!

Joomla! a contrario, a pris le parti de réécrire une partie de son CMS en en dégageant un framework, il est d’un bon niveau mais inférieur aux cadors des frameworks PHP (Zend, Symfony, eZ Components, …) . C’est le seul CMS à proposé un véritable modèle MVC. En revanche, certains aspects ne sont pas implémentés comme les ACL ou des hiérarchisation des contenus sur plus 2 niveaux (Implémenter dans la version 1.6 actuellement en beta). Pourtant, cette aspect n’est pas mis en valeur par la communauté ni dans la presse spécialisé. Il faut vraiment fouiller pour connaitre ne serait ce que son existence.

Des communautés très actives

Les communautés sont très actives et proposent des fonctionnalités aux travers des systèmes d’extensions qui répond aux problématiques clients. Pour chacun de ces CMS, on peut compter 100 à 200 modules, extensions, composants suivant la terminologie utilisables sur les milliers annoncées. C’est un atout indéniables, malheureusement, c’est à double tranchant, un module mal codés et c’est le site entier qui en subit les conséquences. Il est nécessaire d’auditer chaque module pour connaitre les fonctionnalités proposées et les limites, les risques de sécurités potentielles.

Il est souvent plus rapide de réécrire un module qui correspond aux métiers que l’on veut, que de trouver l’extension ou la combinaison d’extension qui va permettre de réaliser cette tâche.

Couverture fonctionnel

On peut voir les CMS comme une solution qui permet de faire des sites vite fait à des prix discount. Oui, à partir du moment où l’on accepte les fonctionnalités proposées par le CMS. Suivant le projet, un CMS avec ces extensions peut couvrir de 50% à 100% des besoins.

Si la couverture est totale, le CMS est le bon choix. Sinon, il faut bien regarder car les fonctionnalités qu’il faut développer. Il est important de comprendre que les CMS n’offrent pas des frameworks assez puissant pour permettre à un développeur d’être efficace.

Le temps de développement d’une fonctionnalité est plus long sur un CMS que sur d’autres plate-formes et le niveau de connaissance de l’outils doit être beaucoup plus élevé pour pallier tous les effets de bords. Même si c’est au travers de hook que les modifications se font, on travaille sur un existant. Il était toujours plus complexe de modifier un existant pour l’adapter à ces besoins que de partir de la feuille blanche.

Si la couverture fonctionnel de l’outil est basse, le CMS peut devenir un véritable gouffre financier.. L’idée reçu qu’un CMS ne peut être utilisé par des non-développeurs est vrai mais jusqu’à un certain point.

Zend Framework et Symfony sont elle des alternatives crédibles ?

Ces 2 frameworks sont des agrégats de bonnes pratiques de programmation, il offre des fonctionnalités complètes et qui correspondent à la grande majorité des besoins. Pour faire un parallèle avec le batiment, le CMS peut être comparé à des préfabriqués que l’on assemble, les frameworks comme les matériaux (briques, fenêtres, portes, tuiles, charpentes, ….).

La mise en place d’un site batit sur des frameworks est plus longues en première approche. Il faut le temps d’obtenir le pré-fabriqué du CMS (au moins les fonctionnalités utiles et nécessaires). Ensuite, le gain se fait sentir, le développement de nouvelle fonctionnalité est beaucoup plus simples et plus rapides qu’avec un CMS.

Le cout du pré-fabriqué du CMS peut paraitre rédhibitoire mais il peut parfaitement être développé par un prestataire pour le premier client et réutilisé pour les autres, le coût de fabrication peut donc être répartie sur plusieurs projets. On voit également apparaitre des couches CMS batit sur les frameworks Diem, Sympal, Digitalus, … . Elle n’offrent pas encore toutes les possiblités de Wordpress, Drupal ou Joomla mais l’avenir est clairement à ce type de solutions qui combinent les avantages du préfabriqués et les avantages d’un framework puissant. Malheureusement, la situation est a nuancé. Le Zend Framework et Symfony ont entamés des évolutions majeures. Symfony abandonne le modèle fullstack et part sur un framework de type composant. La fin du support de la version 1.4 est prévue pour fin 2012. Le Zend Framework va aussi entammer une petite révolution avec la version 2.

Il va falloir attendre que ces versions 2 se finalisent, que les composants CMS soit développés dessus et se stabilisent, pour pouvoir remplacer les bon vieux CMS comme Joomla, Wordpress et Drupal par ces nouveaux produits plus efficaces. La question n’est pas savoir si Wordpress, Drupal et Joomla vont disparaitres pour la production de sites mais la question est quand ? Pas avant 2012.

comments powered by Disqus

Voir aussi

Drupal 7 : première impression

Drupal 7 : première impression

Presque 2 ans après la sortie de la dernière version majeure qui est la 6, Drupal 7 devrait sortir durant le premier semestre 2010. Pour …

Découverte de SPIP 2

Découverte de SPIP 2

Après avoir fait quelques projets en SPIP en 2007 et 2008, je n’avais pas eu l’occasion d’utiliser de nouveau ce CMS depuis son …

Les 12 meilleurs plugins pour Wordpress

Les 12 meilleurs plugins pour Wordpress

Wordpress propulse mon blog depuis près d’un année, j’ai recherché à de nombreuses reprise les plugins qui pouvait m’être le plus …

Afficher les pages et les posts modifiées récemment avec Wordpress

Afficher les pages et les posts modifiées récemment avec Wordpress

Dans un blog, il peut s’avérer nécessaire de faire remonter sur la page d’accueil ou dans une colonne d’un site les derniers posts …

A la une
  • Rencontre du numérique 2019 - Nîmes
  • référencement naturel d'un hôtel
  • Développeur eZ Platform
  • Tech lead Symfony
  • Expert Qualité Web

Copyright - Sylvain FIX

2009 - 2019