Les standards de l’OCA, expliqués aux développeurs
Des milliers de modules existent déjà, relus par des pairs et portés de version en version. Les règles qui les régissent évoluent avec Odoo : ce résumé dit comment je m’en sers, et renvoie à l’OCA pour le détail.
L’OCA, c’est quoi ?
L’Odoo Community Association publie des modules libres, rangés par thème dans des dépôts (ventes, stock, comptabilité…), avec une branche par version d’Odoo. Chaque module est relu par des pairs avant d’être accepté, puis porté de version en version. Son catalogue les classe par domaine ; ses règles de contribution disent comment un module doit être écrit, et c’est là qu’il faut les lire, pas ici : elles évoluent avec Odoo.
En résumé
-
Réutiliser avant d’écrire
Avant d’écrire une ligne, trois questions : Odoo le fait-il déjà ? Le projet le fait-il déjà ? L’OCA le fait-elle déjà ? Un module qui existe est un module qu’on n’écrit pas et qu’on n’entretient pas seul. Les modules de l’OCA sont pris à la version exacte du projet, et leur code n’est jamais modifié sur place : un contournement vit dans un module à soi, un correctif part à l’OCA s’il en vaut le temps.
-
Les conventions, telles que l’OCA les écrit
Comment nommer un module, organiser ses fichiers, écrire son manifeste, livrer ses droits d’accès, rédiger un message de commit : les règles de contribution de l’OCA le disent, et des contrôles automatiques, lancés avant chaque commit, les vérifient. Je les suis telles qu’elles sont : c’est ce qui fait qu’un autre développeur Odoo lit le code sans l’avoir écrit.
-
Les licences, lues avant d’écrire
Chaque module a une licence, et toutes ne vont pas ensemble : un module libre sous AGPL ne peut dépendre que de modules libres, et ceux d’Odoo Enterprise ne le sont pas. On lit la licence de chaque dépendance avant de choisir la sienne, et un outil le vérifie dans le dépôt.
-
Contribuer quand ça sert
Un module assez générique pour servir à d’autres peut être proposé à l’OCA : une branche, un seul commit, une demande de fusion relue par des pairs. Je ne promets pas que tout remonte : quand un correctif local suffit, il reste local. Mes contributions sont publiques.
Avant d’écrire une ligne
Trois questions, dans l’ordre, puis on écrit.
-
Odoo le fait déjà ?
Souvent, dans un coin de la configuration, ou dans un module standard pas encore installé.
-
Le projet le fait déjà ?
Un module existant, à étendre par héritage plutôt qu’à doubler.
-
L’OCA le fait déjà ?
Le catalogue, puis une recherche dans les dépôts de la version cible.
-
Alors on écrit
Comme l’OCA, pour que ça puisse y retourner.
Pour aller plus loin
Les pages de l’OCA qui font foi, à lire avant toute contribution :
- Les règles de contribution : structure d’un module, Python, XML, tests, commits, revue.
- Le catalogue des modules, par domaine et par version.
- Comment contribuer : l’accord de contribution, le cycle de revue, les dépôts.
- OpenUpgrade : la migration des bases de version en version.
Ce que ça coûte
Lire avant d’écrire, et accepter qu’un module existant fasse 80 % du besoin. Des contrôles qui refusent un commit. Une proposition à l’OCA qui attend des semaines de revue. C’est le prix d’un code qui survit à son auteur.
Vous faites autrement ?
Un désaccord, une meilleure façon de faire, un cas qui ne rentre pas dans ces règles : écrivez-moi, je lis tout.
Les autres méthodologies
-
Le développement modulaire, expliqué aux développeurs
Les règles, un exemple en trois modules et deux extraits de code, pour qui débute avec Odoo.
-
Les tests automatisés, expliqués aux développeurs
Les règles, un bug pris en quatre étapes et un test de dix lignes, pour qui débute avec Odoo.