Difference between revisions of "Developer FAQ"

From Dolibarr ERP CRM Wiki
Jump to navigation Jump to search
m (New page: {{ToTranslate}} {{TemplateDocDev}} == Récupérer/mettre à jour une version CVS développeur == '''Effectuer une sauvegarde de ses données et de sa configuration''' Si vous avez déjà...)
 
 
(206 intermediate revisions by 15 users not shown)
Line 1: Line 1:
{{ToTranslate}}
+
<!-- BEGIN origin interlang links -->
{{TemplateDocDev}}
+
<!-- You can edit this section but do NOT remove these comments
 +
    Links below will be automatically replicated on translated pages by PolyglotBot -->
 +
[[fr:FAQ_Développeur]]
 +
[[de:Entwickler_FAQ]]
 +
[[es:FAQ_Desarrolladores]]
 +
[[zh:开发者常见问题解答]]
 +
<!-- END interlang links -->
  
== Récupérer/mettre à jour une version CVS développeur ==
+
[[Category:FAQ EN]]
'''Effectuer une sauvegarde de ses données et de sa configuration'''
+
{{TemplateDocDevEn}}
 +
This page contains some frequently asked questions related to Dolibarr development. For frequently asked questions on other topics, read page [[User FAQ]].
  
Si vous avez déjà une installation en place, sauvegarder votre fichier htdocs/conf/conf.php au cas ou.
+
=How to be an official developer=
  
'''Récupération dernière version des sources par download'''
+
In the galaxy of the Dolibarr project, there are several actors with different levels / grades.
 +
The number of developers is important so contributions and changes must be controlled and validated (both for functional needs and for coding).
 +
For this reason, the write access on the source (GIT) is limited and governed by an organization that is described in the following.
 +
Each developer has a ''grade'' depending on seniority and the past. The level of authorization of a person on the project increases with the stages of promotion in grade.
  
Cette méthode permet de récupérer la version CVS de la branche de développement principale (appelée HEAD). L'opération consiste à récupérer la dernière version des fichiers de Dolibarr regroupés toutes les nuits dans un zip.
+
The course of a Dolibarr developer passes through these steps, which are classified by a title familiar to fans of science fiction. Here are the steps.
Pour cela, voir la [http://www.dolibarr.org/index.php?option=com_docman&task=cat_view&gid=64&&Itemid=36 version CVS du jour].
+
It is important to understand that this organization has the sole purpose of improving the quality of Dolibarr and it is necessary that it is rigorously used.
Les nouveaux fichiers doivent écraser les anciens.
 
  
'''Récupération dernière version des sources par CVS'''
+
The ranks of contributors to the Dolibarr project, and what to do to reach this rank, are defined into page [[Dolibarr_Project#Developers_roles|Dolibarr Project]] in chapter '''Developers roles'''.
  
Pour récupérer la dernière version en cours de développement, vous pouvez aussi directement utiliser [http://savannah.nongnu.org/cvs/?group=dolibarr le serveur CVS en mode anonyme], si vous disposez d'un client CVS (commande CVS sous Linux, ou TortoiseCVS par exemple sous Windows).
+
=Current team=
 +
See page [[Dolibarr Project]] to know list of current people that work on Dolibarr, with their current grade.
  
La commande permettant de récupérer un snapshot intégral (sans suivi cvs) dans le répertoire courant est:
+
=Start a development=
''
+
Read first '''completely''' the [[Developer documentation]] to know all rules a developer must respect.
CVSROOT=:pserver:anonymous@cvs.savannah.nongnu.org:/sources/dolibarr
+
You can also read the following FAQs.
export CVSROOT
 
cvs -q checkout -r HEAD -d ./ dolibarr/
 
''
 
HEAD signifie qu'on veut la dernière version de la version en cours de développement.
 
  
La commande permettant de mettre à jour localement une copie de travail CVS qui a déjà été rappatriée:
+
=Get/update project sources=
''Sous linux (script shell):
+
See page [[FAQ Get,update project sources]].
CVSROOT=:pserver:anonymous@cvs.savannah.nongnu.org:/sources/dolibarr
 
export CVSROOT
 
cvs -q update -P -d
 
Sous Windows avec Tortoise cvs
 
"C:\Program Files\CVSNT\cvs.exe" -q update -P -d
 
CVSROOT=:pserver:anonymous@cvs.savannah.nongnu.org:/sources/dolibarr''
 
Et pour remettre au propre votre copie locale en annulant vos modifications sur les fichiers intégrés au cvs:
 
"C:\Program Files\CVSNT\cvs.exe" -q update -P -C -d
 
CVSROOT=:pserver:anonymous@cvs.savannah.nongnu.org:/sources/dolibarr
 
  
Si besoin, modifiez les droits de propriétaire des dossiers, pour que le serveur y ait accès.
+
=How to create a new skin=
 +
For this, see page [[Skins]]
  
'''Récupération d'une autre branche par CVS'''
+
=How to develop my own module=
 +
To develop your own numbering module, see [[Create numeration module]].
  
Si vous désirez une version particulière (avec ces patchs), il vous faut suivre la même procédure que ci-dessus mais en remplaçant HEAD par le nom de la branche.
+
To develop your own document model, PDF or other, see [[Create a PDF document template]] or [[Create an ODT document template]].
Par exemple DOLIBARR_2_2_BRANCH pour la branche 2.2 ou DOLIBARR_2_4_BRANCH pour la branche 2.4.
 
  
'''Restaurer sa configuration'''
+
To develop your own business module (screens, tables), see page [[Module development]].
  
Restaurer le fichier de configuration (./htdocs/conf/conf.php) d'après sa sauvegarde si vous l'avez écrasé.
+
=How to add/complete a translation=
 +
For this, see page [[Translator documentation]]
  
'''Mise a jour de la base'''
+
=Change my numbering system after start=
 +
If the new numbering system does not conflict with the old one, to change the numbering rule, just go to menu Setup - Modules - Invoice setup and choose the new numbering rule in the list.
  
La deuxième étape consiste à migrer la base. Pour celà, il suffit d'appeler la page
+
If the new rule can create conflicts with old one, it will be necessary to rename old existing references. This can be done by a SQL request.
http://maracinedolibarr/install/
+
For example, to go from numbering module Jupiter (FYYYYMM99) to Terre (FAYYMM-999), you can run the following request:
et choisir l'option "Mise à jour".
+
<syntaxhighlight lang="sql">
 
 
Cette procédure de migration/mise à jour est conçue pour fonctionner quel que soit l'état de départ et peut être repassée plusieurs fois sans risque.
 
 
 
== Démarrer le développement ==
 
 
 
Consulter '''intégralement''' la [[Documentation Développeur]] pour assimiler toutes les règles et principes imposées aux développeurs.
 
Vous pouvez aussi consulter les FAQ suivantes.
 
 
 
== Comment créer un nouveau theme ==
 
Voir pour cela la page [[Themes]]
 
 
 
== Comment développer mon propre système de menu ==
 
Voir pour cela la page [[Système_de_menus]]
 
 
 
== Comment développer mon propre module ==
 
Voir pour cela la page [[Developpement_module]]
 
 
 
== Comment ajouter ou compléter une traduction ==
 
Voir pour cela la page [[Documentation_traducteur]]
 
 
 
== Changer mon système de numérotation des factures en cours de route ==
 
Si le nouveau système de numérotation n'entre pas en conflit avec l'ancien, il suffit d'aller dans le menu Configuration - Modules - Configuration factures et prendre un nouveau modèle dans la liste.
 
Si le nouveau système rentre en conflit, il est nécessaire de renuméroter vos références existantes. Cela peut-être fait avec une requête SQL.
 
Par exemple, pour passer de Jupiter (FYYYYMM99) à Terre (FAYYMM-999), vous pouvez exécuter la requête suivante:
 
<pre>
 
 
update llx_facture set facnumber=concat('FA',substr(facnumber,4,4),'-',substr(facnumber,8))
 
update llx_facture set facnumber=concat('FA',substr(facnumber,4,4),'-',substr(facnumber,8))
 
where facnumber like 'F%' and facnumber not like 'FA%';
 
where facnumber like 'F%' and facnumber not like 'FA%';
</pre>
+
</syntaxhighlight>
  
Par exemple, pour passer d'un modele FAYYMM999 à Terre (FAYYMM-999), vous pouvez exécuter la requête suivante:
+
For example, to rename references from model FAYYMM999 to Terre (FAYYMM-999), you can run the following request:
<pre>
+
<syntaxhighlight lang="sql">
 
update llx_facture set facnumber=concat('FA',substr(facnumber,3,4),'-',substr(CONCAT('0000',substr(facnumber,7)),-4))
 
update llx_facture set facnumber=concat('FA',substr(facnumber,3,4),'-',substr(CONCAT('0000',substr(facnumber,7)),-4))
 
where facnumber like 'FA%' and facnumber not like '%-%';
 
where facnumber like 'FA%' and facnumber not like '%-%';
</pre>
+
</syntaxhighlight>
 
 
 
 
== Soumettre un patch, amélioration ou participer au développement ==
 
 
 
* '''Avec accès CVS en écriture '''
 
A ce jour, les accès en écriture au CVS sont restreints (le nombre de commit étant déjà suffisamment dynamique). Si vous bénéficiez à l'heure actuelle d'un accès CVS en écriture, utilisez-le et à condition que ce qui est commité corresponde bien à votre grade de développeur Dolibarr (Voir [[FAQ_D%C3%A9veloppeur#Comment_devenir_d.C3.A9veloppeur_officiel|FAQ Développeur - Devenir développeur officiel]] pour les différents grades).
 
Si, vous n'avez pas accès au CVS (vous êtes donc au grade de membre ou chasseur de l'alliance Dolibarr), il est nécessaire de suivre la procédure qui suit...
 
 
 
* '''Sans accès CVS en écriture'''
 
Sans accès CVS en écriture (sans compte développeur savannah), il est nécessaire de fournir par mail, votre fichier patch.
 
 
 
Sous tout OS:
 
 
 
Voici la ''méthode Pro'' selon laquelle travailler pour pouvoir générer un tel fichier patch:
 
 
 
- Avoir un répertoire qui contient la version de Dolibarr de référence (résultat de la mise à jour CVS ou bien tout simplement l'arborescence résultant de la décompression d'un snapshot tgz de Dolibarr). On appellera ce répertoire '''ancien_rep'''. Vous pouvez récupérer le snapshot de la version de dev en cours sur le  [http://www.dolibarr.org/component/option,com_docman/task,cat_view/gid,50/Itemid,36/lang,en/ site officiel de Dolibarr].
 
 
 
- Avoir un autre répertoire qui contient l'arborescence de Dolibarr mais dans laquelle vous faites ou avez fait vos modifications. On appellera ce répertoire '''nouveau_rep'''.
 
 
 
Pour générer le fichier patch, il suffit alors de lancer la commande '''diff''' (en standard sous Linux, fourni dans [http://www.cygwin.org cygwin] sous Windows) de la manière suivante:
 
<pre>
 
diff -Naur --exclude=CVS --exclude=".#*" --exclude="*~" --exclude='*.rej' --exclude='*.orig'
 
--exclude="*.bak" --exclude=conf.php --exclude=documents  ancien_rep  nouveau_rep  > fichier.patch
 
</pre>
 
Envoyer votre patch sur la ML.
 
L'intégration de votre patch n'est toutefois pas garantie, pas plus que le délai, mais si le patch est réalisé en suivant rigoureusement cette procédure, il a de forte chance d'être au moins testé (dans le cas contraire les chances sont proches de 0).
 
 
 
Sous Windows:
 
 
 
Si vous êtes sous Windows, une ''méthode moins Pro'' mais qui donne le même résultat est la suivante. Installer l'excellent outil open source de comparaison Winmerge qui sait fabriquer des patchs au format ''diff -Naur''. Pour cela, comparer avec Winmerge le fichier référence et le fichier modifié et choisir dans le menu ''"Tools - Generate patch"'' (''Générer des retouches'' en version française). Saisir un nom de fichier comme ''"resultat.patch"'', cocher la case ''"Append"'' et choisir l'option ''"Format Unified"'' (''Style : unifié'' en version française). Cliquer sur ''"Ok"''.
 
Éventuellement recommencer pour chaque fichier modifié.
 
Au final, on obtient un beau fichier ''resultat.patch'' qui contient toutes les modifications au bon format.
 
 
 
Au lieu de rechercher manuellement vos fichiers, si vous avez installé conjointement ''TortoiseCVS'' et ''Winmerge'', vous pouvez vous contenter de votre version modifiée sur votre ordinateur, et de la version CVS en ligne. Sous l'explorateur Windows, faites un clic droit sur le fichier qui doit être patché, et choisissez "CVS comparer" (pas WinMerge qui se trouve quelques lignes plus bas). Tortoise va lui-même lancer WinMerge. Puis reprenez la procédure décrite ci-dessus.
 
 
 
'''Appliquer un patch'''
 
Si votre patch n'a pas encore été appliqué, mais que vous souhaitez de votre coté l'appliquer sur votre serveur linux fraichement mis à jour depuis la CVS, cela est possible grace à l'utilitaire patch.
 
En admettant que vous avez créé votre patch à partir du répertoire htdocs de votre copie locale du cvs modifiée par vos soins, et que vous avez envoyé votre patch (monfichier.patch) sur le serveur dans le dossier patchs situé au meme niveau que votre dossier htdocs distant, la commande suivante devrait faire l'affaire (executée depuis le dossier patchs):
 
patch -u -p0 -d ../htdocs < monfichier.patch
 
<nowiki>Pour information: -p0 permet d'utiliser le chemin entier tel que mentionné dans le fichier de patch (-pn en retire les n premiers niveau de l'arborescence)
 
-d permet de préciser le chemin relatif vers le dossier htdocs à patcher.
 
< permet de donner le chemin vers le fichier source à utiliser (le patch en mode unifié)
 
-u permet de préciser que le patch est en mode unifié</nowiki>
 
 
 
== Comment packager/livrer un module pour utilisation ==
 
Voir la page [[Developpement_module#Cr.C3.A9er_un_package_pour_livrer_et_installer_votre_module|Developpement moduel - Créer un package pour livrer et installer votre module]]
 
 
 
== Comment devenir développeur officiel ==
 
 
 
Dans la galaxie du projet Dolibarr, il existe plusieurs intervenants de différents niveaux/grades.
 
Le nombre de développeurs et contributions est important, hors tout projet qui veut atteindre un certains niveau de qualité se doit d'avoir une gestion contrôlée et des modifications validées des évolutions, aussi bien au niveau des besoins fonctionnels que du code.
 
Pour cette raison, les accès en écriture sur les sources (serveur CVS) sont limités et régies par une organisation qui est décrite dans les lignes qui suivent.
 
Chaque développeur a un '''grade''' qui dépend de son ancienneté et de ces contributions passées. Le niveau d'habilitations d'une personne sur le projet augmente avec les étapes de promotion de grade.
 
 
 
Le cursus d'un développeur Dolibarr passe donc par ces étapes, que l'on classe par un titre familié aux adeptes de sciences fictions. Voici ces étapes.
 
Il est important de comprendre que cette organisation a pour seul but d'améliorer la qualité de Dolibarr et qu'il est nécessaire qu'elle soit rigoureusement respectée afin d'attendre ce but. Ne soyez donc pas offensé si, en tant que développeur, vous ne pouvez disposer d'un accès CVS en écriture avant un certain délai.
 
 
 
 
 
* '''Membre de l'alliance'''
 
 
 
La première chose qu'une personne désireuse d'aide doit faire et d'abord se familiariser avec les règles et normes de développements.
 
En lisant toute la [[Documentation Développeur]], vous faites preuve de volonté suffisante pour devenir automatiquement '''Membre''' de l'alliance Dolibarr (Votre grade est au niveau '''Membre'''). Et tout lire, c'est pas le plus facile...
 
 
 
Ce grade s'obtient sans validation supérieure.
 
 
 
 
 
* '''Chasseur de l'alliance'''
 
 
 
L'étape suivante consiste à soumettre des patch, en commençant par des simples, soit sur la Mailing List dev (voir [[FAQ_D%C3%A9veloppeur#Soumettre_un_patch.2C_am.C3.A9lioration_ou_participer_au_d.C3.A9veloppement|FAQ Développeur]] pour la procédure), soit sur le forum (Mailing List préférée).
 
 
 
A votre première soumission acceptée (incluse dans le CVS par un Amiral ou Jedi), vous entrez alors automatiquement dans la famille des '''Chasseurs''' de l'alliance Dolibarr.
 
 
 
Le nombre de chasseurs n'est pas limité. Plus, il y en aura, plus on sera fort.
 
Les chasseurs représentent la force vive principale de l'alliance Dolibarr.
 
 
 
 
 
* '''Amiral de l'alliance'''
 
 
 
Ce n'est qu'au bout d'un temps variable (qui peut être très long) au rang de Chasseur, et si la qualité des patch qui ont été envoyée est satisfaisante, qu'un Yoda en place vous offrira un accès CVS direct.
 
Vous êtes devenu un '''Amiral''' de l'alliance Dolibarr.
 
 
 
Ce titre ne se demande pas, il s'obtient par décision ou proposition d'un '''Jedi''' ou '''Yoda''' qui estime que vous avez soumis suffisamment de patch pour être un sérieux '''Amiral'''.
 
L'accès CVS d'un '''Amiral''' doit cependant n'être utilisé que pour commiter soit des traductions, soit des corrections de bugs déclarées sur Savannah ou le forum (que ces corrections soit personnelles ou issues d'un patch soumis par un '''Chasseur''').
 
Tout commit CVS doit ainsi obligatoirement inclure, dans la description (le champ log de commit), le numéro du bug Savannah corrigé OU le titre du message du forum signalant le problème. Seul une traduction échappe à cette contrainte (pas de restrictions pour les traductions). Le non respect de cette contrainte, peut provoquer une rétrogradation au rang de '''Chasseur'''.
 
Pour la soumission de nouvelles fonctionnalités, il faut donc obligatoirement continuer sur le principe de patchs envoyés sur la ML.
 
 
 
L'obtention du grade d'Amiral est toutefois rare car limité. La qualité de Dolibarr ne pouvant être atteinte que par un nombre d'Amiraux contrôlé, ce qui n'empêche pas d'avoir un nombre de
 
développeurs (Chasseurs) très important (grâce au système de patch).
 
 
 
 
 
* '''Jedi'''
 
 
 
C'est encore au bout d'un temps variable (surement le plus long de tous) au rang d'Amiral, et si la qualité des patch qui ont été envoyée est satisfaisante, qu'un Yoda vous signalera que vous êtes autorisé à réaliser des commits sans restrictions de fonctionnalités, à condition d'avoir cependant l'aval de principe d'un Maitre Yoda à qui vous aurez expliquer la fonctionnalité.
 
Il peut toutefois y avoir une restriction temporaire définie par un Yoda pour raison de release proche.
 
Vous êtes alors devenu un '''Jedi'''.
 
 
 
Ce titre ne se demande pas, il s'obtient par proposition d'un autre Jedi ou d'un Yoda.
 
 
 
Ce privilège est toutefois exceptionnel. La qualité de Dolibarr ne pouvant être atteinte
 
que par un nombre de Jedi contrôlé, ce qui n'empêche pas d'avoir un nombre de
 
développeurs (Chasseurs) très important (grâce au système de patch).
 
 
 
  
* '''Yoda'''
+
=Submit a patch, work and help on Dolibarr development=
 +
If you want to know what you can do to start or help Dolibarr development, read instead chapter [[Developer_FAQ#How_to_be_an_official_developer]]. If you already read it and want to distribute a patch, this chapter is for you.
  
Au nombre de 1 à 5, être un '''Yoda''', c'est assurer la gestion globale du développement du projet. Ce rang s'obtient par succession, suite au départ d'un Yoda qui se retire, par nomination directe ou vote organisé par le Yoda partant.
+
*If you have Yoda grade (See [[Dolibarr_Project#Developers_roles]] for information on different grade), you have a direct GIT write access. So just use it to commit your changes.
  
 +
*Because you probably don't have this role (your grade is [[Dolibarr_Project#Developers_roles|Jedi]] or [[Dolibarr_Project#Developers_roles|Admiral]] or [[Dolibarr_Project#Developers_roles|Soldier]]), it is necessary to use the "Fork" feature of GitHub. Then you can make a "Pull Request" from GitHub to ask to have your patch merged into develop branch. More information on [[FAQ_Get,update_GIT_project_sources]] and https://github.com/Dolibarr/dolibarr/blob/develop/.github/CONTRIBUTING.md
  
 +
=How to package and deploy a module=
 +
See page [[Module development]].
  
...Et Dark Vador alors ?
+
This process works also to generate a package to submit it on the https://www.dolistore.com market place.
  
Il existe. Dans la galaxie Dolibarr, on qualifie de Dark Vador, le parasite qui pollue le forum ou la mailing-list de messages ou critiques non constructives, qui ralentissent le développement de Dolibarr plutôt que d'offrir des critiques constructives qui aident à progresser. La mauvaise foie ou le mauvais ton est souvent de rigueur chez les Dark Vador...
+
=How to be informed on news and what happens on Dolibarr project ?=
Heureusement, statistiquement, on ne constate l'apparition et la mort que d'un seul Dark Vador par an environ...
+
See page [[FAQ How to be informed on news about Dolibarr project ?]]
  
 +
=Migrate my Mysql database to PostgreSQL=
 +
See page [[FAQ Migrate my Mysql database to PostgreSQL]]
  
Voir la page [[Le projet Dolibarr]] pour connaitre la liste des personnes à chaque grade actuellement.
+
=What and how is the release process=
 +
See page [[FAQ Release process]]
 +
[[Category:Development]]

Latest revision as of 11:11, 14 February 2025

This page contains some frequently asked questions related to Dolibarr development. For frequently asked questions on other topics, read page User FAQ.

How to be an official developer

In the galaxy of the Dolibarr project, there are several actors with different levels / grades. The number of developers is important so contributions and changes must be controlled and validated (both for functional needs and for coding). For this reason, the write access on the source (GIT) is limited and governed by an organization that is described in the following. Each developer has a grade depending on seniority and the past. The level of authorization of a person on the project increases with the stages of promotion in grade.

The course of a Dolibarr developer passes through these steps, which are classified by a title familiar to fans of science fiction. Here are the steps. It is important to understand that this organization has the sole purpose of improving the quality of Dolibarr and it is necessary that it is rigorously used.

The ranks of contributors to the Dolibarr project, and what to do to reach this rank, are defined into page Dolibarr Project in chapter Developers roles.

Current team

See page Dolibarr Project to know list of current people that work on Dolibarr, with their current grade.

Start a development

Read first completely the Developer documentation to know all rules a developer must respect. You can also read the following FAQs.

Get/update project sources

See page FAQ Get,update project sources.

How to create a new skin

For this, see page Skins

How to develop my own module

To develop your own numbering module, see Create numeration module.

To develop your own document model, PDF or other, see Create a PDF document template or Create an ODT document template.

To develop your own business module (screens, tables), see page Module development.

How to add/complete a translation

For this, see page Translator documentation

Change my numbering system after start

If the new numbering system does not conflict with the old one, to change the numbering rule, just go to menu Setup - Modules - Invoice setup and choose the new numbering rule in the list.

If the new rule can create conflicts with old one, it will be necessary to rename old existing references. This can be done by a SQL request. For example, to go from numbering module Jupiter (FYYYYMM99) to Terre (FAYYMM-999), you can run the following request:

update llx_facture set facnumber=concat('FA',substr(facnumber,4,4),'-',substr(facnumber,8))
where facnumber like 'F%' and facnumber not like 'FA%';

For example, to rename references from model FAYYMM999 to Terre (FAYYMM-999), you can run the following request:

update llx_facture set facnumber=concat('FA',substr(facnumber,3,4),'-',substr(CONCAT('0000',substr(facnumber,7)),-4))
where facnumber like 'FA%' and facnumber not like '%-%';

Submit a patch, work and help on Dolibarr development

If you want to know what you can do to start or help Dolibarr development, read instead chapter Developer_FAQ#How_to_be_an_official_developer. If you already read it and want to distribute a patch, this chapter is for you.

  • If you have Yoda grade (See Dolibarr_Project#Developers_roles for information on different grade), you have a direct GIT write access. So just use it to commit your changes.

How to package and deploy a module

See page Module development.

This process works also to generate a package to submit it on the https://www.dolistore.com market place.

How to be informed on news and what happens on Dolibarr project ?

See page FAQ How to be informed on news about Dolibarr project ?

Migrate my Mysql database to PostgreSQL

See page FAQ Migrate my Mysql database to PostgreSQL

What and how is the release process

See page FAQ Release process