(Désolé pour les nombreux anglicismes, les 'slides' étaient en anglais, et du coup mes notes aussi...)

Après une introduction très 'corporate communication' par un membre de Sun, l'hôte de cette demi-journée, au sujet de la plateforme OpenSolaris, c'est Paul Borgermans (Head of Development at eZ Labs) qui a pris le relai pour animer plusieurs présentations (roadmap, tuto, etc.), suivie chacune de plusieurs échanges avec les présents. Le nombre de questions posées par mail avant la rencontre, le petit nombre de participants, la volonté de partager les savoirs (leitmotiv de eZ Systems) et la franchise et la simplicité de Paul ont fait de ce moment un rendez-vous précieux, que je conseille chaudement à tout développeur travaillant avec eZ Publish.

Kitchen Visit

La présentation se voulait être une kitchen visit d'eZ publish, pour "partager les bonne recettes autour d'eZ Publish", in order to share our internal receipts comme dit Paul [1], Cela a d'abord commencé par une importante suite d'annonces sur la roadmap, que Paul a pris le temps d'expliquer en détail. Celui-ci a introduit son speech par une annonce globale : On est en train de changer eZ Publish de façon assez monumentale...

eZ Publish version 4.1 :

La version 4.1 de eZ Publish devrait intégrer :

  • un nouvel éditeur de texte enrichi, qui remplacera l'actuel Online Editor. Ce nouvel éditeur sera basé sur TinyMCE et pemettra d'être utilisé sous IE sur Vista, ce qui n'est pas le cas pour l'actuel Online Editor. Le nouvel éditeur proposera un mode full-screen, permettant de sortir d'un pagelayout un peu étroit le temps de la saisie ou la modification d'un contenu. Cet éditeur sera conforme aux standards W3C et devrait être plus facilement customizable que l'actuel Online Editor. Il permettra en particulier au développeur d'ajouter rapidement et simplement de nouveaux boutons à la toolbar. Le paper clips actuel sera remplacé par une nouvelle interface d'insertion d'objets medias. Enfin, le format d'enregistrement des données sera conservé dans un format XML, comme actuellement, ce qui le rend rétro-compatible avec l'actuel Online Editor ;
  • un datatype permettant le multi file-upload, géré en Flash si j'ai bien vu ;
  • le support d'Oracle ;
  • l'import de fichiers Word (.doc), y compris au format binaire.
  • une 'password expiry extension' ;
  • 200 bugs fixés sur 250 connus actuellement.

Cette version 4.1 devrait assurer une rétro compatibilité avec les contenus et les extensions intégrés dans la version 4.0 d'eZ Publish. Elle est prévu pour le deuxième trimestre 2008.

eZ Publish version 4.5 :

Il s'agit d'une version de (forte) transition, avec des changements importants, tant dans le kernel que dans le langage de templates. Cette version 4.5 de eZ Publish devrait intégrer :

  • une amélioration importante de la vitesse d'exécution des pages PHP (a big focus on speed) ;
  • plusieurs fonctionnalités qui passeront du kernel vers les extensions, de manière à être facilement désactivées. Le kernel sera donc non seulement profondément remanié mais sera aussi plus léger ;
  • le support d'Oracle et de MS SQL ;
  • une plus grande facilité de développement des extensions ;
  • un système de workflows intégrant des objects states et permettant le staging de workflows ; il sera possible de créer des étapes "métier" supplémentaires dans le workflow de publication d'un contenu. Ceci permettra de lier telle ou telle étape supplémentaire du workflow à une action / condition / processus particulier que l'on aura externalisé dans une extension ad hoc ;
  • l'externalisation des attributs de l'objet eZUser (We want to split off the account attributes dit Paul) car ces attributs deviennent trop lourd à gérer dans le système actuel lorsque l'on dépasse un très grand nombre d'utilisateurs enregistrés (cf. plus bas) ;
  • l'introduction d'un système de création de mini-site "à la volée", que l'on pourrait créer par simple copier-coller depuis l'interface d'admin ;
  • l'introduction d'un broker (un Object Request Broker ?) permettant de se passer du point d'entrée unique que constitue actuellement la page index.php, que Paul qualifie même (et avec franchise) de goulet d'étranglement (bottleneck) pour la version actuelle d'eZ Publish.
  • une amélioration du système de caching actuellement organisé par "couches", et qui sera pensé de manière plus "hiérarchique" et un peu plus 'ajax oriented'.
  • Quelques modifications dans le système des fichiers de configuration et dans les mécanismes d'override, qui ne rendent pas toujours simple la maintenance des instances d'eZ Publish ;
  • Une intégration plus importante (mais pas encore complète) des modules d'eZ Components dans eZ publish 4.5
  • un nouveau moteur de template, avec des fonctions et des opérateurs de templates plus simples à utiliser et à étendre. Ce moteur de template remanié sera plus fortement basé sur les eZ Components, et devrait introduire plusieurs nouveautés et des modifications dans les usages actuels. Malgré les nouveautés introduites, la syntaxe du langage de template 'version 4.5' devrait quand même rester assez proche de la version actuelle. Paul a également annoncé une amélioration des performances dans le rendu de ces templates, allant dans certains cas jusqu'à un rapport de 1 à 20 par rapport au temps de rendu actuel.

Ce dernier point devrait avoir un fort impact sur le travail des développeurs et intégrateurs, et Paul prévoit donc de proposer un utilitaire de conversion des templates des versions précédentes vers la version 4.5, et de proposer un tutoriel sur ces nouveaux opérateurs de templates lors de la prochaine Open Nordic Conference, cet été à Skien.

Tous ces points sur la version 4.5 ne sont pas encore définitivement arrêtés, et constituent donc pour certaines des évolutions réellement programmées, et pour d'autres de simples "pistes", encore à valider.

Paul a expliqué au passage qu'il avait abandonnée l'idée de rendre possible l'import / export des règles et droits (les 'rules & policies' de eZ Publish), évoqué il y a quelques mois lors d'un précédent Developer Day, ce qui est assez logique car elles sont forcément fortement liées à un contenu et à un (groupe d') utilisateur. Il a également évoqué le fait que l'architecture de eZ Publish, même dans sa version 4.5, ne serait pas encore complètement "Ajax-oriented", même si l'apparition d'un broker (cf. plus haut) devrait déjà simplifier un peu plus les développements allant dans ce sens,

Cette version 4.5 est prévu pour le troisième trimestre 2008.

Limites constatées d'eZ Publish

Répondant aux questions qui été posées tout au long de la demi-journée, Paul a également données quelques informations importantes (et peu documentées) concernant les limites pratiques constatées d'eZ Publish.

Ainsi des baisses de performances peuvent apparaître lorsqu'on dépassent quelques centaines de milliers d'utilisateurs enregistrés, et lorsque l'on dépasse quelques millions d'objets eZ en base de données. Ces limitations sur des serveurs "uniques" peuvent être cependant contournés en passant en mode cluster [2] .

Dans le cas d'une instance d'eZ Publish contenant un très grand nombre d'objets, Paul a aussi attiré l'attention sur les structures de contenus un peu trop "plates", qui défavoriseraient les performances d'eZ Publish, et a encouragé les structures de contenu les plus "arborescentes" possibles.

Enfin, Paul a indiqué avoir constaté de réels amélioration de performances avec la version 5.3 de PHP, prévue en version finale stable d'ici la fin du premier semestre 2008 [3], et qui introduit une réduction notable de la consommation de mémoire par PHP.

Trucs et soluces

La 'kitchen visit' de Paul, après la pause café, a livrée quelques bonnes astuces, proposées soit par Paul soit par des membres de l'assistance, et que je reprends en vrac :

  • Concernant les instances d'eZ gérant un grand nombre d'utilisateurs provenant d'une base de données métiers externe à eZ publish, deux solutions ont été évoquées :
    • Créer un login handler et limiter les comptes utilisateurs à 1 eZ User = 1 rôle ; les utilisateurs "métiers" sont donc rattachés à un eZ User 'global'.
    • Créer un login handler et créer à la volée un eZ User par utilisateur "métier" lorsqu'il n'existe pas encore dans l'instance d'eZ. Eventuellement, pour des raisons de performances, nettoyer régulièrement la base des eZ Users (cf. les limitations évoquées plus haut). Cette deuxième solution permet de gérer des objets et des relations d'objet propres à chaque utilisateur dans eZ.

Ces deux solutions ont déjà été expérimentées avec succès en production.

  • Concernant le partage de medias dans un cluster, il semble qu'il faille privilégier les solutions de partage de médias via NAS (avec un bon débit réseau) plutôt que les solutions de partages basé sur NFS.
  • Concernant la synchronisation de contenus entre plusieurs instances d'eZ Publish, Paul suggère les solutions basées sur le principe de la syndication.
  • Concernant les problématiques d'import / export entre instances de versions différentes (par exemple dans le cas d'une mise à jour), il suggère d'éviter les imports/exports manuels et de privilégier les scripts d'upgrade, en visant toujours les dernière sous-versions (par exemple : de la 3.9.x à la 3.10.3 directement plutôt que de la 3.9 à la 3.10.0 puis 3.10.1 puis 3.10.2 puis 3.10.3...).
  • Concernant la personnalisation de l'affichage par utilisateur, Paul a évoqué une prochaine extension, "eZ Personal FrontPage", qui serait assez spectaculaire...
  • Concernant la validation de contenus en arborescence, le contenu le plus haut doit être validé pour que ses noeuds enfants / petits-enfants soient effectivement validés.
  • La génération de PDF posant des problèmes avec eZ Publish 4.x, Paul suggère de passer pour l'instant par le moteur de rendu pdf d'OpenOffice.org (utilisé côté serveur).
  • Concernant l'utilisation de l'extension ezwebin, il faut être attentif aux objets contenant trop de relations d'objets, et qui en conséquence deviennent plus difficiles à gérer dans le front-end editing (la fonctionnalité de gestion de contenu située coté public du site),

eZ Find

A défaut d'un véritable tutoriel "pas à pas" sur eZ Find, Paul a fini l'après-midi sur quelques slides au sujet d'eZ Find, l'extension servant de moteur de recherche avancé à eZ Publish, et basé sur Solr :

  • l'extension eZ Find en version 1.1 est prévue pour le 2nd trimestre 2008, mais la version 2.0 de la même extension est prévue dès le troisième trimestre 2008, et devrait en être une refonte importante ;
  • le moteur de recherche, toujours basé sur Solr, serait revu dans cette version 2.0 en utilisant un composant de recherche déjà existant dans eZ Components ;
  • la version 1.1 introduira la recherche à facette [4] et sera réellement documenté ;
  • la version 2 intoduira une API remaniée (reworked API) et devrait mieux mettre en oeuvre la puissance du moteur Solr (should expose most of Solr).

Enfin, point non négligeable, eZ Find permettra d'indexer des sources externes à eZ publish, en plus du contenu provenant d'eZ, permettant ainsi de proposer des résultats de recherche provenant de sources hétérogènes à eZ Publish, comme par exemple des données provenant de bdd métiers.

Voilà. Un après-midi bien rempli, où Paul et l'équipe d'eZ France ont partagé un bon paquet d'infos et d'annonces, en donnant le plein d'informations sur l'avancement général d'eZ Publish.

Avec le recul, et à entendre les uns et des autres, il semble au final...

  • qu'il faille suivre avec intérêt la prochaine release 4.1 d'eZ Publish, qui rendra eZ Publish 4.x réellement "IE/Vista - compatible" ;
  • qu'il faille envisager la version 4.5 d'eZ Publish, prévue pour la deuxième partie de l'année 2008, comme une version introduisant des changements significatifs, tant pour le travail des intégrateurs HTML que celui des développeurs d'extensions, et tenir compte de cela si l'on souhaite se former ou se mettre à jour sur eZ Publish d'ici les prochains mois.
  • Il a cependant été clairement dit que les changements importants apportés par cette version ne sont pas des changements "du tout au tout", mais plutôt des remaniements du kernel en profondeur, n'impactant donc que les développeurs d'extensions, et des améliorations consistantes du langage de templating, mais sans changements fondamentaux dans la syntaxe.

A voir aussi : le compte-rendu de Tigrou.

Notes

[1] qui est lui-même un bon cuistot semble-t-il...

[2] Cf. Doc eZ sur le clustering + Article sur le clustering avec eZ 3.8 + Article de Smile sur eZ publish à très hautes performances.

[3] final stable release of which is due in the first half of this year ; cf. l'annonce faite par Gergely Hodicska et relayée sur sitepoint

[4] Cf. Définition + présentation de l'extension équivalente chez Drupal