Cela fait un moment que nous évoquons la version 2.1, remplaçante de PHPBoost 2.0. Nous avons récemment pris une décision à propos de cette prochaine version que nous allons vous exposer en détails. Nous n'étions pas partis pour cela, mais la prochaine version de PHPBoost (que nous avons appelée jusqu'à maintenant 2.1) sera le début d'une nouvelle branche du projet, elle sera donc baptisée
PHPBoost 3.0.
Créer une nouvelle branche du projet doit forcément se justifier. Nous allons détailler quelques points clé qui appuient notre décision et qui vous permettront de mieux connaître cette nouvelle version en attendant qu'elle sorte.
PHPBoost 2.0 est sortie le 4 novembre 2007, et aura d'ailleurs été pour nous une extraordinaire réussite puisqu'aucun correctif n'a été apporté en un an d'exploitation. Espérons faire aussi bien avec cette nouvelle mouture.
Le développement de PHPBoost 3.0 a commencé dès la sortie de sa petite sœur, soit il y a déjà plus d'un an. La 2.0 aura été tellement stable que nous avons pu profiter de développer de nouvelles choses sans avoir d'impératif de sortir des versions intermédiaires, ce qui aurait assez lourdement handicapé notre progression.
En un an de développement plutôt intense, nous avons pu reprendre tous les points faibles de la 2.0. Nous avons revu la conception et le code avec une approche beaucoup plus professionnelle, ce qui assure une meilleure qualité et maintenabilité du code.
Sur PHPBoost 2, on pouvait créer des modules, mais la documentation n'était pas suffisamment expliquée et l'environnement de développement trop obscur et difficile à prendre en main.
Sur la 3ème branche du logiciel, nous avons créé un framework embarqué dans le noyau de l'application, qui permet de prendre en charge les traitement les plus courants. Le framework est entièrement conçu selon le modèle de la
programmation orientée objet.
Sans rentrer dans les détails techniques, cette nouveauté permet entre autres un développement de modules bien plus aisé et rapide puisqu'il n'est plus nécessaire de réinventer la roue pour proposer chaque fonctionnalité, et cela apporte surtout une bien meilleure
maintenabilité du code.
Le framework nous a permis de revoir l'organisation des fichiers, qui commençaient à s'accumuler dans certains répertoires. Cette réorganisation était absolument nécessaire, compte tenu de l'ampleur que prend le projet.
Par la même occasion, nous en avons profité pour réécrire une bonne partie du code, certaines parties commençaient à devenir assez vétustes et difficilement retouchables.
Note aux développeurs :
Le framework sera entièrement documenté, il sera donc facile de le prendre en main et donc de développer un module en peu de temps.
Les templates sont les squelettes des pages générées par PHPBoost. Ils sont écrits en langage HTML et comportent des balises permettant de marquer l'emplacement de chaque variable qui contiendra des valeurs issues de la génération de la page.
Le principe de fonctionnement de ce système n'a pas changé. En revanche, son implémentation (la façon dont il est programmé) a été entièrement revue, et permet de gagner au moins 30% en terme de temps de génération des pages.
Ce nouveau système est basé sur le principe de la mise en cache. Les fichiers TPL ne sont plus traités à chaque exécution de la page comme c'était le cas sur PHPBoost 2. Ce traitement étant lourd et très peu optimisable, nous avons décidé de le faire seulement quand il est absolument nécessaire. Les fichiers sont maintenant traités uniquement quand leur contenu change, et le résultat du traitement est écrit sur le disque dur du serveur. Cette technique prend un peu plus d'espace disque (ce qui n'est pas très gênant puisque la mémoire ne coûte plus très cher et donc les hébergeurs ne lésinent généralement plus sur l'espace mémoire), mais permet de
gagner très notablement du temps à l'exécution de
chaque page.
Grosse nouveauté conceptuelle de PHPBoost 3, la communication inter-modules. Les modules étant indépendants les uns des autres, il n'était pas possible de les faire communiquer, ce qui s'est révélé être un frein pour l'arrivée de certaines nouvelles fonctionnalités.
Cette communication paraît anodine, mais elle a permis l'apparition d'un module de recherche globale au site, contrairement à la version 2 dans laquelle chaque module ne pouvait proposer seulement la recherche dans son contenu. Ce module est déjà présent sur ce site.
Le fait que les modules puissent communiquer va permettre d'étendre très notablement l'espace des fonctionnalités réalisables sur un module. Ainsi, un module
plan du site est prévu assez rapidement après la sortie de la nouvelle version, un tel module était absolument irréalisable sur la branche 2 du logiciel.
Il sera très facile aux développeurs de communiquer avec les autres modules, et par exemple d'intégrer la recherche dans son propre module à la recherche globale au site.
Ce sont en tout plus d'une centaine de nouveautés qui arriveront avec la version 3.0. Nous avons présenté là seulement les plus importantes. Un dossier expliquant les changements entre ces deux versions majeures sera publié en même temps que la sortie de PHPBoost 3.0 pour faire le point sur le nouvel état du projet.
Cela manquait énormément dans la version 2 et vous avez été nombreux à nous en parler. C'est désormais chose faite, les utilisateurs pourront contribuer au contenu du site, à condition évidemment que le module en question propose cette fonctionnalité. Mais si les modules ne proposaient pas ces fonctionnalités, c'était à cause de la gestion du cycle d'approbation de la contribution.
Le nouveau noyau PHPBoost contient un panneau de contribution, interface à travers laquelle les gens qui sont autorisés à traiter une contribution seront avertis de son arrivée et pourront assez simplement la traiter.
Encore une fois, la gestion des contributions est effectuée par le noyau, l'intégration dans un module sera donc très réduite et se fera en peu de temps.
La version 3 de PHPBoost sera proposée sous plusieurs distributions. En choisissant sa distribution, l'utilisateur téléchargera un installateur directement préconfiguré pour son utilisation. Nous distinguons pour l'instant quelques distributions (vos idées sont les bienvenues) :
C'est la question que vous vous posez tous depuis des mois et certainement encore plus depuis que vous avez commencé à lire cette longue annonce.
Tout d'abord nous tenons à nous excuser du retard que nous avons pu accumuler par rapport à notre estimation sur la date de sortie. Voici quelques explications :
Nous voyons cependant que vous n'avez pas perdu patience et que vous nous avez soutenus. Votre attente devrait être bientôt récompensée, cependant, le temps libre étant une ressource assez rare par les temps qui courent, nous ne pouvons pas vous annoncer une date précise. Nous évaluons à quelques dizaines d'heures le temps de travail restant avant de proposer une version de test de PHPBoost 3.0.
En terme de nouvelles fonctionnalités, il nous reste seulement la gestion dynamique des menus à terminer. Nous avons conçu une interface de gestion des menus (aussi appelés blocs) qui étaient disposables seulement sur les côtés droite ou gauche sur la version 2. Il est maintenant possible de les disposer n'importe où, et leur contenu est beaucoup plus étoffé, avec l'arrivée notamment de menus de liens, permettant de prendre en compte une suggestion qui est revenue plusieurs fois : le menu de liens en haut de chaque thème était modifiable seulement à la main en passant par les fichiers templates. C'est désormais géré simplement dans le panneau d'administration du site.
L'installateur est terminé et fonctionnel, et hormis les menus, PHPBoost 3.0 semble se comporter plutôt bien. Dès que l'implémentation de cette fonctionnalité sera achevée, une version alpha ou beta (selon le résultat de nos premiers tests) de la version 3.0 vous sera proposée, ce qui nous permettra de corriger une bonne partie des bugs. Nous proposerons par la suite une version RC (Release Candidate ou version candidate) pour valider la stabilité de l'application, puis la version 3.0 définitive de PHPBoost arrivera.
Si tout se passe bien, le père Noël devrait vous apporter un beau cadeau...