Il est évident que tous ces projets n'ont pas la même couverture fonctionnelle, il est donc important d'avoir en tête les capacités et objectifs de ces projets avant de les comparer entre eux. Nous avons pris les versions françaises considérées comme stables et n'avons installé aucune extension complémentaire. Il s’agit véritablement ici d’installations "out of the box" et on comprendra que ces classements peuvent très vite se dégrader à l'installation de modules supplémentaires.
Encore une fois, ce comparatif ne s'attarde que sur le code lui-même. Il s'agit d'un parti pris qui nous permet une comparaison avec une approche particulière traduisant la philosophie technique des plateformes auditées.
Versions des CMS testés et typologie principale :
- Kiubi version actuellement en production : CMS, e-commerce, Blog, ...
- Drupal 6.15 : CMS
- Joomla 1.5.15 : CMS
- Prestashop 1.2.5.0 : e-commerce
- OSCommerce 2.2rc2a : e-commerce
- Magento 1.3.2.4 : e-commerce
- Thelia 1.4.2.1 : e-commerce
- Wordpress 2.9.1 : blog
- Dotclear 2.1.6 : blog
Parce que les chiffres qui vont suivre peuvent sembler très abstraits, nous les accompagnerons d’un commentaire afin de comprendre leurs significations.
Nombre de lignes de code :
Le premier indice de volumétrie est le nombre de lignes de code exécutables du projet, c'est à dire sans les indentations, ni les commentaires, ni les retours à la ligne superflus.
- Magento 288 962
- Joomla 123 099
- Kiubi 83 295
- Wordpress 75 967
- Prestashop 63 841
- Drupal 37 478
- OSC 32 188
- Dotclear 32 015
- Thélia 31 464
Magento atteint un nombre impressionnant de lignes de codes. C’est ce qui se passe quand on inclus le framework ZEND quasi intégralement et qu'on y ajoute le Framework PEAR. Est-il encore possible de maitriser pleinement un code aussi important ? Joomla parait également très volumineux alors qu'aucun module supplémentaire n'a été installé. Pour les autres, le nombre de lignes est, selon nous, en phase avec le type de logiciel (CMS, Blog ou solution e-commerce).
La classe :
En programmation, les classes permettent de packager des fonctionnalités et des interactions. Un faible nombre de classes volumineuses signifie en général que les classes sont complexes et trop rigides, un nombre trop important indique qu’il faudra faire un montage savant de petites classes avant d'être réellement productif. Bien entendu, ces chiffres sont toujours à relativiser par rapport à la couverture fonctionnelle attendue.
- Magento 4 346
- Kiubi 855
- Joomla 759
- Prestashop 411
- Thélia 195
- Wordpress 174
- Dotclear 140
- OSCommerce 73
- Drupal 1
Toujours un beau record pour Magento qui ne se concentre pourtant que sur l'e-commerce (merci Zend et PEAR). Pour les autres, la volumétrie semble normale. On voit bien pour OSCommerce et Drupal que les projets sont si anciens qu'ils datent d'avant le boom de la programmation orientée objet (ce qui n'est pas une tare non plus). Un développement procédural, ou pour simplifier "sans objets", amène à un code souvent plus accessible pour le néophyte, mais ce modèle a montré ses limites en terme d'évolution et de maintenance. De plus, la programmation objet a le vent en poupe, c'est donc sur ce genre de projet que les communautés se forment le plus.
Les fonctions :
Les fonctions sont un moyen pratique de centraliser des fragments de codes pour les réutiliser un peu partout. Les inconvénients sont : la difficulté de maintenir une cohérence dans un grand ensemble de fonctions indépendantes et leur trouver un nom. Voilà le nombre total de fonctions que propose chaque projet :
- Magento 31
- Dotclear 23
- Prestashop 188
- Kiubi 214
- Thélia 258
- OSCommerce 368
- Joomla 454
- Wordpress 1 841
- Drupal 1 951
Un grand nombre de fonctions est synonyme de programmation procédurale, anti-thèse de la programmation orienté objet. Mentions spéciales pour Wordpress et Drupal donc, qui en arrivent inévitablement à des fonctions avec des noms beaucoup trop longs (ex trouvé dans wordpress: "_wp_kses_decode_entities_chr_hexdec(" ).
Nombre de lignes de commentaires par ligne de code exécutable :
- Magento 1,11
- Joomla 0,67
- Drupal 0,64
- Wordpress 0,58
- Kiubi 0,57
- Thelia 0,57
- Dotclear 0,42
- Prestashop 0,39
- OSCommerce 0,32
La quantité de commentaires exprime une volonté de clarté du code source et sert à l'auto-documentation de l'application. Magento dépasse le chiffre impressionnant d'une ligne de commentaire pour chaque ligne de code.
Le seul véritable intru ici est OSCommerce avec un taux étonnamment bas, ce qui reflète une facilité de compréhension du code en retrait de celle des autres plateformes. Les projets open source massivement communautaires, qui sont diffusés par définition à un grand nombre de développeurs, sont habituellement bien commentés. En effet, le code doit être compréhensible pour que des développeurs tiers y ajoutent leurs fonctionnalités et dans le même temps, chaque contribution doit être commentée pour que le noyau dur en charge du projet décide de l'intégrer au code source.
Nos conclusions :
Les projets historiques accusent le coup, tous les indicateurs précédents semblent condamner OSCommerce et Drupal. Leur conception date des années 2000 et cela ressort clairement dans les chiffres précédent. Le successeur d'OSCommerce est clairement Magento. C'est en revanche beaucoup plus flou pour Drupal. Joomla s'accroche toujours mais Wordpress est de plus en plus utilisé en tant que CMS.En gardant à l'esprit la couverture fonctionnelle de chaque logiciel, on constate sans surprise que Magento et Joomla sont de véritables "usines à gaz". 280 000 lignes de codes et plus de 4 000 classes à connaitre pour l'un et 120 000 lignes et 750 classes pour l'autre. Leur maitrise est clairement réservée à une élite de spécialistes. Prestashop, selon les critères examinés, a des résultats moyens sur quasiment tous les critères, il ne présente ni qualités ni défauts particuliers sous cet angle.
Pour finir, Dotclear et Thélia s'en sortent bien. Ce sont des projets plus modestes, mais dont le code source se concentre sur leur coeur de métier sans se disperser. La vivacité de Drupal et Wordpress s'explique en partie par la facilité de modification du code. Le développeur néophyte peut personnaliser son site avec quelques notions de bases. Kiubi et Magento sont des projets plus ambitieux pour lesquels l'accent est mis sur l'évolutivité et la maintenance du code.
Kiubi montre selon les critères techniques évalués une base technique conforme aux pratiques modernes de génie logiciel, pensée de façon modulaire et évolutive. Très concrètement cela nous a permis de basculer tous les sites de nos utilisateurs vers du PHP5 il y a plusieurs mois de cela, sans intervention de leur part. Les gains de performance ont été immédiats pour tous les Kiubistes.
Quelques perspectives...
Une évolution majeure telle que le passage de PHP4 à PHP5 n'est pas anedoctique et plusieurs des logiciels opensource étudiés ici vont confronter prochainement leurs utilisateurs à ce changement pouvant nécessiter des interventions très lourdes sur les sites, voire une refonte complète ou un changement d'hébergeur.Côté prestataire web, la bonne gestion des évolutions majeures des logiciels que l'on utilise pour développer les sites de ses clients est une question encore plus délicate. D'un côté, si en 2000 les clients acceptaient d'attendre 5 ans avant de faire évoluer la base technique de leur site, aujourd'hui la plupart des porteurs de projet a compris qu'attendre plus de 6 mois pour mettre son site à niveau est un handicap dans un environnement très concurrentiel. De l'autre côté faire évoluer individuellement plusieurs centaines de sites et leurs développements annexes vers la dernière version d'un logiciel s'avère quasiment impossible à réaliser rapidement pour un prestataire.
C'est dans ce contexte que l'on constate un engouement croissant pour le modèle SaaS, y compris pour des projets opensource qui vont devoir prendre leurs marques dans ce domaine.




















