Developer FAQ
Get/update a developer CVS version
Make a backup of your configuration file and data
If you have already a working installation, backup your file htdocs/conf/conf.php and your documents directory. It more secure if you make a mistake later.
Get last version of sources by download
This method allows you to get CVS version of main development branch (called HEAD). This operation consist to get last version of Dolibarr files that are packaged each night into a zip file. For this, go on page with last CVS version of the day.
New files will overwrite old ones.
Get last version of sources using CVS
Another way to get last CVS version is to go use CVS tools. You can use the CVS server in anonymous mode, if you have a CVS client (CVS command line tool with Linux, or TortoiseCVS for example with Windows).
The command to get a full snapshot (with no CVS hidden files) in working directory is:
CVSROOT=:pserver:anonymous@cvs.savannah.nongnu.org:/cvsroot/dolibarr export CVSROOT cvs -q checkout -r HEAD dolibarr
HEAD means we want last version of files (so last development files).
The command to update files that was caught with previous CVS command: With linux (script shell):
CVSROOT=:pserver:anonymous@cvs.savannah.nongnu.org:/cvsroot/dolibarr export CVSROOT cvs -q update -P -d
With Windows and Tortoise cvs
"C:\Program Files\CVSNT\cvs.exe" -q update -P -d CVSROOT=:pserver:anonymous@cvs.savannah.nongnu.org:/cvsroot/dolibarr
And to set back all your working directory with same files than on CVS server repository (canceling your local changes): With linux (script shell):
CVSROOT=:pserver:anonymous@cvs.savannah.nongnu.org:/cvsroot/dolibarr export CVSROOT cvs -q update -P -C -d
With Windows and Tortoise cvs
"C:\Program Files\CVSNT\cvs.exe" -q update -P -C -d CVSROOT=:pserver:anonymous@cvs.savannah.nongnu.org:/sources/dolibarr
May be, you will have to change permissions on directories or files after to make then readable by users of your Dolibarr web server.
Get files for a CVS branch
If you want to work on a particular version (with its patches), you must follow same process but you must replace HEAD by name of the branch. For example DOLIBARR_2_2_BRANCH for branch 2.2 or DOLIBARR_2_4_BRANCH for branch 2.4.
Restore your configuration
Restore configuration file (./htdocs/conf/conf.php) with backup made previously if file has been erased/removed.
Update database
Next step is ti upgrade your database. For this, all you have to do is call page http://myrootdolibarr/install/ and choose option "Update".
This process was built to work whatever is start step and can be run and rerun several times with no risks.
Other repository
A CVS repository for non officials modules is also available on Sourceforge:
:ext:youlogin@dolibarr.cvs.sourceforge.net:/cvsroot/dolibarr
Start a development
Read first completely the Developer documentation to know all rules a developer must respect. You can also read following FAQ.
How to create a new skin
For this, see page Skins
For this, see page Menus system
How to develop my own feature module
For this, see page Module development
How to add/complete a translation
For this, see page Translator documentation
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:
update llx_facture set facnumber=concat('FA',substr(facnumber,4,4),'-',substr(facnumber,8))
where facnumber like 'F%' and facnumber not like 'FA%';
Par exemple, pour passer d'un modele FAYYMM999 à Terre (FAYYMM-999), vous pouvez exécuter la requête suivante:
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 '%-%';
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é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 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 cygwin sous Windows) de la manière suivante:
diff -Naur --exclude=CVS --exclude="*.patch" --exclude=".#*" --exclude="*~" --exclude="*.rej"
--exclude="*.orig" --exclude="*.bak" --exclude=conf.php --exclude=documents
ancien_rep nouveau_rep > mypatch.patch
Un script ksh réalisant cette commande est disponible dans le répertoire build/patch. Envoyer votre patch sur la ML à l'adresse dolibarr-dev@nongnu.org. 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
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é
Comment packager/livrer un module pour utilisation
Voir la page Developpement module - 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.
Les grades des contributeurs au projet Dolibarr sont les suivants:
* Soldat
La première chose qu'une personne désireuse d'aider 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 Soldat (Votre grade est au niveau Soldat). Et tout lire, c'est pas le plus facile...
Ce grade s'obtient sans validation supérieure. C'est un grade de principe, de départ.
* Chasseur
L'étape suivante consiste à soumettre des patch, en commençant par des simples, soit sur la Mailing List dev (voir 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.
* Z-6PO
Si vous parlez couramment une langue non ou mal traduite dans Dolibarr, un Jedi ou Yoda vous offrira un accès CVS pour vous permettre de faire des commits sur le CVS du projet à condition qu'il soit limité à des objectifs de traductions. Ce grade peut donc s'obtenir assez vite.
* 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 de nombreux patch de qualité satisfaisante ont été envoyée, qu'un Yoda en place vous autorisera à réaliser des commits CVS pour un motif étendu de la traduction à tout correctif. 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 soient 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
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.
* Et Dark Vador ?
Il existe hélas. Les membres de l'empire sont les parasites qui polluent 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. Certains sont très très fort en mauvaise foie ou mauvais ton. Ce sont des Dark Vador. Heureusement, statistiquement, on ne constate l'apparition et la mort que d'un seul Dark Vador par an environ...
Current team
See page Dolibarr project to know list of current people that work on Dolibarr, with their current grade.