Comparaison d'eZ Publish et Drupal

Comparaison d'eZ Publish et Drupal

Encore une comparaison entre eZ Publish et Drupal, oui encore une. mais la lecture de l'article de Marco Zmak sur share.ez.no ma donner l'envie de ressortir cette comparaison des cartons.

J'ai travaillé pendant avec eZ Publish et j'ai suivi pendant longtemps Drupal pour m'y consacré pleinement depuis plus de 6 mois maintenant. Je vais essayer de donner mon avis sur les 2 technologies sans tomber dans la mauvaise fois pro drupal comme http://www.media-business.biz/content/ezpublish-cms-drupal-cms-2-years-experience-big-media-website ou pro eZ comme http://share.ez.no/blogs/marko-zmak/ezpublish-vs.-drupal .

Qualité du code

Orienté objet

Drupal n'est pas orienté objet dans sa syntaxe, c'est un fait. En revanche, elle en utilise de nombreux concepts. Elle l'ai un peu plus quand on rentre dans le monde des Entitées.

eZ Publish utilise la syntaxe mais prend quelque largesse avec les concepts. L'exemple d'eZMail::sendMail est peut être le plus symptomatique du mal dont souffre l'API d'eZ.


 /*!
  Tries to send the contents of the email object \a $mail and
  returns \c true if succesful.
  */
function sendMail( eZMail $mail ) {
  return false;
}

eZ Components, framework qui propulse de plus en plus eZ Publish, est au contraire un exemple de bonnes pratiques orientés objets.

Les 2 CMS et leurs API respectivent souffre des carences des anciennes versions PHP et notamment PHP 4. Les 2 CMS ont eu des approches différentes mais on ne peut blamer ni l'un ni l'autre pour les écarts par rapport aux dogmes que l'on trouve dans les API.

Test unitaire et fonctionnel

Point fort de Drupal 7, les tests unitaires et fonctionnels sous Drupal permettent de mettre le code sous contrôle. Pour eZ Publish, je n'ai pas vu d'équivalent.

Séparation en différente couche

Sur de la modification de template sur des composants existants, eZ Publish via son moteur de template mélange allègrement la couche d'accès aux données via les fetchs et la logique de présentation. Drupal offre une séparation plus nette avec les hooks d'un coté et la logique de templating de l'autre, le prix de cette séparation est finalement une lecture du code plus complexe (surtout quand le nombre de hook augmente). 2 approches différentes ayant chacun leurs avantages et leurs inconvénients.

Sur des modules personnalisées, on arrive à des systèmes assez proche avec de grande partie déclarative, des méthodes métiers et des templates bien séparées dans les 2 cas. C'est juste une histoire de syntaxe.

Le système de template

Syntaxe propriétaires versus syntaxe standard

Gros point noir d'eZ Publish de mon point de vue (en tout cas, c'est celui qui m'a donnée envie d'aller voir ailleurs, pour en connaitre les raisons je vous laisse lire un article sur l'utilité des langages de templates en PHP et sur mon rêve de template eZ en PHP), je ne vais pas refaire le débat.

Si l'on fait abstraction du langage proprement dit, et que l'on regarde les fonctionnalités. On a grosso modo la même chose avec des templates et des opérateurs du coté eZ Publish, et des templates et des fonctions de thèmes pour Drupal. Drupal possède quand même un avantage non négligeable : une fonction de template peut être surchargé par un template le cas échéant.

Qualité des templates par défaut

Même si il est très rare de conservé les templates par défaut dans un projet d'envergure, mais elle servent souvent de source d'inspiration pour les développeurs.

la qualité des templates par défaut proposé par Drupal surpasse largement celle proposé par eZ notamment d'un point accessibilité et qualité de code. J'ai encore le souvenir d'avoir surchargé tous les templates pour pouvoir faire des liens corrects.

Pour l'instant aucun de ces 2 produits n'exploitent nativement HTML 5, les micro-formats ou ARIA comme peuvent le faire d'autres CMS.

Documentation et communauté

Comme souvent dans le monde du logiciel libre, la documentation est abondante et pas toujours de bonne qualité. Le code source reste souvent la meilleur source de documentation.

Sur la communauté, eZ Publish dispose d'une communauté plus restreintes (beaucoup plus restreintes) mais qui maîtrise beaucoup mieux les concepts de génie logiciel, de bonnes pratiques de programmations que sur d'autres produits. eZ Publish dispose d'une communauté de très haute qualité.

Pour Drupal, la communauté est beaucoup plus importantes, il existe un noyau de la même qualité que pour celle d'eZ Publish mais elle noyé dans la masse. Drupal ratisse beaucoup plus large et donc attire de nombreux "noobs" du Web qui viennent pollué.

Il en est de même pour les modules, des modules comme Views ou Panels n'ont pas d'équivalent dans eZ Publish et c'est un avantage important pour ce CMS : avoir une porte d'entrée élevé pour ne garder que la crème.

Extensibilité

Drupal dispose d'un nombre d'extension important mais entre les extensions indispensables et les extensions inutilisables ou de mauvaises qualités, on se retrouve grosso modo avec la même chose.

Que ce soit dans Drupal ou dans eZ Publish, les types de contenus peuvent être créer à volonté. Pour les champs personalisées, nous avons le concept des datatypes d'un coté et la Field APi de l'autre, c'est une juste une question de syntaxe mais pas de grande différence fonctionnelle.

Une différence de poids en faveur de Drupal est la possibilité (à partir de la version 7) de créer des types de contenus par programmation sans passer par l'interface graphique, ce qui facilite la réutilisation entre les projets et les passages entre les différentes versions d'un même projet.

eZ Publish propose un éventail de datatype plus complet que Drupal.

Configuration

Sur la configuration, sous eZ Publish tout passe par des fichiers de settings, mais entre les siteaccess, les extensions, l'override globale, il est parfois difficile de s'y retrouver.

Dans Drupal, il existe plusieurs systèmes pour la configuration soit d'horrible tableau PHP soit des données stockées dans la bases de données.

Performances

Les 2 produits sont lourds et nécessite une infrastructure adapté qui connait bien le produit. Je ne crois qu'aucun CMS est meilleur que l'autre, c'est la qualité des développeurs et de l’administrateur système qui va être déterminant.

Conclusion

Drupal et eZ Publish sont aujourd'hui les 2 CMS qui sont capables de propulser des sites importants en termes de traffic et de fonctionnalités. Chacun à des avantages et des inconvénients, qui sont relatif à la sensibilité de chaque développeur. Personnellement, je trouvais Drupal 6 inférieur à eZ Publish, aujourd'hui je trouve Drupal 7 supérieur mais quid de la prochaine mise à jour.

Commentaires

truffo

francis

Pour la définition des classes il y a tout de même une belle extension : ezxmlinstaller qui permet tout celà au sein d'un fichier Xml :-)

Damien

ah les frustrations passées :-) je suis bien d'accord avec toi sur la suite de tests, le bloc XML ou les problèmes du langage de templates (même si on a pas la même solution en tête ;-)) Sur la qualité du front end, les choses changent doucement et j'espère que le mouvement va s'accélérer dans le bon sens. Pour la définition des classes tu peux toujours faire tes propres scripts via l'API mais c'est vrai que le système ne te poussent vers cette méthode...

truffo

L'exemple de cette méthode simulant une fonction virtuelle pure du C++ montre que certains vestiges d'un temps où la couche orienté objet de PHP était ridicule. Après, cette fonction m'a marqué dans la mesure où j'ai perdu une bonne journée pour comprendre pourquoi mes mails ne partaient pas. Pour les tests unitaires, merci pour les liens, c'est dommage que cela ne soit pas intégrer directement dans la distribution de base d'eZ Publish. Sur le code brut, c'est vrai qu'il y a pas mal d'absurdité dans Drupal. eZ Publish a une communauté plus orienté code coté serveur et délaisse un peu trop à mon goût la qualité front-end. Je crois sincèrement que les 2 CMS ont beaucoup à apprendre en regardant l'autre. Les 2 ont des bonnes idées. Je prend l'exemple de l'éditeur de block XML d'eZ qui avec un langage intermédiaire permet de maîtriser le code qui va sortir est un plus indéniable par rapport aux autres CMS. En revanche, le système de template derrière rend les choses complexes avec notamment l'ajout de nombreux d'espaces non désiré dans le code HTML résultats. Le principe des fonctions des thèmes de Drupal permettrait de contrôler beaucoup plus facilement le rendu final tout en gardant un code lisible. Enfin, dans les dernières versions d'eZ Publish, peut t'on définir les classes sans passer par l'interface d'admin mais via du code ou des settings comme il est désormais possible (et souhaitable) de le faire via du code ?

Nicolas

Un petit memo concernant les tests unitaires dans eZ Publish, comment les mettre en place : http://ezpedia.org/ez/testing_ez_publish_test_system Merci d'avoir pris le temps de refaire un point sur cette comparaison Sylvain !

Truffo.fr: Comp...

[...] here to read the rest: Comparaison d’eZ Publish et Drupal Share and [...]

Damien

"Qualité du code" bel exemple pour eZ :-) mais bon ça reste un exemple d'une méthode jamais implémentée... Pour Drupal sans s'attarder sur quelques détails, on pourrait parler du système de cron (le wget dans la crontab pour exécuter des tâches longues ça fera "rire" quelques admin sys), de l'absence de transaction dans Drupal 6 (bon ok dans Drupal 7 c'est enfin là... en 2011 !), l'absence de cache en mode connecté et j'en passe. "Test unitaire et fonctionnel Point fort de Drupal 7, les tests unitaires et fonctionnels sous Drupal permettent de mettre le code sous contrôle. Pour eZ Publish, je n’ai pas vu d’équivalent." et pourtant : https://github.com/ezsystems/ezpublish/tree/master/tests

Ajouter un commentaire

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
By submitting this form, you accept the Mollom privacy policy.