Trac, un bien bel outil
Par Mathieu Lecarme le mercredi, 12 août 2009, 19:34 - Lien permanent
Trac est un outil de développement collaboratif. Il est souvent vu comme un outil de gestion de bug avec un wiki, mais c'est bien réductif. Trac peut aussi intervenir lors de la phase de développement. Trac comme tout bon logiciel propose quelque chose qui marche "en le sortant du carton", puis des paramètres fins pour le personnaliser, et enfin une utilisation avancée avec ses plugins et son api distante.
Mise en place
Trac s'articule autour d'un VCS, outil de gestion de version de code. Trac a été conçu pour utiliser Subversion, mais via des plugins, il est possible d'utiliser la plupart des outils de gestion de code existants (Git, Mercurial, Bazaar..). Pour simplifier la mise en place, le stockage s'effectue dans une base sqlite, mais les administrateurs consciencieux utiliseront leur base de donnée de prédilection (mysql, postgres) et leurs procédures de sauvegarde. Trac est capable d'être son propre serveur web, ce qui permet de l'essayer facilement, mais il est bien plus efficace accolé à un vrai serveur web, tel lighttpd ou Apache, à qui l'on confiera d'ailleurs l'authentification des utilisateurs. La communication peut se faire en fastcgi, bien plus neutre que mod_python qui est de toutes façons abandonné. A partir d'une installation de Trac, il est possible de gérer plusieurs instances, avec leurs réglages et plugins spécifiques. Il n'existe pas de notion de portail regroupant les différents projets, seul une simple page donne la liste des projets, avec le lien qui va avec. Trac promet l'internationalisation dans une version futur, un patch existe pour coller du français de partout, mais de manière pragmatique, rien n'empêche de mettre du contenu en français dans un Trac anglophone.
Configuration
Une partie des réglages se font dans un fichier plat, la gestion des droits ou des mises à jour se fait en ligne de commande, mais heureusement, la plupart des réglages courants (hors mise en place) se font maintenant via une confortable interface web.
Outils
Trac regroupe un ensemble d'outils cohérents, avec des liens transverses entre eux. La recherche ou la timeline regroupe les informations des différents outils par exemple.
Les droits
Trac ne se souci pas de l'authentification, mais uniquement des droits. Des droits peuvent être assigné à un utilisateur ou à un groupe. Les modules de base et ceux l'on peut installer propose un ensemble de droits, que l'on attribut depuis l'interface web.
Le wiki
L'outil le plus visible est le wiki. Le wiki est une très belle invention, mais comme une tronçonneuse qui s'avère être très efficace pour couper une forêt ou des zombies, c'est aussi très facile de faire des carnages avec. Un wiki est à la fois le tout et le rien, la liberté devient vite confusion et bazar sans un minimum de discipline. Le plugin tags (mots clefs), permet de regrouper de manières transverses des objets, mais l'effort minimum à effectuer est d'avoir une page d'accueil cohérente et disciplinée. Les pages difficilement trouvables seront recommencé et l'information sera dispersé et redondante. Un peu d'arborescence est possible, mais comme il est impossible de déplacer une page de wiki, mieux vaut s'en méfier. La macro qui permet d'afficher la liste des titres dans un bloc en haut de page est vivement conseillé.
A l'usage, le wiki s'avère efficace pour :
- Mise en place des outils de développement et des règles de codages, pour avoir des nouveaux développeurs rapidement efficaces
- Procédure de déploiement à suivre pas à pas, pour que n'importe qui puisse sans stress effectuer une mise en pré production ou même en production sans avoir à téléphoner à quelqu'un d'indisponible.
- Principe de fonctionnement global, que des commentaires dans le code ne peuvent couvrir
- Spécification techniques.
- Spécification fonctionnelles, pour les audacieux.
Les tickets
Pour limiter les dégâts, il vaut mieux commencer par utiliser l'outil de ticket, qui lui est carré. Les tickets sont typés, propose un certain nombre de champs, que l'on peut modifier pour personnaliser son travail. Un ticket a un titre, une description, une sévérité, un état (nouveau, refusé, attribué, clos...), un propriétaire, une version, un produit (un des blocs fonctionnel de l'application par exemple) et un identifiant. Trac propose trois types de tickets : l'enhancement (amélioration), le defect (problème) et la task (tâche). On peut en créer de nouveaux type. Ces trois types correspondent à 3 usages bien différents de l'outil. Les améliorations et défauts font parti de la gestion de bug classique, plutôt prévu pendant la phase de production ou de la finalisation, alors que la tache est prévu pour la phase de développement. le principe de base est simple, un ticket est proposé par un utilisateur (amélioration, problème) ou le chef de projet (tache), il est attribué à une personne qui fait le travail nécessaire, puis clos le ticket. Chaque personne a accès à la liste des tickets ou juste de ses tickets selon le degrés d'autonomie, trié par priorité, et les résouds au fur et à mesure. L'horodatage permet de faire stresser le chef de projet en voyant l'avancé du travail ainsi que sa qualité. Trac propose de faire des requêtes (et de les conserver) sur les tickets. Un certain nombre de requêtes sont proposés, comme la liste des tickets ouverts ou juste mes tickets. En cliquant partout, il est facile de créer de nouvelles requêtes.
Les milestones
L'autre notion structurante de Trac est le milestone, la borne kilométrique. La parabole est simple, le développement est vu comme une route à parcourir, et les bornes, posés régulièrement sur le bord du chemin sont là pour nous dire où nous en sommes. Un milestone regroupe un certain nombre de taches, et doit permettre d'avoir quelque chose de montrable. Un milestone a une date de fin, ce qui permet de montrer quelque chose au client, et de voir si les choix et méthodologie fait sont à remettre en cause ou simplement conservé. Le but du milestone est d'éviter l'effet tunnel, d'avoir 6 mois de travail pour effectuer quelque chose bien différent de ce que l'on avait imaginé et spécifié. Les adeptes du développement agile peuvent utiliser un milestone comme étant un rush, une itération et spécifier le milestone suivant lorsque le premier est terminé, en remettant en cause ou validant les choix techniques faits.
Trac permet d'attribuer des tickets à un milestone, ainsi qu'une date et un descriptif, l'outil de visualisation permet de voir l'avancé (le pourcentage de ticket fermé) avec une barre qui se remplit progressivement de vert.
Les procédures distantes
Pour ceux qui aiment le python et lire du code, il est possible de faire des plugins pour Trac, l'usage d'interface permet de border le travail et de ne pas tout casser. Mais il est nettement plus simple d'utiliser l'API xmlrpc qui permet de scripter les outils de Trac depuis son langage programmation préféré. Le wiki utilise même une norme de faite, permettant ainsi de recycler du code. Eclipse, par exemple, est capable de s'interfacer avec Trac. il est ainsi possible de générer de la documentation ou d'afficher de manière complexe et graphique des tickets. On peut aussi imaginer un affichage intégré à un site web qui permettra de remplir directement des tickets sur un serveur Trac distant.

