Tout simplement parce que j'aime m'amuser, j'aime tout cassé. Et puis les dernières versions de PHP apportent pas mal de changements à la fois sympa et … incompatibles. Avec le temps dotclear va devenir de plus en plus difficile à maintenir et le code ne sera plus du tout lisible par les petits jeunes qui arrivent. Et puis se demander à quoi pourrait ressembler le futur si on fait sauter les barrières de rétro compatibilité, ça peut-être intéressant de tester de nouvelles pistes, quitte à tout casser. Bien entendu, je baigne dans l'environnement dotclear depuis des années donc je garde en tête la vision de se moteur de blogs et j'essaie d'y rester attacher. Je remercie ici au passage le grand patron qui est toujours à l'écoute et sait me conseiller quand j'hésite ou je patauge.
Pourquoi dotclear Nx ? Parce que je suis fainéant. Le N pour namespace qui j'écris toujours en dyslexie, et le X parce que ce n'est (et sera peut-être) pas une version de dotclear !
C'est quoi le but ?
- Tout passer en espace de noms et rendre compatible avec des outils moderne tel que composer (même si ça ne sert pas à grand chose avec dotclear qui n'a besoin de personne pour tourner !),
- Améliorer la gestion des plugins et thèmes avec du multi répertoire, par plateforme, par config, par blog ou que sais je,
- Améliorer la gestion des dates (encore un truc qui casse tout…),
- Virer tout ce qu'il y a de l'ancien monde PHP: globales, constantes, méthodes magiques, etc., fourre tout. (oui j'y vais un peu fort là),
- Repérer et simplifier le typage des méthodes,
- Fourniture des toutes les ressources à travers un gestionnaire (permettant aux dites ressources de se cacher n'importe ou
Y a quoi dedans ?
- Requière PHP 8.1 (va encore monté en version avec le temps)
- Arborescence en espace de nom
- Compatible composer, PSR4, PSR12
- Inclue la librairies clearbricks
- Fichier de configuration plus complet. (Plus de contante de configuration)
- Classe Core en singleton, disponible n'importe ou dans le code.
- Gestion par Process (Admin, Public, Install, etc)
- Gestion similaire des plugins et theme en Modules (Plugin, Theme), permettant le multi répertoire plus poussé et une écriture de code simplifiée.
- Gestion standardisé des dates, UTC dans la base et dans la manipulation des dates, fuseaux horaire du blog coté public, fuseaux horaire de l'utilisateur coté admin.
- …
C'est quoi qui est cassé ?
- Toutes les fonctions, tous les fichiers, toutes les classes sont retravaillées en classe avec une classe par fichier,
- L'arborescence des répertoires est complètement revu avec un structuration plutôt axée sur le type, la portée, le processus lié à la classe utilisée,
- La librairie clearbricks a été intégré a dotclear et seul les méthodes utilisées dans dotclear sont restées,
- La cœur de dotclear souvent nommée $core et fréquemment appelée en globale n'existe plus, il est remplacée par un instance singleton nommée App:core(),
- Les pages public, admin, install, etc sont devenue des Processus qui cloisonnent ce qui est accessible,
- Tous les appelles à des globales sont proscrits, le fait que tout passe par des classes ne nécessite plus ce genre d'utilisation,
- Toutes les constantes sont proscrites, des classes de configuration avec interdiction de réécriture sont disponibles pour ce genre d'utilisation,
- Les méthodes magiques __get(), _set(), __call() sont proscrites (autant que possible),
- Une grande majorité des classes statiques sont devenues dynamiques (exceptions faites de sclasses d'outils appelées Helper),
- La Classe core a été divisé par type et est devenue Core, un conteneur d'instance de sous classes (User, Blog, etc...),
- La gestions de plugins et des thèmes est regroupé sous une même bannière nommé Modules de type Plugin ou Theme,
- Toute la gestion de date passe par une unique classe, toutes les dates en base de données sont exprimées en UTC,
- …
PS:
- Branche namespace: https://github.com/JcDenis/dotclear/tree/namespace
- Un exemple simple de plugin: https://github.com/DotclearNx/TinyPacker
- Un exemple de plateforme avec composer: https://github.com/DotclearNx/dotclear-blog
1 De Franck -
Nx, ok, mais ça pourrait tout à fait être la prochaine 3.0 ; reste à voir si la simple (pouf pouf) réécriture du code suffit à changer de version majeure (on casse tout certes, mais côté fonctionnalités pour l'utilisateur c'est quasi transparent/sans changements).
je dis ça à ce jour mais ça peut changer rapidement, on est pas à l'abri d'avoir des idées (alakon en ce qui me concerne), genre pouvoir échanger avec le multiverse (Mastodon et consort), brancher une authentification plus moderne, …
Sinon je me dis que tant qu'on y est, y'a des vieilleries du côté de Clearbricks (gestion réseau entre autres) qui pourraient être modernisées au passage (nouveau chantier, hi hi) ; j'ai pas vraiment creusé (vu que ça fonctionne au poil) !
2 De Open Time -
Dotclear futur
JcDenis a commencé il y a quelques mois une nouvelle branche intéressante sur son dépôt Dotclear en tirant partie de tout ce qu’apporte le PHP moderne — ≥ 8.0 donc, voire ≥ 8.11 ? Je suis ça de près pour voir où ça va aboutir et le résultat est...
3 De Jean-Christian Paul Denis -
Pour l'instant effectivement, et c'était voulu, l'utilisateur lambda n'y verra que du feu (enfin au moins coté interface car c'est déjà le souk coté URL😋 )
Néanmoins de gros changement sont quand même présent, comme la gestion des thèmes par exemple.
Pour le multivers, comment dire, j'ai bientôt plus de dents à force de me les casser dessus...
Enfin pour les vieilleries, ça va faire partie d'un second tour, en lot avec les noms des méthodes.