ERP Triple Bilan : Evaluation de Tryton
Dans le cadre de son projet d'ERP Triple Bilan, c'est-à-dire un ERP permettant, en plus des bilans comptables, de faire aussi des bilans sociaux et environnementaux, HashBang évalue des ERP opensources écrits en Python selon les critères établis dans un article précédent. Après les évaluations d'Odoo et d'Anyblok, HashBang se consacre à l'évaluation de l'ERP Tryton.
Contexte de l’évaluation
Notre évaluation s'est portée sur l'outil Tryton en version 5.8 et en édition anglaise.
La Fondation Privée Tryton
Tryton est un projet issu d'un fork de l'application OpenERP (aujourd'hui Odoo) fait en 2008 par l'entreprise B2CK, une entreprise de services informatiques belge. Elle propose des services autour de Tryton, comme le développement de modules pour Tryton, du support ou des formations, mais aussi autour d'autres outils opensources.
Afin de rassembler une plus grande communauté autour de l'outil, les développeurs de B2CK décident de fonder en 2012 la Fondation Privée Tryton. Une Fondation Privée sous loi belge est une entité à laquelle on alloue un patrimoine pour la réalisation d'un but précis qui ne doit pas être l'enrichissement des fondateurs et administrateurs.
D'après ses statuts, la Fondation Privée Tryton a pour but la protection, la promotion et le développement du logiciel libre Tryton. Elle se charge donc d'organiser des événements autour de l'outil, d'alimenter le site de Tryton et de gérer les outils de développement partagé. Elle est très engagée dans la promotion des logiciels libres, utilisant le plus possibles des outils et technologies libres pour le développement de Tryton.
La communauté
Tryton jouit d'une communauté très active. Elle participe énormément sur le forum Tryton, que ce soit pour des questions d'usage ou pour participer au développement de Tryton. Le forum est extrêmement bien rangé avec des étiquettes et des posts épinglés pour chaque étiquette, des réponses à presque tous les tickets et une modération très efficace, ce qui le rend extrêmement fonctionnel, au point qu'il contient une partie de la documentation.
Le développement communautaire de Tryton se fait grâce à l'outil Mercurial, un gestionnaire de versions libre. Mais il existe également un dépôt GitHub pour permettre à des contributeurs de faire des forks depuis GitHub.
Il existe quelques modules communautaires sur Tryton, mais le développement de modules officiels avec les fondateurs de la Fondation est privilégié, en ouvrant une discussion avec eux sur le forum. Il est tout de même possible de trouver des modules communautaires aux côtés des modules officiels qui, eux, ont pour préfixe "trytond".
Points positifs :
- La modération impeccable du forum
- L'hyperactivité des fondateurs de la Fondation et de membres actifs de la communauté sur le forum
- La présence de tutoriels en tous genres, manquants dans la documentation
Points négatifs :
- Le fait que le forum présente du contenu qui devrait plutôt être dans la documentation officielle
Les licences
Tryton est sous la GNU General Public Licence version 3. D'autres outils développés par la communauté Tryton et utilisés pour l'ERP, ainsi que les modules communautaires, sont sous diverses licences opensources.
L'ergonomie
Points positifs :
- La possibilité d'avoir plusieurs onglets ouverts en même temps
- L'arborescence visible à tout moment et rétractable
- L'accessibilité pour les personnes déficientes visuelles
Points négatifs :
- Des icônes peu intuitives
- Les onglets qui peuvent empiéter sur l'interface s'il y en a trop
- Les onglets et l'arborescence recouvrent l'interface si on zoome trop, ce qui la rend inutilisable
Les fonctionnalités
Les fondateurs de Tryton expliquent que la couverture fonctionnelle peut sembler plus faible que sur d'autres ERP par le fait que les fonctionnalités présentes sont plus complètes et plus travaillées en profondeur. En effet, chaque nouveau module fait l'objet d'un travail de réflexion préalable très conséquent avec la communauté dans la section "Ideas" du forum.
Fonctionnalités | Présente ? | Module officiel ou communautaire ? |
---|---|---|
CRM | Oui | Plusieurs officiels |
Vente | Oui | Plusieurs officiels |
Facturation | Oui | Plusieurs officiels |
Comptabilité | Oui | Officiel (fr) |
Notes de frais | Non | |
Congés | Non | |
Fiches | Oui | Plusieurs officiels |
Planning prévisionnel | Non | |
Gestion de projet | Oui | Plusieurs officiels |
Messagerie | Non | |
Point de vente | Oui | Communautaire (version 5.6) |
Gestion des stocks | Oui | Plusieurs officiels |
Billeterie | Non |
La documentation
La documentation Tryton est composée de 3 sections principales, puis d'une section par grande catégorie de module (vente, gestion des stocks, etc.)
Les trois premières sections développent des aspects théoriques sur Tryton, l'architecture, l'index pour l'API de Tryton, les outils utilisés, etc. Ensuite, chaque section présentant une grande catégorie de modules possède des sous-sections pour chacun de ses modules. Elles présentent les dépendances, cas d'utilisation et concepts associés, de manière assez détaillée.
Certaines notions ne sont pas développées, d'autres le sont de manière très poussée, ce qui peut rendre la documentation peu accessible. De plus, ces sections présentent quelques exemples de code, mais ne contiennent aucune illustration de l'interface, ce qui complique la compréhension.
Les tutoriels d'installation et d'utilisation de Tryton ne sont pas présents dans cette documentation, mais dans la section "Howto" du forum. On peut y retrouver des tutoriels pour utilisateurs, développeurs ou administrateurs.
Points positifs :
- Les documentations des librairies et API utilisées, assez exhaustives
Points négatifs :
- La dispersion de la documentation avec la présence des tutoriels sur le forum
- Il n'est pas très clair que du contenu présent sur le forum fait partie de la documentation officielle
- Des explications techniques parfois très poussées, ce qui la rend peu accessible
Les technologies utilisées
Tryton utilise python-sql, une librairie développée par la communauté Tryton, permettant d'écrire des requêtes SQL en langage Python. Cela permet a priori d'utiliser n'importe quel système de gestion de base de données relationnelles. Cependant, le développement de Tryton se fait avec PostgreSQL, et est également testé avec SQLite.
Tryton utilise également Proteus, une autre librairie faite par la communauté, permettant de se connecter en tant que client pour ensuite exécuter des scripts de test.
L'ERP utilise enfin une API très fournie pour le développement de modules, pour la communication avec des applications qui ne sont pas en Python, ou encore pour la réalisation de tests.
L'architecture
Tryton est composé de modèles et de vues regroupés en modules.
Un module est un composant d'un ERP ayant un rôle spécifique. Tryton a cependant des modules un peu particulier : il décompose par exemple la fonctionnalité de vente en plusieurs modules ayant des dépendances les uns aux autres, alors que la plupart des ERP possède un seul module de vente réunissant tous les outils constituant cette fonctionnalité.
Un modèle est une classe Python qui est assimilée à une table SQL par une API d'ORM.
Enfin, une vue est un fichier utilisant des instances de modèles et implémentant l'interface utilisateur. Sur Tryton, les vues sont écrites en XML. Chaque vue de chaque modèle (souvent une liste ou un formulaire), est implémentée dans son propre fichier XML. Le fichier XML implémentant la vue principale du module permet, lui, d'implémenter tous les boutons qui mènent à ces vues.
Points positifs :
- Pouvoir créer un module dans un dossier à part du code de Tryton
- Pouvoir faire appel à des modèles d'autres modules en déclarant les dépendances
Les API
Tryton utilise deux protocoles de Remote Procedure Call : XML-RPC et JSON-RPC. Il est donc possible d'accéder aux données d'une base de données Tryton depuis une application utilisant l'un de ces deux protocoles. Ces accès sont protégés par deux méthodes d'authentification au choix. La documentation ne présente aucun tutoriel pour utiliser les données de Tryton, mais de l'aide est disponible sur le forum.
L'installation
L'installation, malgré le fait qu'elle ne soit pas très détaillée dans la documentation, est tout de même assez simple à faire grâce aux tutoriels du forum.
Il est possible d'installer Tryton par une image Docker de manière très simple, mais elle ne permet pas d'y ajouter des modules customs ou d'apporter des modifications aux fichiers sources de Tryton. Nous avons alors privilégié l'installation par le téléchargement des fichiers sources, mais il est également possible d'utiliser l'installeur pip.
Les fichiers sources d'un serveur sont trouvables sur le site de Tryton, dans toutes les versions déjà sorties. Il faut donc installer le paquet du serveur, créer une base de données, créer et paramétrer son propre fichier de configuration, puis lancer le serveur avec une commande trytond.
Si l'on souhaite utiliser le client bureau, il suffit alors de lancer la commande "tryton" dans un terminal. Pour utiliser un client web, il est nécessaire d'installer le paquet "SAO" sur sa machine, modifier le fichier de configuration, avant de relancer le serveur.
On peut alors installer de la même manière n'importe quel module officiel de Tryton. L'activation de ces modules peut se faire dans le terminal ou bien dans l'interface.
Points positifs :
- Une installation relativement facile
Points négatifs :
- L'explication d'installation incomplète dans la documentation
- Peu d'indications sur le fait qu'il est possible d'installer un client web, même dans les tutoriels du forum
La customisation
Les tutoriels de customisation et de création de modules customs se trouvent sur le forum.
Au niveau de l'interface, il est possible de modifier le thème de Tryton sur le client web en créant sa propre feuille de style et en l'important dans le fichier HTML générant l'interface du client web.
Pour la création de modules customs, Tryton a créé un outil utilisant cookie-cutter, une librairie permettant d'installer des dossiers selon un template, que l'on peut utiliser pour générer un template de module Tryton. Il faut ensuite activer le module grâce à une commande trytond dans le terminal. Il est alors possible de créer des modèles, créer des relations entre ces modèles, créer des champs calculés, travailler et customiser l'interface du module, etc.
Les tutoriels que nous avons suivi pour concevoir son propre module proposent assez rapidement des fonctionnalités avancées, ce qui peut être perturbant pour un·e débutant·e, tout en laissant entrevoir un potentiel important dans la création de modules.
Points positifs :
- Le cookie-cutter Tryton qui permet de générer très facilement un module
- La facilité de customisation du thème
- De grandes possibilités sur le niveau d'élaboration d'un module custom
Points négatifs :
- Peu de tutoriel orienté débutant·e, la courbe d'apprentissage peut être assez raide
La gestion de permissions des utilisateurs
Il est possible de gérer les rôles et les permissions d'accès depuis les fichiers XML d'un module.
Il est d'abord possible de créer des groupes de permissions et d'attribuer ces groupes à des utilisateurs dans un fichier XML d'un module. Ensuite, on peut déterminer les droits d'accès de ces groupes (y compris de groupes implémentés dans d'autres modules) à des boutons, des actions ou des menus. On peut aussi régler les permissions CRUD d'un modèle, ou les droits de lecture de certains champs du modèle.
Enfin, il est possible de gérer l'accès à certaines données selon certaines conditions. On peut par exemple donner l'autorisation d'écriture seulement si l'utilisateur est le créateur de l'objet.
Points positifs :
- Pouvoir gérer les permissions et groupes de permission par le code
- Une gestion assez fine des permissions sur différents objets Tryton
Les tests
Nous avons déjà parlé de la librairie Proteus. Elle permet de se connecter en tant que client auprès d'un serveur Tryton et d'exécuter ce qu'on appelle des Doctests Python, c'est à dire écrire des évaluations de fonction en une valeur avec le résultat attendu, le tout au format d'une Docstring Python.
L'API Tryton met également à disposition des fonctions de tests unitaires s'exécutant pendant l'utilisation du module. La documentation explique également comment tester des modules qui apportent des modification au coeur de Tryton.
Points positifs :
- La possibilité de faire des tests au niveau du coeur de Tryton
- L'utilisation des Doctests Python
Le déploiement
La chaîne YouTube de Tryton propose une vidéo d'une conférence donnée par un des fondateurs de la Fondation sur le déploiement de Tryton avec Docker. Cette vidéo est la référence principale sur le forum pour toutes les questions concernant le déploiement.
La documentation n'explique pas comment réaliser de déploiement de Tryton, mais les diverses méthodes de déploiement assez génériques peuvent être utilisées.
Points positifs :
- La compatibilité avec les méthodes de déploiement génériques
Les migrations
Un message du forum explique comment réaliser une migration vers la version la plus récente. De manière générale, il suffit de faire un backup de sa base de données, réaliser une installation standard de la nouvelle version, rendre compatible la base de données avec la nouvelle version, et démarrer une nouvelle instance avec la base de données modifiée. Les étapes pour rendre compatible sa base de données sont habituellement décrites dans un message posté sur le forum par les fondateurs de la Fondation à chaque nouvelle version.
Lors d'un changement de version, tous les modules officiels de Tryton sont mis à jour pour la nouvelle version. Mais si on utilise des modules communautaires ou des modules customs, il faudra les modifier manuellement pour les rendre compatibles avec la nouvelle version. Pour ce faire, les releases notes peuvent s'avérer très utiles.
Points positifs :
- La relative facilité de migration
- La publication d'une notice à chaque nouvelle version pour rendre sa base de données compatible avec la nouvelle version
La cohérence entre les versions
L'historique de tous les commits se trouve sur le dépôt Mercurial. Il est exhaustif, mais assez peu lisible tel quel. Cependant, il y a une présentation officielle des nouvelles version sur le forum, avec une description exhaustive et bien illustrée des changements de la nouvelle version, du point de vue utilisateur, administrateur et développeur. Tout cela montre une certaine transparence des fondateurs de Tryton et de la volonté d'inclure le plus possible la communauté dans son développement.
Grâce à ces releases notes, nous avons pu constater que, à part la dernière version qui propose un nouveau thème pour l'interface, les changements d'une version à l'autre sont assez mineurs en ce qui concerne l'interface. De plus, il n'y a pas de déconstruction, ce sont souvent des ajouts et des nouveautés, plutôt que des suppressions ou des remplacements. Cela a pour conséquence que, même s'il y a quand même beaucoup de changements, on n'a a priori pas à réapprendre ce qu'on savait sur Tryton à chaque nouvelle version.
Points positifs :
- La transparence des fondateurs de la Fondation sur les changements de chaque nouvelle version
- Les releases notes sur le forum, très claires et accessibles
- La volonté de ne pas faire de retours en arrière dans le développement de Tryton
Conclusion
Après étude de cet ERP, nous sommes frappés par ses très grandes qualités, à savoir l'engagement des fondateurs dans le logiciel libre, la communauté très active et parfaitement organisée autour de l'outil, la facilité de migration et un développement complètement communautaire. Cependant, Tryton peut sembler en retard sur d'autres ERP opensources sur le plan fonctionnel : le manque de centralisation de la documentation, certaines fonctionnalités peuvent lui faire défaut, et l'interface est encore à améliorer.
Un très grand merci à Cédric Krier et Nicolas Evrard de B2CK, fondateurs de Tryton et de sa Fondation, de nous avoir aidé à mieux connaître cet ERP et d'avoir discuté avec nous des critiques que nous avons formulé !