Les développeurs de Typo3 ont décidé de ré-écrire entièrement le cœur du logiciel, et de bâtir celui-ci sur un ensemble de librairies génériques, comme eZ Publish sera bientôt basé sur les eZ Components.

Si le développement n'en est qu'à ses débuts (le code n'est disponible que dans subversion - ou dans la forge Typo), la liste des fonctionnalités attendues est assez impressionnante, et l'équipe affiche de grosses ambitions, en n'hésitant déjà pas à comparer leur bébé avec plusieurs des principaux framework en PHP (Zend Framework, eZ Components, Symfony, cakePHP), Ruby (Ruby on Rails) ou Java (Spring).

La présentation annonce que Flow3 utilisera la plupart des concepts en vogue, comme la programmation orientée aspects, le Domain-driven design, le développement piloté par les tests, l'intégration continue...

Les principales briques annoncées sont:

  • un entrepôt à objets, qui utilise les patrons de conception "inversion de contrôle" et "injection de dépendances" dont je parlais hier. Cet entrepôt gérera le cycle de vie des objets (instanciation et suppression), leurs dépendances, leur configuration, etc.
  • un gestionnaire de configuration
  • un framework utilisant les concepts de la programmation orientée aspect. Comme je n'ai toujours pas réussi à me faire une idée claire de ce que c'est, je ne vais pas développer.
  • des librairies permettant l'utilisation du modèle MVC
  • des librairies facilitant le filtrage et la validation des données
  • des librairies de gestion de cache
  • un gestionnaire de propriétés d'objets, permettant par exemple d'établir des correspondances entre les attributs de 2 objets, de convertir ces attributs, etc
  • un gestionnaire de modules ("packages")
  • un gestionnaire de ressources (images, documents, textes, etc), indépendant des implémentations
  • des librairies de gestion d'erreurs
  • des librairies de gestion de la sécurité
  • une API avancée de réflexion

Bref, c'est alléchant. Reste à savoir dans combien de temps une première version sera utilisable, et si l'ensemble adoptera plutôt la philosophie des frameworks Zend et eZ, c'est à dire une juxtaposition de librairies utilisables seules, ou de Symfony, plus intégré (pour ne parler que des produits que je connais).