interfaçage du bugtracker debian pour mylyn

Transcription

interfaçage du bugtracker debian pour mylyn
Semestre 2008/2009 – TELECOM SudParis
PFE
INTERFAÇAGE DU BUGTRACKER DEBIAN
POUR MYLYN
Projet de Fin d’Etudes encadré par M. BAC et M. BERGER
Jing Hu
Xavier Martin
Carole Riffault
Interfaçage du bugtracker Debian pour Mylyn – Rapport
Introduction
Il est souvent établi que la réalisation d’un logiciel, qu’il soit à des fins commerciales ou
communautaires, est constituée à 60% de maintenance. Les environnements de développement
intégré (IDE) ont bien compris l’importance d’outils de détection de bugs et en intègrent
généralement dans leur solution.
Parmi ces IDE, Eclipse1, initié par IBM et maintenue par la Fondation Eclipse, est l’une des
plateformes de développement les plus utilisées actuellement. Bien implantée dans le monde de
l’Open Source, elle a su développer autour d’elle une communauté active de développeurs. Sa
politique stricte de méthodes d’ajout de fonctionnalités via des plugins architecturés selon les
recommandations de la norme OSGI2 permet des développements robustes.
Un système de suivi de bugs est une application informatique qui permet de soumettre des
défauts de fonctionnement rencontrés dans un logiciel et d’assurer un suivi de ceux-ci.
Mylyn un des sous-systèmes d’Eclipse qui permet au programmeur de gagner en efficacité ; il
lui donne la possibilité d’accéder à un système de suivi de bugs et d’éditer son contenu, sans quitter
l’environnement de développement. Il joue le rôle d’assistant du programmeur.
Dans ce rapport, nous verrons tout d’abord les objectifs du projet qui nous a été confié puis la
manière dont nous avons choisi de le traiter. Seront ensuite détaillés le fonctionnement du système
de suivi de bugs de Debian et de Mylyn, et comment créer un connecteur pour les faire
communiquer entre eux. Une partie abordera les difficultés rencontrées durant ce projet. Enfin, la
liste de la documentation créée et mise à disposition sera détaillée.
1
http://www.eclipse.org/
2
http://www.osgi.org/
2
Interfaçage du bugtracker Debian pour Mylyn – Rapport
Sommaire
Introduction ................................................................................................................................. 2
Sommaire .................................................................................................................................... 3
1.
2.
3.
4.
5.
Présentation du projet....................................................................................................... 4
1.1.
Contexte .................................................................................................................... 4
1.2.
Enoncé....................................................................................................................... 5
1.3.
Objectifs précis.......................................................................................................... 5
Mise en place du projet ..................................................................................................... 6
2.1.
Organisation et outils................................................................................................ 6
2.2.
Les connecteurs existants ......................................................................................... 7
2.3.
Architecture de communication schématisée .......................................................... 7
2.4.
Analyser le BTS Debian et Mylyn .............................................................................. 8
Le BTS Debian .................................................................................................................... 9
3.1.
Qu’est-ce que c’est ?................................................................................................. 9
3.2.
Son fonctionnement ................................................................................................. 9
Mylyn ............................................................................................................................... 11
4.1.
L’articulation du code ............................................................................................. 12
4.2.
La gestion des tâches .............................................................................................. 13
4.3.
La communication................................................................................................... 18
Bilan du projet ................................................................................................................. 19
5.1.
Les difficultés rencontrées ...................................................................................... 19
5.2.
Justification de la révision des objectifs ................................................................. 19
5.3.
La documentation laissée à disposition .................................................................. 19
Conclusion ................................................................................................................................. 21
Annexes ..................................................................................................................................... 22
Cas d'utilisation : le connecteur Mantis ................................................................................ 22
Les deux attributs majeurs du bug sous Debbug : l'étiquette et la sévérité ........................ 24
3
Interfaçage du bugtracker Debian pour Mylyn – Rapport
1. Présentation du projet
1.1. Contexte
Pour aider à la gestion et surtout à la maintenance des projets, différents systèmes de suivi de
bugs ont été mis en place.
Un bug tracking system (BTS) ou système de suivi de bogues est une application
informatique qui permet d'aider développeurs et utilisateurs à améliorer la qualité d'un logiciel. Les
utilisateurs soumettent les bogues (défauts de fonctionnement) rencontrés dans le logiciel. Les
développeurs sont alors toujours au fait des problèmes rencontrés.3
Dans le contexte du libre en général, on parle de communauté Open Source et de
communauté du logiciel libre. La différence est principalement relevée par la Fondation pour le
Logiciel Libre (Free Software Foundation – FSF4). Dans ce rapport, nous ne ferons aucune distinction
entre ces deux communautés5.
Les développeurs et utilisateurs de logiciels libres réalisent ou utilisent des outils fondés sur
un mode de production reposant sur la collaboration, l’entraide, le partage, la mutualisation6. A ce
titre, le projet dont il est question dans ce document est pleinement en lien avec cette communauté.
Les applications qui seront étudiées font toutes partie intégrante de l’Open Source. Le projet
présente un lien avec l’environnement de développement intégré Eclipse. A celui-ci s’ajoute en
particulier un de ses sous-systèmes, Mylyn, qui permet d’accéder à un système de suivi de bugs et
d’éditer son contenu, sans quitter l’environnement de développement Eclipse. Enfin, sera examiné le
système de suivi de bugs de Debian, Debbugs7. Debian est un système d’exploitation reposant sur les
principes du logiciel libre. Il est réputé pour sa fiabilité et son mode d’unification d’éléments
développés indépendamment les uns des autres, modulables en fonction des besoins et appelés
« paquets ».
Enfin, les informations qui seront fournies à la fin de ce projet pourront directement
alimenter les travaux des encadrants dans le cadre du projet Helios8. Ce projet, auquel participent de
grands groupes et des universités, consiste à réaliser un portail Open Source basé sur des logiciels
libres existants et dédié à la gestion du cycle de vie des logiciels d'un système de bout en bout. En
particulier, les chercheurs de TELECOM & Management SudParis travaillent sur la traçabilité des
anomalies entre plateformes de développement. Dans le cadre de ce projet, ils cherchent à
développer des outils de synchronisation entre différents types de systèmes de gestion de bugs, de
3
Source : http://fr.wikipedia.org/wiki/Bug_tracking_system
4
http://www.fsf.org/
5
Une brève description des différences entre communauté open source et du logiciel libre :
http://fr.wikipedia.org/wiki/Communaut%C3%A9_du_logiciel_libre
6
http://fr.wikipedia.org/wiki/Logiciel_libre
7
http://packages.debian.org/unstable/misc/debbugs
http://en.wikipedia.org/wiki/Debian_bug_tracking_system
8
http://www.helios-platform.org/
4
Interfaçage du bugtracker Debian pour Mylyn – Rapport
manière à ce que chaque bug détecté soit à coup sûr communiqué à toutes les équipes qui
pourraient en avoir besoin.
1.2. Enoncé
Ci-dessous, l’énoncé du sujet tel qu’il nous a été fourni lors du choix des projets.
Mylyn est le nom d'un sous-système d'Eclipse s'occupant de la gestion des tâches
(http://www.eclipse.org/mylyn/).
Le nom du projet est inspiré du mot anglais myelin (myéline), nom de l'isolant gainant
les axones pour éviter la dispersion de l'influx nerveux. Le projet veut en effet isoler le
programmeur de toutes les tâches de routine pouvant le distraire de sa fonction première, qui
est de coder en restant concentré sur son code.
Mylin joue le rôle d'assistant du programmeur, intégrant dans Eclipse des modes
d'édition lisibles (RTF) de dépôts comme Bugzilla, Trac et JIRA. -http://fr.wikipedia.org/wiki/Mylyn
L'objectif du projet sera d'intégrer une interface vers le bug-tracker du projet Debian
(http://bugs.debian.org/) dans Mylyn.
Le but d'une telle interface est d'offrir une alternative pour les contributeurs du projet
Debian dans les tâches d'assurance qualité nécessitant une forte interaction avec le contenu
du bug-tracker.
Si possible, on cherchera à contribuer à la dynamique logiciel libre du projet Mylyn en
proposant des éléments libres diffusables et réutilisables.
1.3. Objectifs précis
Le but étant de réaliser un connecteur entre Mylyn et Debbugs, le bugtracker de Debian,
notre projet s’est principalement axé sur l’analyse du fonctionnement de ces deux systèmes. Pour ce
faire, nous avons étudié l’architecture de Mylyn, puis analysé les connecteurs existants. En
examinant l'architecture de Debbugs et en s'inspirant des divers connecteurs, nous avons recherché
la façon dont il était possible de les faire communiquer.
Il était indispensable de bien comprendre comment chacun de ces éléments s’articulait afin
de pouvoir les prendre en main au mieux. Les premiers efforts de recherche visaient principalement
à appréhender le fonctionnement global des projets open source en testant leur utilisation puis en
commençant à analyser l’architecture d’un projet précis (Mylyn, Debbugs ou un connecteur).
L’essentiel de l’effort devait ensuite se porter sur de la documentation permettant d’expliquer
l’architecture des systèmes à analyser. Les informations qu’il était nécessaire d’analyser pouvaient
être récupérées via les différentes mailing-lists, les wikis des communautés, ou bien encore, en
explorant directement les codes source.
5
Interfaçage du bugtracker Debian pour Mylyn – Rapport
2. Mise en place du projet
2.1. Organisation et outils
Afin d’être le plus efficace possible, certaines bonnes pratiques ont rapidement été mises en
place. Le projet pfe_mylyn a été créé sur la plateforme Picoforge9 afin de pouvoir bénéficier des
différents outils mis à disposition, en particulier : une mailing-list, un wiki, un svn.
Ainsi, les échanges sur le projet pour discuter de points précis ou pour convenir des
prochaines réunions pouvaient être réalisés directement en envoyant un mail à
[email protected]. Cette liste permettait de joindre les deux encadrants, les trois
étudiants et Valentin Vlasceanu, doctorant participant également au projet Helios WP3.
Le wiki a été pris en main afin de pouvoir centraliser les découvertes importantes. L’édition
nécessitait de prendre connaissance des normes de formatage du texte.
L’habitude a été prise d’effectuer environ une réunion d’avancement par semaine et d’en
ajouter le compte-rendu sur le wiki. Ceux-ci sont disponibles à cette adresse : https://picoforge.intevry.fr/cgi-bin/twiki/view/Pfe_mylyn/Private/AllReports.
Les transparents utilisés pour certaines des réunions ont été stockés sur le svn du projet, de
même pour les documents que nous avons jugés importants.
Pour récolter les informations utiles à l’analyse des différents systèmes, nous nous sommes
inscrits à la liste de diffusion spécifique aux intégrateurs de Mylyn afin d’y discuter de certains points
de fonctionnement de cette application.
Pour générer des schémas de tout type, et en particulier des diagrammes UML, l’application
en ligne Gliffy10 a été utilisée. Elle permet le travail collaboratif en donnant la possibilité de créer ses
propres figures et ensuite de les partager en lecture ou en modification. Un historique des
enregistrements étant conservé, on peut facilement faire du versioning des schémas.
Par ailleurs, le code source de Mylyn étant composé de plus d’une centaine de classes et
d’une documentation et de commentaires de code quasi nuls, son analyse nécessitait d’utiliser des
outils pour mieux organiser les recherches. Ainsi, les logiciels Sorcerer11 et Doxygen12 ont été étudiés
pour voir lequel pouvait répondre le mieux à nos attentes. Leurs fonctionnalités ont été survolées et
les deux outils semblent offrir sensiblement les mêmes fonctionnalités :
 liens vers les sous-classes et super-classes
 liens vers les méthodes surchargeant la méthode courante
 liens vers les méthodes surchargées par la méthode courante
 liens vers les déclarations des variables, méthodes, types, packages, etc.
9
http://picoforge.int-evry.fr/
10
http://www.gliffy.com/
11
https://sorcerer.dev.java.net/
12
http://www.doxygen.org/
6
Interfaçage du bugtracker Debian pour Mylyn – Rapport
Le gros avantage de Doxygen est de proposer une génération automatique de graphes de
dépendances, de schémas d'héritage et de diagrammes de collaboration, ceci à l'aide de l'outil
Graphviz13.
2.2. Les connecteurs existants
Mylyn possède des connecteurs avec en tout 3 systèmes de gestion de bogues, considéré
comme des systèmes de dépôts de tâches étant donné qu'on se place du point de vue du
développeur. Ces systèmes sont Bugzilla, JIRA et Trac.
Bugzilla est un logiciel de suivi de bug développé par la fondation Mozilla. Projet au départ
créé par Netscape pour faciliter le développement de Netscape Communicator, son code a été rendu
accessible en 1998 dans le cadre du projet Mozilla. C'est aujourd'hui un projet Open Source, son code
est en Perl et nécessite plusieurs outils web pour fonctionner correctement : un système de gestion
de bases de données, un serveur web, un serveur smtp.
JIRA est un système de suivi de bug et de gestion de projet développé par la société Atlassian
Software Systems. Bien que mis à disposition de nombreux projets gratuitement, ce logiciel n'est
libre d'accès que sous certaines conditions fixées. Les projets Open Source y ont notamment accès,
c'est pourquoi des projets tel que Fedora et Jboss y font appel. Son code Source est écrit dans le
langage Java.
Trac est un système de gestion de projet par Internet qui comprend entre autre un système
de suivi de bugs. Il a été développé dans le langage Python par la société Edgewall Sotfware.
Longtemps sous licence GNU GPL, il est aujourd'hui distribué sous licence BSD. Son interface Web a
utilisé le moteur ClearSilver dans un premier temps, mais c'est le moteur Genshi qui est aujourd'hui
utilisé.
Les BTS précédemment cités sont ceux qui possèdent une interface réellement implémentée
sous Mylyn, chacune d'entre elles ayant son propre fonctionnement. Il est aussi possible, via un
connecteur web générique, d'accéder à la liste des bugs des systèmes de dépôts suivants : Google
Code Hosting, IssueZilla, GForge, SourceForge, Mantis, ChangeLogic, OTRS, phpBB, vBulletin. On ne
s'intéressera cependant pas à ce type de connecteurs, étant donné que notre préoccupation est de
créer un connecteur réellement adapté au fonctionnement de Debbugs et non de simplement
extraire la liste de bug à partir d'un site Web.
2.3. Architecture de communication schématisée
Une analyse rapide du fonctionnement de Debbugs permet de voir que le logiciel
communique avec la base de données de 3 manières : en utilisant le système de communication par
mails, par interface web (en utilisant le langage CGI) et par interface SOAP.
Du côté de Mylyn des connecteurs sont implémentés et utilisés pour communiquer avec les 3
BTS précédemment cités. Ils peuvent entre autre communiquer avec les bases de données de ces
BTS par le protocole SOAP, ou en utilisant des Web Templates pour se connecter en HTML
A partir de cette analyse, la communication entre Mylyn et Debbugs semble réalisable via 2
technologies différentes, soit en HTML ce qui permet un d'utiliser un protocole simple et léger, soit
en SOAP ce qui permet d'utiliser de nombreux langages pour envisager le codage à réaliser.
On peut résumer la démarche envisagée par le schéma suivant :
13
http://www.graphviz.org/
7
Interfaçage du bugtracker Debian pour Mylyn – Rapport
2.4. Analyser le BTS Debian et Mylyn
Pour mettre en place cette architecture, il sera d'abord important d'analyse le code source
des 2 logiciels, notamment pour décrypter leurs méthodes de communication.
Dans le cas de Debbugs, une analyse préliminaire de la manière de communiquer avec la base
de données via le système d'envoi de mails pourrait être intéressante pour comprendre comment est
structuré un bug selon les normes de Debian, quel sont les informations qui lui sont associées, qui
peut avoir accès à sa modification. Il sera ensuite nécessaire d'entrer dans le code source,
principalement écrit en langage Perl, pour approfondir les informations obtenues lors de la
précédente étude et pour comprendre comment utiliser les systèmes de communication mis à
disposition par le logiciel, notamment l'interface SOAP qui semble être la plus intéressante pour
notre projet.
En ce qui concerne Mylyn, il sera d'abord important de comprendre comment fonctionne
Mylyn, en quoi cet outil facilite le travail des développeurs avant d'entrer dans la structure de ce sous
logiciel et dans son code source pour comprendre notamment comment est considéré une tache,
quelle sont ses caractéristiques, comment Mylyn fait la correspondance entre ces taches et les bugs
récupérés dans les différents BTS, et comment se fait la communication avec ces derniers.
8
Interfaçage du bugtracker Debian pour Mylyn – Rapport
3. Le BTS Debian
Un Bug Tracking System (BTS)14 est un logiciel permettant d'améliorer un logiciel par une
consultation structurée par les développeurs des différents bugs constatés par les utilisateurs. Ces
systèmes de signalement d'erreurs peuvent souvent être réutilisés pour le suivi de projets non
informatiques. Certains BTS sont utilisés pour le développement de logiciels Open Source,
permettant à n'importe quel utilisateur de signaler un bug, alors que d'autres sont réservés au
fonctionnement interne de l'entreprise. Le BTS Debian correspond au premier cas.
3.1. Qu’est-ce que c’est ?
Le logiciel Debbugs a été développé principalement par Ian Jackson. Le responsable de son
évolution est aujourd'hui Don Amstrong. Il s'agit d'un ensemble de scripts qui éditent la base de
données des mails via l'envoi de mails, utilisant le système précédemment expliqué, mais aussi
l'interface web via des scripts CGI. Le code source est écrit en Perl pour sa plus grande partie. Il est
distribué sous licence GPL, et est totalement Open Source.
Le logiciel est téléchargeable sur le site de Debian. Sa dernière version stable est la 2.4.1, qui
se trouve entre autres dans la version 5.0 de Debian (lenny). Le code se source à l'adresse
http://bugs.debian.org/debbugs-source/mainline/.
En étudiant notamment le fichier Debbugs/bugs.pm, on obtient une liste plus complète des
attributs du bug dans le logiciel :










id : numéro d'identification du bug
package : nom du package binaire affecté
src : nom du package source affecté
maint : adresse du responsable
submitter : adresse de la personne ayant soumis le bug
severity : sévérité
status : état du bug
tag : étiquette
owner : propriétaire du bug (son adresse)
correspondent : adresse d'une personne ayant envoyé un mail au log
3.2. Son fonctionnement
3.2.1. Le système de mails
La communication par mail au sujet des bugs se divise en 3 catégories : soumettre un bug,
consulter la documentation liée à ce bug et manipuler ce bug.
Soumettre un bug est une méthode simple, qui permet de s'affranchir du logiciel reportbug. Il
suffit pour signaler un bug d'envoyer un mail à l'adresse [email protected] en précisant le
paquet concerné par ce bug et sa version dans un pseudo entête situé dans le début du corps du
mail. Il est aussi possible de définir la sévérité du bug et d'y ajouter des étiquettes (parfois liées à
l'utilisateur) dans ces pseudos entêtes.
Le système de requête consiste à envoyer un mail à l'adresse [email protected]. Le
sujet de ce message ne sera pas pris en compte, et le corps doit uniquement être constitué de
14
http://fr.wikipedia.org/wiki/Bug_tracking_system
9
Interfaçage du bugtracker Debian pour Mylyn – Rapport
commandes précises permettant de demander des informations liées aux bugs (rapport,
responsables, bugs récemment modifiés, ...). La réponse n'est renvoyés par le serveur que si le
message est correctement formaté et si le nombre de requête n'est pas excessif.
Il est enfin possible de manipuler un bug en envoyant un mail à l'adresse
[email protected]. Le système est le même que pour les requêtes (commandes sans tenir
compte de l'entête) mais dispose de commandes supplémentaires. Ces commandes permettent de
modifier l'état d'un bug, notamment de déterminer s'il est présent ou résolu dans une version
précise du paquet, de modifier son propriétaire, son responsable, sa sévérité, ses étiquettes,
d'archiver ou de désarchiver un bug.
A partir de cette étude, on peut notamment extraire 2 attributs importants : la sévérité, et les
étiquettes. Les différentes valeurs que peuvent prendre ces attributs sont signalées en annexe. Le
bug possède aussi un responsable, un propriétaire, un numéro d'identification, et il est associé à un
paquet. Les différentes versions de ce paquet sont alors classées comme found (le bug est présent)
ou fixed (le bug est résolu).
3.2.2. L'interface SOAP
Les dernières versions de Debbugs comprennent une autre manière que le web et l'envoi de
mail pour communiquer avec la base de données : une interface SOAP.
SOAP (Simple Object Access Protocol) est un processus RPC permettant la transmission de
messages entre objets distants, ce qui signifie concrètement qu'il permet à un objet d'utiliser une
méthode qui ne lui est théoriquement pas accessible car présente sur un autre serveur. Ce processus
est basé sur XML et à l'avantage d'être indépendant du langage utilisé.
Dans le cas qui nous intéresse, les développeurs ont mis en place une interface qui permet
d'appeler les méthodes suivantes :
. get_status(bugnumber [, bugnumber]*)
Cette fonction permet d'obtenir l'état d'une liste de bugs à partir de leurs numéros
d'identification
. get_bugs(key, value[, key, value]*)
Cette fonction retourne un bug (et ses attributs) à partir d'une clé spécifique, ou d'un liste de
ces clés.
Clés utilisables : package (binaire), personne ayant soumis le bug, responsable, package
(source), gravité, status, tag, propriétaire, liste de bugs (identifiants)
. get_usertag(email [, tag]*)
Cette fonction permet d'obtenir les bugs marqués par l'adresse email entrée en paramètre.
. get_bug_log(bugnumber)
Cette fonction renvoie le log complet d'un bug, dans une structure prédéfinie semblable à
celle d'une page HTML
. newest_bugs(amount)
Cette fonction retourne une liste des bugs les plus récents (fixée par défaut à 5)
L'interface est donc assez intéressante car elle permettrait de communiquer avec Debbugs
via un protocole utilisable par de nombreux langages (notamment Java et Php). Mais elle ne propose
que des méthodes de consultation de la base de données et le control n'est pas pris en compte, il
serait donc nécessaire d'utiliser l'interface mail ou de créer notre propre code en perl si nous
souhaitons permettre à l'utilisateur de modifier lui même les bugs.
10
Interfaçage du bugtracker Debian pour Mylyn – Rapport
4. Mylyn
Mylyn est le nom d'un sous-système d'Eclipse s'occupant de la gestion des tâches. [Il]
joue le rôle d'assistant du programmeur, intégrant dans Eclipse des modes d'édition lisibles de
dépôts comme Bugzilla, Trac et JIRA.
Une fois ces tâches intégrées, Mylyn scrute le profil d'activité du programmeur pour
identifier à tout moment la tâche en cours et afficher les informations pertinentes relatives à
cette tâche en fonction du contexte en commandant l'interface graphique d'Eclipse.
Son but est de réduire le temps consacré par le programmeur à :
 La recherche d'information
 L'exploration des textes de la source et de l'aide
15
 La navigation dans les fichiers.
Le but final de l'étude est de relier entre eux les différents BTS pour faciliter le travail des
développeurs en coordonnant les informations présentes parmi ces logiciels. Par exemple, un bug
peut à la fois être signalé sur le navigateur Firefox et sur la distribution Debian sur laquelle ce
navigateur fonctionne.
La coordination via Mylyn de ces BTS pourrait amener à une synchronisation des différents
bugs suivants leurs caractéristiques, pour ensuite les relier et standardiser selon un modèle RDF. On
pourrait ainsi créer une base de données consultable via le langage SPARQL et ne plus avoir à fouiller
dans différents BTS pour résoudre un bug qui affecte plusieurs logiciels mais qui n'est présent que
dans un seul.
Bug-tracker
de Debian
Bug-tracker
de Bugzilla
Bug-tracker
de Jira
Synchronisation
Et standalisation en
RDF (BOM)
SPARQL
15
http://fr.wikipedia.org/wiki/Mylyn
11
Bug-tracker
de ...
Interfaçage du bugtracker Debian pour Mylyn – Rapport
4.1. L’articulation du code
4.1.1. Bridges
Mylyn s'appuie sur des bridges pour intégrer le modèle de contexte avec la structure et les
caractéristiques de l'interface utilisateur des outils. Il y a deux sortes de bridges :
 Bridge de structure : fait correspondre les éléments spécifiques à chaque domaine et les
relations avec les handleIdentifiers qui sont plus génériques et compris par le
modèle de structure ;
 L’extension
se
nomme
structureBridge
et
est
définie
dans
org.eclipse.mylyn.context.core.bridges.
 Bridge d'interface utilisateur : intègre des fonctionnalités de Mylyn, comme le bouton
« Sélectionner la tâche active », avec des éditeurs et des vues.
 L’extension
uiBridge
est
définie
dans
org.eclipse.mylyn.context.ui.bridges.
Les
utilitaires
de
surveillance
de
l'interface
utilisateur
du
workbench
(org.eclipse.mylyn.monitor) traduisent l’interaction avec des éléments spécifiques à chaque
domaine (par exemple, les méthodes Java) en un historique d’interactions. Le gestionnaire de
contexte (org.eclipse.mylyn.context.core) s'appuie sur un bridge de structure pour créer un
modèle de contexte à partir de ces éléments et des relations qui existent entre eux. Le bridge de
structure est aussi utilisé par les utilitaires d'interface utilisateur pour faire correspondre les
éléments affichés (dans les vues et les éditeurs) au modèle de contexte, afin de déterminer leur
classement par intérêt. Ce classement est alors utilisé pour filtrer et replier des éléments dans
l'arborescence.
12
Interfaçage du bugtracker Debian pour Mylyn – Rapport
4.1.2. Interface de programmation (API) communes
Les interfaces de programmation communes de Mylyn fournissent des éléments communs
qui sont utilisés par les autres composants de Mylyn. Ils incluent :



Commons Core : Le plug-in org.eclipse.mylyn.commons.core fournit l'interface de
programmation (API) StatusHandler pour traiter des erreurs, ainsi que d'autres classes
d'utilitaires.
Commons Net : Le plug-in org.eclipse.mylyn.commons.net fournit une interface de
programmation pour les connexions Apache de HttpClient, utilisée par les connecteurs
de Mylyn pour se connecter à des services web.
Commons UI : Le plug-in org.eclipse.mylyn.commons.ui fournit des composants
d'interface graphique communs et des extensions du workbench utilisées par d'autres
composants de Mylyn.
4.2. La gestion des tâches
Mylyn ajoute de nouvelles fonctionnalités à Eclipse SDK en permettant un suivi de tâches.
Une tâche dans Mylyn est un travail à accomplir qu'on souhaite se rappeler ou partager avec les
autres, comme un bug, une note personnelle à propos d'une amélioration, etc. Dans le cadre de
notre projet, les tâches de Mylyn sont en fait utilisées pour décrire des bugs, aussi appelés tickets
dans d'autres systèmes de gestion de bugs. Mylyn permet de stocker des tâches localement ou de
travailler avec des tâches stockées dans un ou plusieurs dépôts de tâches, grâce à des connecteurs
adaptés.
Une fois qu'une tâche est intégrée, Mylyn crée et manipule un "contexte de tâche" qui
contient tous les éléments liés à votre tâche. Ceux-ci peuvent inclure des documents consultés, des
méthodes modifiées et des API utilisées. Mylyn utilise le contexte de tâche pour adapter l'interface
utilisateur en se concentrant sur les informations pertinentes, en cachant ce qui n'est pas intéressant
et en trouvant automatiquement les informations qui ont un rapport. Mylyn aide ainsi les
développeurs à améliorer leur productivité en réduisant le temps passé en recherche, défilement et
navigation.
La figure ci-dessous avec les zones numérotées illustre quelques exemples de gestion de
tâche et de contexte :
1. Une liste de tâches avec une tâche active et les rapports de Bugzilla planifiés pour la
journée ;
2. Un ensemble de changements gérés grâce au contexte de tâche ;
3. Un éditeur de tâches avancé ;
4. Un mode centré sur les tâches dans l'explorateur de packages d'Eclipse.
13
Interfaçage du bugtracker Debian pour Mylyn – Rapport
Il y a deux genres de tâches dans Mylyn :

Tâches locales qui sont stockées dans l’espace de travail (workspace) d'Eclipse. Elles sont
privées et visibles seulement par l'utilisateur local. On dispose de fonctionnalités de
gestion de tâches basiques, comme la planification.

Tâches externes qui sont stockées dans un dépôt de tâches, c'est-à-dire une application
ou un serveur externe. Elles sont souvent partagées entre les développeurs, mais
bénéficient quand même des mêmes fonctionnalités que les tâches locales, comme la
planification personnelle et les notes.
Mylyn permet de travailler de manière unifiée avec divers types de dépôts de tâches, parmi
lesquels on peut citer :
 dépôt de tâches locales : une sorte spéciale de dépôt utilisé pour travailler avec des
tâches simples ; elles sont stockées dans l’espace de travail de Eclipse ;
 dépôt de tâches partagées : si une équipe utilise un dépôt de tâches partagé, comme un
serveur Bugzilla, on peut utiliser ce dépôt pour collaborer sur des tâches avec les autres
membres de l’équipe ;
 dépôt de tâches de gestion de projet : quelques connecteurs, comme XPlanner,
fournissent des fonctionnalités de gestion de tâches qui permettent de les grouper par
phases de projet, par exemple ;
 dépôt de bugs et rapports d’amélioration : cela représente une sorte spéciale de tâches,
qui est en général partagée entre l’utilisateur d’un produit et l'équipe assurant le support.
Mylyn permet d'intégrer ces rapports de bugs à vos autres tâches pour que vous puissiez
les consulter en même temps.
14
Interfaçage du bugtracker Debian pour Mylyn – Rapport
Une architecture simplifiée de la gestion des tâches peut se présenter de la façon suivante :
15
Interfaçage du bugtracker Debian pour Mylyn – Rapport


AbstractTask est la classe abstraite représentant un bug. On y trouve, entre autres, les
attributs taskId, owner, priority, creationDate, modificationDate, dueDate.
Elle étend la classe abstraite AbstractTaskContainer et implémente l'interface
ITask, l'interface de définition d'un bug.
ITask présente deux éléments énumérés :
o SynchronizationState (qui prend les valeurs conflict, incoming, outgoing,
etc.)
o PriorityLevel (valeur de "P1" à "P5").
Elle comporte toutes les méthodes d'interrogation des attributs contenus dans
AbstractTask et étend deux classes :
o IRepositoryElement qui contient a priori l'URL du dépôt de bug référencé
o IAttributeContainer qui contient apparemment les méthodes de manipulation
d'un mapping (Map) entre une clé d'attribut et la valeur de cet attribut
La classe LocalTask étend AbstractTask et semble être la classe qui définit un bug par
défaut.
D'une manière plus générale, Mylyn définit les dépendances suivantes entre les classes de
gestion des tâches :
16
Interfaçage du bugtracker Debian pour Mylyn – Rapport
17
Interfaçage du bugtracker Debian pour Mylyn – Rapport
4.3. La communication
Les connecteurs les plus matures, comme ceux de Bugzilla ou Trac, présentent les
fonctionnalités suivantes :
 Requête : c’est le mécanisme qui permet de récupérer des ensembles de tâches dans la
liste de tâches de Mylyn depuis le serveur externe. La manière de gérer les requêtes est
spécifique à chaque connecteur.
 Edition avancée : les tâches et les requêtes peuvent être éditées avec un éditeur intégré.
Cette fonctionnalité fournit un accès aux tâches et à d’autres éléments structurés via des
liens.
 Fichiers joints : des fichiers peuvent être déposés sur et récupérés depuis le dépôt
externe.
 Support hors-ligne : grâce à cela, on peut travailler même si on se déconnecte. Cette
fonctionnalité comprend aussi les notifications de changement, qui vous permettent
d’utiliser la liste de tâches comme une boîte de réception pour vos tâches au lieu d'utiliser
votre logiciel de messagerie.
Si le connecteur pour un dépôt de tâches n’existe pas, on peut toujours :
 utiliser les fonctionnalités de Mylyn pour créer des tâches locales ;
 utiliser le « Generic Web Repository Connector » qui permet une gestion de requêtes
basique pour de nombreux dépôts munis d'interfaces web tels que Google Code Hosting,
IssueZilla, GForge, SourceForge, phpBB, etc ;
 demander au responsable du dépôt de tâches de créer un connecteur pour Mylyn ;
 créer son propre connecteur.
Dans notre cas, le connecteur pour Debbugs n’est pas encore disponible. L’approche à venir
est donc soit d’utiliser le Generic Web Repository Connector, soit de créer soi-même le connecteur
propre pour Debian.
18
Interfaçage du bugtracker Debian pour Mylyn – Rapport
5. Bilan du projet
5.1. Les difficultés rencontrées
Nous avons rencontré plusieurs difficultés qui nous ont empêchés d’implémenter le
connecteur. Quelques-unes d’entre elles sont listées dans cette partie.
Tout d’abord, la compréhension du sujet n’a pas été évidente puisque nous avons eu du mal à
faire la distinction entre le but et le contexte propre à notre projet, et sa contribution au projet
Helios. Nous ne voyions pas très bien non plus ce que nous devions prendre en main en tant
qu’utilisateur et en tant que développeur.
Ensuite, l’étude même du code a mis du temps à débuter puisque nous pensions pouvoir
trouver toutes les informations nécessaires au projet en cherchant simplement sur Internet. Coté
Mylyn, la plongée dans le code a été plutôt douloureuse puisque nous nous sommes retrouvés face à
plus d’une centaine de classes non commentées et quasiment aucune documentation
supplémentaire. Dans la même optique, nous n’avons pensé que très tardivement à utiliser un outil
pour nous aider à voir les dépendances entre les classes, ce qui aurait pu nous aider à déterminer
plus rapidement l’architecture fonctionnelle de Mylyn. Une première configuration de Doxygen a
conduit à la génération de plus de 2000 fichiers image. Certains présentent des schémas qui
pourraient certainement être utiles à l'analyse du code mais le logiciel nécessite clairement une
configuration plus fine afin d'être utilisé au meilleur de sa capacité.
Dans une moindre mesure, l’utilisation des outils mis à disposition (wiki, svn) s’est révélée
ardue pour des utilisateurs peu familiers des concepts en jeu.
Cependant, le projet et ses difficultés ont aussi été enrichissants sur bien des aspects.
Nous avons pu entrer de plain-pied dans un projet entièrement open source et nous avons
appris à faire appel aux ressources de la communauté en communiquant directement avec ses
membres ou en les sollicitant via les listes de diffusion.
Par ailleurs, ce projet nous a permis de prendre en main différents outils (wiki, svn, doxygen,
gliffy). Ainsi, au-delà de leur utilisation propre, nous pourrons penser à utiliser des applications du
même genre dans d’autres projets.
5.2. Justification de la révision des objectifs
Comme il a été dit précédemment, aucun connecteur n’a été implémenté. Les tentatives de
compréhension du code source de Mylyn se sont avérées plus difficiles et longues que prévu. Suite
aux difficultés rencontrées Vers le début du mois de décembre, il apparaissait difficile de réaliser les
développements. Les encadrants nous ont alors conseillé de nous rapprocher des besoins du projet
Helios WP3.
Au mois de janvier, l’objectif principal est donc devenu la génération de documentation
permettant une meilleure compréhension de la gestion des tâches dans Mylyn.
5.3. La documentation laissée à disposition
Nous mettons à disposition des encadrants :
- plusieurs schémas d’architecture de Mylyn pour la gestion des tâches,
- le présent rapport, qui pourrait aider à un futur développement d’un connecteur,
- le contenu du wiki,
- un fichier dressant un comparatif entre les attributs des tâches (ou bugs) de
différents bugtrackers. Ceci pourrait représenter une bonne base pour la
19
Interfaçage du bugtracker Debian pour Mylyn – Rapport
généralisation des définitions de bugs dont il est fait mention dans le projet Helios
WP3 (via des ontologies16, par exemple).
D’autre part, d’intéressantes discussions, se rapprochant grandement des problématiques du
projet Helios WP3, ont été initiées sur la liste de diffusion des intégrateurs de Mylyn et pourront être
poursuivies par les encadrants.
16
https://picoforge.int-evry.fr/cgi-bin/twiki/view/Helios_wp3/Web/EvoOntBom
20
Interfaçage du bugtracker Debian pour Mylyn – Rapport
Conclusion
Ce projet nous a permis de suivre une démarche de projet de type libre.
En effet, l’utilisation d’un Wiki afin de traiter les avancées est plutôt une façon de procéder
que l’on retrouve dans les projets open source. Elle pourrait être rapprochée des démarches de
Knowledge Management (KM) dans l’entreprise. De plus, les systèmes de gestion de versions de
fichiers, tels que le svn, sont utilisés dans la grande majorité des projets, qu’ils soient propriétaires ou
libres.
Nous avons par ailleurs pu développer notre autonomie en prenant contact avec les acteurs
de la communauté open source ou bien en trouvant des outils adaptés aux besoins de notre analyse.
Les encadrants pourront utiliser la documentation fournie pour faire avancer la
généralisation de définition de bug et les communications entre différents bugtrackers (objectifs du
projet Helios). Par ailleurs, s’ils souhaitent qu’un connecteur soit implémenté pour Debbugs, les
ressources laissées à disposition faciliteront certainement la tâche des futurs développeurs lors
d’éventuels projets autour de Mylyn.
21
Interfaçage du bugtracker Debian pour Mylyn – Rapport
Annexes
Cas d'utilisation : le connecteur Mantis
Mantis est un système de bug-tracker à base de web ; il est écrit en PHP et travaille avec
MySQL ou PostgreSQL et un serveur de web. Les navigateurs Internet sont capables de fonctionner
comme un client à ce système.
Le projet de « Mylyn-Mantis Repository Connector » construit un connecteur pour Mantis Bug
Tracking application en utilisant l’interface SOAP de Mantis : « MantisConnec » qui est un php web
service basé sur l’API de Mantis.
L’architecture de connecteur de Mylyn-Mantis :
5.3.1. Extensions


Mantis
Connector :
C’est
un
connectorCore
lié
au
« org.eclipse.mylyn.tasks.ui.repositoires ».
Il
s’applique
à
la
classe
« MantisRepositoryConnector » dans le paquet « com.itsolut.mantis.core ».
Mantis Repository UI : Il s’applique à la classe « MantisRepositoryUI » dans le
paquet « com.itsolut.mantis.ui.tasklist ».
5.3.2. API de tâche
Paquet UI (com.itsolut.mantis.ui) contribue toutes les extensions et fait référence au paquet
« Core » quand nécessaire.

Ajouter un dépôt
Pour ajouter le dépôt Mantis, il faut implémenter les classes suivantes:
Paquet
Classe
Classe Parent
Public Méthodes
com.itsolu
t.mantis.u
i
com.itsolu
t.mantis.u
i.internal
MantisUIPlugin
AbstractRepositor
yConnectorUi
MantisRepositoryUI
MantisRepositoryU
I
MantisTaskReposito
ryLinkProvider
AbstractTaskRepos
itoryLinkProvider
start,stop,getDeault,ha
ndleMantisexception et
etc.
getConnectorKind,
getNewTaskWizard,
getQueryWizard,
getSettingsPage,
hasSearchPage,
getSearchPage,
getLegendElements,
getTaskKindOverlay,
findHyperlinks, etc.
getTaskRepository
22
Interfaçage du bugtracker Debian pour Mylyn – Rapport
com.itsolu
t.mantis.u
i.tasklist

MantisRepositorySe
ttingsPage
AbstractRepositor
ySettingsPage
MantisTaskListMigr
ator
AbstractTaskListM
igrator
isPageComplete,
getMantisVersion,
getConnectorKind,
createAdditionalControl
s, validateSettings,
isValidUrl,
getvalidator
MantisTaskListMigrator,
getQueryElementNames ,
getTaskElementName ,
migrateQuery,
migrateTask
Lister les tâches dans un dépôt
Quand on veut créer une nouvelle tâche dans dépôt, on fait appel à la méthode
« canCreateNewTask » dans la classe « AbstractRepositoryConnector » implémentée par le dépôt. S’il
retourne vrai, ce dépôt sera inscrit dans la liste des dépôts disponibles.
Pour lister les tâches dans un dépôt comme Mantis, il faut implémenter les classes suivantes:
Paquet
Classe
Classe Parent
Public Méthodes
com.itsolu
t.mantis.u
i.wizard (po
MantisCustomQueryP
age
AbstractRepositor
yQueryPage
NewMantisQueryWiza
rd
NewMantisTaskPage
RepositoryQueryWi
zard
WizardPage
NewMantisTaskWizar
d
MantisTaskEditorPa
ge
MantisTaskEditorPa
geFactory
NewMantisTaskWiza
rd
AbstractRepositor
yEditorPage
AbstractRepositor
yEditorPageFactor
y
MantisTaskEditor
AbstracttasEditor
Page
TaskEditorRichTex
tPart
TaskEditorRichTex
tPart
createControl,
canFlipToNextPage,
getRepository,
setRepository,
isPageComplete,
getQueryUrl, applyTo,
setQueryTitle
addPages, canFinish,
performFinish
setVisible,
isPageComplete,
getRepositoryTaskData,
getSelectedProject,
init,addPages,getSelect
edProject
createPartDescriptors,
insertPart,
canCreatePageFor,
createPage,
getPageImage,
getPageText,
getPriority,
getConflictingIds
createPartDescriptors
ur supporter
la requête)
com.itsolu
t.mantis.u
i.editor
(pour réaliser
le rédacteur
de tâche)
MantisStepsToRepro
ducePart
MantisAdditionalIn
formationPart
23
createControl
createControl
Interfaçage du bugtracker Debian pour Mylyn – Rapport
Les deux attributs majeurs du bug sous Debbug : l'étiquette et
la sévérité
Tag (étiquettes)
Les étiquettes servent à décrire la nature du bug
Les valeurs possibles sont les suivantes :
 patch (rustine)
Une rustine ou une procédure facile à suivre pour résoudre le bogue est incluse dans les
enregistrements du bogue. S'il y a une rustine mais qu'elle ne résout pas le bogue
correctement ou cause d'autres problèmes, cette étiquette ne doit pas être utilisée.
 wontfix (ne sera pas corrigé)
Ce bogue ne sera pas corrigé. Peut-être parce que c'est un choix entre deux façons
arbitraires de faire les choses et que le responsable et celui qui a soumis le bogue
préfèrent des façons différentes de faire les choses, peut-être parce que changer le
fonctionnement entraînera des problèmes plus graves pour certains, ou peut-être pour
d'autres raisons.
 moreinfo (plus d'info)
Ce bogue ne peut pas être résolu tant que des informations supplémentaires n'auront pas
été fournies par celui qui a soumis le bogue. Ce bogue sera fermé si celui qui l'a soumis ne
fournit pas plus d'informations pendant une période de temps raisonnable (quelques
mois). C'est pour les bogues du type « Ça ne marche pas ». Qu'est-ce qui ne marche pas ?
 unreproducible (non reproductible)
Ce bogue ne peut pas être reproduit sur le système du responsable. L'assistance d'un tiers
est nécessaire pour diagnostiquer les causes du problème.
 help (aide)
Le responsable demande de l'aide pour traiter ce bogue.
 pending (en cours)
Une solution à ce bogue a été trouvée et une mise à jour sera faite prochainement.
 fixed (résolu)
Ce bogue a été corrigé ou contourné (par un envoi d'un non-responsable, par exemple),
mais il reste un problème qui doit être résolu. Cette marque remplace l'ancien niveau de
gravité « fixed ».
 security (sécurité)
Ce bogue décrit un problème de sécurité dans un paquet (par exemple, mauvaises
permissions permettant l'accès à des données qui ne devraient pas être accessibles,
dépassement de limite de tampon permettant à des gens de prendre le contrôle d'un
système par des moyens illicites, attaques par dénis de service qui devraient être
résolues, etc.). La plupart des bogues de sécurité devraient aussi être signalés par le
niveau de gravité critique (« critical ») ou grave (« grave »).
 upstream (original)
Ce bogue concerne la partie originale du paquet (et non la partie Debian).
 confirmed (confirmé)
Le responsable a examiné le bogue. Il le comprend et il est fondamentalement d'accord
avec lui. Mais il reste au responsable à le corriger. (L'utilisation de cette étiquette est
optionnelle ; elle est destinée principalement aux responsables qui doivent gérer un grand
nombre de bogues ouverts.)

fixed-upstream
Le bogue a été corrigé par le développeur amont, mais il n'est pas encore dans le paquet
(pour une raison quelconque : peut-être est-il trop compliqué de rétroporter le
changement ou trop insignifiant pour que cela vaille la peine de s'en occuper).
24
Interfaçage du bugtracker Debian pour Mylyn – Rapport

fixed-in-experimental
Le bogue a été corrigé dans le paquet de la distribution Experimental, mais pas encore
dans la distribution Unstable.

d-i
Ce bogue concerne le développement de l'installateur Debian. Il est prévu que cette
étiquette soit utilisée quand un bogue affecte le développement de l'installateur mais
qu'il n'est pas rempli contre un paquet qui fait directement partie de l'installateur.

ipv6
Ce bogue concerne le support du protocole IPv6 « Internet Protocol version 6 ».

lfs
Ce bogue concerne le support des gros fichiers (plus de 2 gigaoctets).

l10n
Ce bogue concerne la localisation du paquet.

potato
Ce bogue s'applique particulièrement à la version Potato de Debian.

woody
Ce bogue s'applique particulièrement à la version Woody de Debian.

sarge
Ce bogue ne doit pas être archivé avant qu'il soit résolu dans la distribution Sarge.

sarge-ignore
Ce bogue, empêchant l'intégration dans la prochaine version, doit être ignoré pour les
objectifs de publication de Sarge. Cette étiquette ne doit être utilisée que par le
responsable de publication ; ne la positionnez pas vous-même sans son autorisation
explicite.

etch
Ce bogue ne doit pas être archivé avant qu'il soit résolu dans la distribution Etch.

etch-ignore
Ce bogue, empêchant l'intégration dans la prochaine version, doit être ignoré pour les
objectifs de publication d'Etch. Cette étiquette ne doit être utilisée que par le responsable
de publication ; ne la positionnez pas vous-même sans son autorisation explicite.

lenny
Ce bogue ne doit pas être archivé avant qu'il soit résolu dans la distribution Lenny.

lenny-ignore
Ce bogue, empêchant l'intégration dans la prochaine version, doit être ignoré pour les
objectifs de publication de Lenny. Cette étiquette ne doit être utilisée que par le
responsable de publication ; ne la positionnez pas vous-même sans son autorisation
explicite.

sid
Ce bogue ne doit pas être archivé avant qu'il soit résolu dans la distribution Sid.

experimental
Ce bogue ne doit pas être archivé avant qu'il soit résolu dans la distribution Experimental.
Severity (sévérité)
La sévérité sert à définir le niveau de gravité de bug
Les valeurs possibles sont les suivantes (par ordre décroissant de gravité) :

critical (critique)

rend inexploitable des programmes qui ne lui sont pourtant pas associés, ou casse
globalement le système, ou cause de sévères pertes de données, ou encore crée une faille
dans la sécurité du système.
grave (grave)
25
Interfaçage du bugtracker Debian pour Mylyn – Rapport





rend le paquet en question inutilisable ou presque, ou cause des pertes de données, ou
introduit une faille de sécurité permettant l'accès aux comptes des utilisateurs qui se
servent du paquet.
serious (sérieux)
est une sévère violation de la charte Debian (grossièrement, il viole une directive « must »
ou « required »), ou, dans l'esprit du responsable du paquet ou du responsable de la
publication, rend le paquet indistribuable.
important (important)
est un bogue ayant un effet majeur sur l'utilité du paquet, tout en ne le rendant pas
complètement inutilisable.
normal (normal)
la valeur par défaut, applicable à la plupart des bogues.
minor (mineur)
un problème qui n'affecte pas l'utilité du paquet, et qui est a priori simple à résoudre.
wishlist (liste de souhaits)
pour une demande d'une fonctionnalité, et aussi pour un bogue très difficile à résoudre
du fait de la conception du paquet.
26

Documents pareils