Dolimodern

Bonjour,

je pense qu’il ne faut pas vouloir tout reprendre pour le transcrire vers un nouveau projet a base de framework.

Personnellement, mes modules sont développés avec un moteur de template (blade), utilise un orm (eloquent), le validateur de laravel, un router développé avec fastroute le tout gérer avec un conteneur de service (qui charge une grande partie des classes dolibarr automatiquement).
Le reste est du standard dolibarr et reste du procédural.

Donc il est tout à fait possible de réécrire dans un premier temps les pages pour passer par un moteur de template (twig, blade), utiliser un orm, le composant request de symfony.
Et par la suite voir pour aller plus loin mais rien qu’en faisant ça le code sera déjà plus claire. et plus facile à intégrer a un framework

Bonjour,

Le code source de Dolibarr est disponible sur github. Tout le monde peux faire un fork et le modifier à sa guise.

Y’a plus qu’à !

Du nouveau du DoliMordern ???

Bonjour,

Personne n’a lancé quoique ce soit sur le sujet.

Cela fait plusieurs années et sur quasiment tous les projets open source que l’on voit apparaître des « nouveaux » qui veulent « tout récrire » mais vu l’ampleur du travail je n’ai jamais vu de telles projets aboutir.

Ce qui « marche » c’est de la modernisé par petits morceaux successifs.

A mon avis le fork est à éviter pour ne pas diviser la communauté qui est la force d’un tel projet.

Cette ré-écriture doit être acceptée, validée et suivie par les développeurs principaux et mainteneurs, elle doit être le souhait de la communauté, pas de quelques uns (dont je fais partie).

Si la communauté ne voit pas l’intérêt d’un tel projet ce n’est pas la peine de commencer quoi que ce soit qui finira probablement aux oubliettes.

Évidemment que la ré-écriture se fait petit à petit en dépréciant, au fur à mesure de l’intégration, les anciennes méthodes.

Je pense qu’il n’y aura pas d’autre choix que de moderniser Dolibar, j’ai installé et préparer 2 instances de Dolibar mais finalement les utilisateurs ont trouvé Dolibar pas « trop sexy ». Du coup j’ai installé un 2ieme CRM en parallèle. S’il n’est pas aussi riche que Dolibar, l’ergonomie est au top (base sur code Igniter). C’est bien dommage car si on pouvait combiner la puissance de Dolibar avec une ergonomie actuelle (Bootstrap, Symphony,…) on aurait une bombe …
Etant moi même dévelopeur d’un produit qui a un age avancé et beaucoup de ligne de code, je comprend que le sujet n’est pas simple (surtout pour la séparation IHM/code).
Je pense qu’il faudrait commencer à completer la partie API backend pour basculer vers une archi 3 tiers…J’ai fais le test avec en écrivant une application mobile qui appelle les API actuelles de Dolibar et ca fonctionne plutôt bien.

Perso ne n’aime pas trop l’idée du token en BDD, je préfère un jwt avec une validité limitée dans le temps

pour ce qui est de la réécriture, on pourrait déjà commencer par séparé le code HTML du code PHP

C’est pour ça que tous les projets de réécriture de dolibarr n’ont jamais été au bout car pour certains on a c est très bien comme ça

Je développe sur dolibarr depuis 2011 et toutes mes entreprises sont sur dolibarr, c est un bon outil mais si cela reste comme ça ne veillera pas bien car pour commencer est impossible à tester, il y a bien les tests sur les objets mais très peu de tests sur des actions complexes et on se retrouve souvent avec une version X.0.0 qui devrait s’appeler X.0.0.rc (j attend toujours la version X.0.1 voir .2)
ce n’est pas une critique envers les développeurs mais juste un constat du manque de possibilité de tests et donc de détecter des régressions.

On ne va pas avoir le choix que de commencer avec un fork qui devra suivre de près la version originale pour déjà montrer les bénéfices de ce changement

Donc s’il y a des motivés pour commencer moi je suis partant. On pourrait commencer par la partie tiers et la partie facture et pour chaque module on le ferait en plusieurs étapes

  1. Réécriture des pages pour passé par un moteur de templates (séparation php/html)
  2. passage des actions dans des classes (ce qui permettra de mieux tester les actions)
  3. Utilisation de phpmig
  4. Utilisation d’un router

Ce ne serait pas une réécriture pour passé a un full framework comme symfony mais plus une réécriture pour rendre le code plus lisible et plus testable.

Alors qui est partant ?

1 « J'aime »

Bonjour,
On part là sur des hypothèses bien plus réalistes que ce que j’ai vu jusqu’à maintenant.

Je découvre cet « utilitaire » introduit de manière presque incidente.
Je retrouve le même principe que sur Laravel. J’ai toujours du mal avec le terme « migration », parce que pour moi, ce terme désigne passage d’un état à un autre. Or, l’opération de migration est conçue comme l’outil de création des tables. Bref. Ce qui m’a gêné aussi, c’est le fait de considérer l’alimentation en données comme séparée de la migration, alors qu’elle peut faire partie intégrante de l’outil pour certaines données.
Si je comprends bien, l’idée serait de modifier la manière de gérer les changements de niveau, en passant d’un script SQL à l’exécution de ces programmes de migration. Mais dans l’hypothèse qui est envisagée, il faudrait gérer la coexistence de ces deux méthodes. Cela ne risquerait-il pas d’être délicat ?

Je ne vois pas les migrations seulement comme un outil de modification de BDD mais plutôt un outil de modifications séquencés dans un ordre précis sans être à nouveau exécuté.

je ne pense pas qu’on aura besoin d avoir les deux systèmes en même temps mais pour les migrations dont les modifications sont peut-être déjà présente il suffira de faire un test pour savoir si elle doit s’exécuter

J’avoue que j’ai toujours du mal à comprendre la crainte du « full » framework. Les éléments dont vous parlez (templates, actions, routes, etc) font partie des frameworks comme Symphony. Pourquoi ré-inventer la roue en réécrivant ces composants ou composer un framework maison ?

Si vraiment c’est plus acceptable pour la communauté de ne pas passer par un « full » framework, ce peut déjà être un bon début. Néanmoins je reste convaincu que le problème ne sera pas réglé mais simplement repoussé : tôt ou tard les outils maison montreront leurs limites et le besoin d’un « full » framework sera ressenti à nouveau.

Dans tous les cas, avant que ceux qui veulent partent sur du concret, je me permets d’insister sur le fait que le mainteneur du projet devrait être impliqué dans cette démarche de réécriture. A mon avis, ces opérations devront figurer dans la feuille de route du projet, être planifiées et intégrées au fur et à mesure dans les futures versions.

Est-ce quelqu’un a déjà pris contact avec le mainteneur sur cette problématique ? Un sondage/questionnaire pourrait également être envisagé pour promouvoir cette volonté de réécriture et essayer de prendre en compte les différents avis du mieux possible.

Simplement pour garder un maximum de compatibilité avec les modules externes (perso je dois en avoir une bonne quinzaine à maintenir régulièrement)

Le jour ou ce besoin se fera ressentir, on aura déjà une bonne base de travail.

Pour l’instant non, il est préférable d’attendre s’il y a des personnes motivés pour y participer et ensuite prendre contact

Je ne sais pas si certains intervenants sur ce fil se rendent comptent de quoi ils parlent.

Le « mainteneur du projet » pour reprendre une des expressions sur ce fil, cela fait plus de 18 ans qu’il fourni un travail bénévole. Et après ces années de travail offert à la communauté du libre, le message que certains font passer est « ton travail finalement il est pas génial, faudrait que tu réécrives tout ça… ». On croit rêver…

Si vous voulez qu’un travail soit fait bénévolement, c’est très simple, il suffit de se retrousser les manches et de s’y mettre.

3 « J'aime »

Le message à entendre ici est que dolibarr est développé avec presque les mêmes méthodes qu’au départ et qu’avec les qu’avec les méthodes actuelles ça pourrait accélérer les futures évolutions

Avant de se retrousser les manches pour attaquer un énorme travail de réécriture, il est préférable de voir qui est partant pour ne pas commencer un travail qui ne servira a rien car non suivi …

On parle beaucoup mais pas beaucoup d’engagement donc si vous êtes partant pour mettre en place un début de réécriture, faites-vous connaitre :wink: perso je pense pouvoir dégager une à deux journées par semaine

Je viens de profiter de la présentation des nouveautés de la v13 pour poser la question sur l’orm, gestionnaire de templates, … et sa réponse est plus que claire.

Dolibarr a déjà un orm, le principe de view controller est déjà géré via les commentaires qui sépare les actions des vues. Donc à part faire un fork, il n’y aura jamais réécriture de dolibarr.

@dev2a est-il possible de voir la réponse du mainteneur à votre question quelque part ?

@pascal_z je trouve que c’est une façon bien négative d’interpréter le message. En ce qui me concerne c’est un encouragement collectif à s’améliorer, au delà même de Dolibarr, c’est pour le logiciel libre.

Et comme cela a déjà été dit si c’est pour forker dans le vide autant s’en passer.

Si le mainteneur ne voit pas l’intérêt de faire évoluer les composants il faut peut être en démontrer ou redémontrer les limitations et expliciter en en quoi les composants actuels sont dépassés.
Si ce n’est toujours pas convainquant il est toujours possible de formuler ces évolutions comme une demande émanent de la communauté pour peu qu’elle soit soudée sur cette question.
Autrement il est peut être également possible de se faire accompagner par l’équipe de développement d’un framework que la communauté aimerait intégrer à Dolibarr.

De mon côté je travaille actuellement au développement de l’interopérabilité logicielle au niveau ontologique dans le logiciel libre. Je pense qu’au delà d’avoir des logiciels « bien » écrits il faut aussi qu’ils se parlent et coopèrent pour évoluer de la compétition vers la coopération, bien plus efficiente et humaine.

@lecoqlibre non il n’y a pas de traces de sa réponse, il a fait une réponse orale lors de la présentation et il a coupé la présentation avant les réponses aux questions

@eldy Pourquoi avoir supprimé les réponses aux questions de la présentation ?

Pour ce qui est du fork, on ne va pas avoir le choix mais il faut le faire toujours dans l’optique que ce soit merger un jour dans le code de base. C’est sur, ça va diviser la capacité de développement sur deux versions. Mais je pense que si le fork est bien fait, il sera merger à moyen terme.

En effet, la couche d’abstraction de base de Dolibarr est bien plus performante que la plupart des ORM du marché (qui change tous les 5 ans), la ou Dolibarr a besoin de pérennité pour les 20 ans à venir).
Par exemple, la plupart des ORM renvoient le code erreur de la base de donné en cas d’erreur donc un code qui varie selon la base, la ou celui de Dolibarr renvoie un code commun. La couche ORM de Dolibarr est plus facile à appréhender puisque rien à faire de particulier. Il permet d’avoir un processus de migration qui garantie à chaque version un migration sans perte de donnée, et sans que le développeur ait à se soucier de quoi que ce soit, ni en terme de type ou version de base de donnée ni en terme de codage (ce ne sont que des exemples, il y a des tas d’autres raisons déjà exposés à mainte reprise). Il garanti aussi que le développeur se soucie de la problématique de performance en pensant sa requête « par rapport aux données et au besoin » plutôt qu’en codant de manière « scolaire » en aveugle sans se soucier de l’organisation des données (ce qui n’est bien que sur le papier ou pour un TP d’école), mais qui donne de très mauvais résultats dans le cycle de vie d’un projet.
Les ORM avaient le vent en poupe dans les années 90 voire 2000 (j’en ai implémenté une dizaine), mais nous sommes en 2021 et l’air et plutôt au « nocode » et l’architecture « module builder » rend déjà obsolète le besoin d’un ORM externe qui n’apporterait rien de plus à Dolibarr (hormis tous les inconvénients et régressions cités par rapport à l’ORM natif actuel qui ne nécessite aucune maintenance, aucune mise à jour, aucune dépendance et remplit 100% des besoins).

Le question du framework MVC n’est pas nouvelle non plus. Le framework Dolibarr natif s’avère ultra productif en maintenance grâce à son approche MVC par séparation du contrôleur et de la présentation par simple commentaire (par opposition à une séparation par fichier ou par config), et de part son utilisation du moteur de template natif PHP, le plus puissant connu dans le monde PHP (les experiences d’utilisation d’autres moteurs de templates faites par le passé ayant démontré qu’en pratique, la qualité et quantité et maintenabilité du code produit n’était pas aussi bonne). Le framework natif continue d’ailleurs de creuser le faussé en terme de productivité par rapport à d’autres lorsqu’il est couplé aux capacités « no-code (but can code if you need) » apportés par Module Builder, ce qui est la direction actuelle.

Si une initiative se lance de faire un fork pour ajouter un ORM à Dolibarr ou utiliser un autre framework que celui natif de Dolibarr, elle est la bienvenue, et l’asso Dolibarr pourra communiquer dessus (comme ce fut déjà fait par le passé sur d’autres fork), c’est la force du libre.
Je ne pense pas que cela divise les force, au contraire, cela évite que les directions se contredisent et évite que certains ralentissent d’autres. Une direction suivi par 500 développeurs vaut mieux que 2 directions différentes suivi par 1000 développeurs. Ce n’est donc pas forcément une mauvaise chose.
J’ai toutefois la conviction (et l’histoire des nombreux essais précédent ont confirmés cette conviction) que cela n’ira pas loin car, un projet qui priorise des actions qui n’apportent rien à un projet, si ce n’est réduire la productivité de codage pour les développeurs non aguerris (je ne parle pas de théorie, ou de principe de « bonne pratique sur le papier » mais d’expérience du terrain ayant déjà expérimenté ces théories), ni rien aux utilisateurs, se trompe de priorité et provoque souvent sa mort prématurée. Cela reste toutefois bienvenue car l’histoire peut toujours contredire tout le monde.

Bref, sans pragmatisme, Dolibarr ne serait pas la où il est aujourd’hui (l’application serait même morte il y a de nombreuses années), aussi il n’y a, à ce jour, pas de volonté d’abandonner ce pragmatisme et de faire des choix déjà expérimentés par le passé et qui, dans la vrai vie, se sont avéré apporteur de plus de problème que d’avantages. Aussi la direction actuelle est plutôt de continuer de profiter de la pérennité et la bonne productivité du framework actuel, tout en l’améliorant avec module builder ou en le perfectionnant via des micro-librairies plutôt que par des changements trop contraignants ou contre-productif.

4 « J'aime »

Slt
Question a part
Est il prevu une amelioration du module builder cette année ?

Oui, module builder évolue à chaque version de Dolibarr.

Oui il evolue mais manque de fonctions basiques
Pouvoir editer un champ object au lieu de le supprimer
Creer un menu pour chaque object
Integrer les extrafields

Je dirais que pour l instant il est « no-code / but must code »
MAIS c est déja un super outil