Drupal, eZ Publish et leurs frameworks de gestion de contenu

Publié le Mis à jour le Par

A la manière de Symfony2, on observe de plus en plus de frameworks de nouvelles générations qui sont, entres autres, développés au plus près de la spécification HTTP.
Cette tendance semble s’appliquer dans le monde des CMS PHP, avec le souhait de se séparer de leur coeur vieillissant “à la PHP4” pour des frameworks modernes.


Petit tour d’horizon des perspectives pour les CMS Drupal et eZ Publish :

Drupal

Dans le cadre du développement de Drupal 8, un ensemble d’initiatives sont lancées dont le but est de gérer le développement des refontes majeures. Parmi ces initiatives, le lancement du Web Services and Context Core Initiative (WSCCI), qui vise à transformer le coeur de Drupal en un serveur REST de première classe.

Le support complet de REST a été jugé comme la fonctionnalité la plus importante, notamment pour répondre plus facilement aux marchés multi-canal jugés inévitables. Le délai étant court et l’équipe de développement ne voulant pas réinventer la roue, le choix important d’intégrer des composants Symfony2 dans Drupal a été fait. Parmi ces composants, HttpFoundation, qui implémente toute la couche bas niveau HTTP, ClassLoader pour la gestion de l’autoloading des classes respectant la norme PSR-0, et encore pas mal d’autres composants en fonction du besoin. Cette couche REST sera la fondation du framework de gestion de contenu de Drupal.

Sur cette base, l’idée est de fournir à Drupal un puissant système de gestion de layout avec des blocs contextuels, une belle interface drag-n-drop pour gérer l’agencement des blocs dans la page. Le petit plus tirera parti de la couche HTTP avec des composants Symfony2 pour fournir un support des tags ESI pour une gestion du cache avancée. Le périmètre de cette fonctionnalité est tellement vaste qu’il a été récemment éclaté dans sa propre initiative.

Au niveau des améliorations au programme une refonte de la couche Ajax de Drupal est prévue sur la base de cette couche REST pour un gain de performance qui ne devrait pas être négligeable, le staging est également mentionné.

Le travail est déjà commencé puisque Dries a fait au début du mois le premier merge de l’initiative WSCCI qui dote Drupal 8 d’une première version de l’intégration de composants Symfony2. L’intégration du composant HttpKernel avance donc mais il faut noter que l’EventDispatcher sera au programme afin de tenir compagnie au fameux système de hook de Drupal, ainsi que d’autres composants comme le Routing ou DependencyInjection. Pour finir Twig vient également de faire son apparition dans le core comme futur système de templating.

eZ Publish

eZ Systems, de son côté, travaille dur pour la sortie du fameux eZ Publish 5; à cette occasion, c’est une refonte complète du noyau qui est faite. Le travail est commencé depuis environ un an avec une API PHP basée sur PHP 5.3. Déjà disponible en “developper preview”, une couche de tests unitaires est en train d’être développée afin de couvrir 100% du périmètre. L’API devrait être stable d’ici la fin de l’année et permettre une intégration avec les versions actuelles (4.x) pour assurer un passage en douceur vers cette refonte.


Architecture du futur eZ Publish 5 et de l’intégration avec eZ 4.x

L’API est conçue pour segmenter au maximum les différentes couches de l’application de gestion de contenu avec un découplage important. L’injection de dépendances sera bien sur au centre des développements. L’extensibilité de l’API est au rendez-vous avec des points d’accès bien exposés et normalisés. Par exemple, la couche de stockage pourra être remplacée par n’importe quel système de gestion de données, on pense bien sûr aux bases NoSQL ou encore PHPCR. Contrairement à Drupal, eZ Publish 5 se base entièrement sur le framework Symfony2 et non quelques composants.

Cette nouvelle API déjà bien avancée commence à faire son apparition dans le dépôt Git d’eZ Publish afin de préparer la compatibilité avec les versions actuelles. Le dépôt Git d’eZ Publish 5 vient d’être ouvert au public sur github.com.

eZ Systems le clame depuis quelques temps, la force d’eZ Publish est l’exposition de contenus multi-canal. Une couche REST en lecture est déjà existante depuis quelques temps, désormais le support sera disponible en lecture/écriture (une version beta vient de sortir), le tout basé sur la nouvelle API. A cette occasion, une extension de staging vient également de sortir, tirant partie de cette nouvelle API REST.

eZ Publish accentue son côté CMP (Content Management Plateform) espérant élargir l’éventail des types d’applications basées sur cette plateforme.

Back to the roots

On observe donc pour ces deux CMS des perspectives intéressantes, avec en première ligne le respect des standards qui, en plus de permettre une architecture robuste, va permettre une adoption plus aisée pour les nouveaux développeurs.
L’appui sur une couche REST va apporter beaucoup de souplesse, que ce soit pour les développements mobiles, le développement de connecteurs vers des systèmes tiers, la gestion des appels Ajax ou encore le staging et la distribution de contenus. Une implémentation intéressante qui pourrait tirer parti de ces améliorations est la norme CMIS pour l’interconnexion de différents systèmes de gestion de documents. L’idée commence à être mentionnée du côté de Drupal notamment.

Ces CMS sont en train de se munir de vrais frameworks de gestion de contenu et dans ce domaine, il faut citer l’initiative intéressante de Symfony CMF qui développe une vraie couche de gestion de contenu sur la base du framework Symfony2.


  • CMS