• Aucun résultat trouvé

7.2 Illustration et validation du modèle conceptuel

7.2.1 Liens profonds

7.2.1.1 Récolte des données

Afin de récolter les données nécessaires pour l’étude du concept de “lien profond”, des cen-taines de listes de discussion de projets open source ont été consultées. La sélection initiale s’est faite, d’une part, sur la base de la disponibilité des archives de listes de discussion. En effet, tous les projets ne mettent pas leur liste de discussion en consultation ouverte sur inter-net. D’autre part, afin de ne pas surcharger les serveurs hébergeant les archives, une restriction supplémentaire a été faite aux projets dont les archives sont déjà groupées au moins par mois, réduisant ainsi considérablement le nombre de requêtes sur les serveurs. Enfin, une dernière réduction a été faite sur la base du nombre de messages et de l’âge du projet, résultant en une liste de 219 projets.

Des scripts shell ont été développés pour télécharger les archives de la liste de discussion à partir d’Internet. Les fichiers téléchargés sont au format “mbox”, un format standard utilisé par les logiciels de gestion de messages électroniques. Certains projets ont des archives complètes en un seul fichier, d’autres ont des archives par mois, qui peuvent être disponibles sous forme compressée ou pas, et mises en téléchargement via HTTP ou FTP. Des scripts distincts de téléchargement ont été écrits pour chacun de ces cas, afin d’automatiser les 15 587 requêtes nécessaires pour récupérer les données.

La sélection finale contient des projets open source majeurs comme PostgreSQL, QEMU, Emacs, Python, le Kernel Linux pour ARM, Mythtv, FreeBSD, et LLVM. Ces projets ont chacun des centaines de contributeurs, et sont donc appropriés pour une analyse de la collaboration. De plus, 135 projets dans la sélection finale ont de 1000 à 24000 messages sur leur liste de discussion et 204 projets ont de 30 mois à 17 ans d’âge.

7.2.1.2 Analyse générale des données

Le contenu d’un message de liste de discussion est du texte simple1 contenant des ré-férences vers d’autres messages de liste de discussion et d’autres informations sur le projet, stockés dans des outils externes à la liste de discussion. Ces liens sont sous forme d’URLs inclus dans les messages.

7.2.1.2.1 Procédé d’analyse Un ensemble de scripts ont été développés pour analyser les archives de listes de discussion téléchargées, et en extraire des statistiques. Le traitement ef-fectué est décomposé en étapes bien définies. Pour chaque étape, et pour chaque projet, le 1. On trouve aussi, bien que ce soit rare dans les projets open source, des messages au format HTML. Dans de tels cas, une version sous forme de texte simple est automatiquement extraite avant d’être analysée.

Indicateur Minimum Maximum Moyenne

Nombre de mois 5 207 93

Nombre de liens 0 329 840 11 895

Nombre de liens profonds 0 283 665 8 803

Nombre de liens uniques 0 48 356 2 448

Nombre de messages 15 247 489 11 292

Nombre de messages par mois 0,30 2711,18 107,78 Nombre de liens par message 0 16,86 1,21 Fréquence des liens profonds 0,25 1 0,74 TABLE7.1 – Principaux indicateurs sur les projets open sources étudiés

script shell correspondant à la réalisation de l’étape est généré à partir d’un gabarit et enregis-tré sur le disque, avant d’être exécuté. Ceci permet de faire des adaptations manuelles selon la nature du projet, tout en conservant la possibilité de piloter l’exécution de chaque étape de manière uniforme pour tous les projets. Les résultats de chaque étape sont aussi enregistrés afin de pouvoir être réutilisés. Sur chacun des projets retenus, après le téléchargement des archives, les traitements suivants sont effectués :

– Extraire tous les liens des archives téléchargées, et les enregistrer dans un fichier texte, avec un lien par ligne.

– Générer un rapport, à partir de la liste de liens, qui montre pour chaque lien le nombre d’occurrences. Ce rapport est trié des liens les moins fréquents aux plus fréquents. – Déterminer, pour chaque lien, si c’est un “lien profond” ou pas, puis compter le nombre

de liens profonds.

– Calculer l’âge de la liste de discussion, on considérant le message le plus ancien et le message le plus récent.

– Compter le nombre de messages échangés sur la liste de discussion depuis sa création. – Calculer divers indicateurs comme le nombre moyen de messages par mois, le nombre

moyen de liens par message, la proportion de lien profonds, etc., à partir des totaux précédents.

7.2.1.2.2 Résultats d’analyse L’étude précédente a permis de constater que l’utilisation des liens est courante sur les listes de discussion. Sur les 219 projets étudiés, il y a en moyenne 1,21 liens par message (pouvant aller jusqu’à 16 liens par message). 74% des liens sont des liens profonds dans le sens où ils pointent vers une information précise dans un système externe (et non pas juste vers une page d’accueil). Le tableau7.1résume les résultats obtenus.

7.2.1.3 Étude de la nature des liens dans le projet PostgreSQL

Les liens contenus dans les messages pointent vers une grande variété de ressources. Une analyse supplémentaire sur la nature de ces ressources a été faite pour la plus grande liste de discussion analysée, pg-hackers. Cette analyse a pour but de mettre en évidence les besoins auxquels répond l’utilisation des liens profonds.

7.2.1.3.1 Aperçu général La liste pg-hackers est la liste de discussion principale consacrée au développement du projet PostgreSQL, un système de gestion de bases de données. L’archive pg-hackers téléchargée représente 247 489 messages échangés sur plus de 14 années (entre Janvier 1997 et Mai 2012), contenant 120 325 liens dont 17 873 sont uniques (soit environ 0,48 liens par message). Les liens présents pointent, par exemple, vers les types de ressources suivants :

– Sites FTP ou BitTorrent de téléchargement de PostgreSQL, de son code source, ou de la documentation :

❢t♣✿✴✴❢t♣✷✳✉❦✳♣♦st❣r❡sq❧✳♦r❣ ❤tt♣✿✴✴❜t✳♣♦st❣r❡sq❧✳♦r❣

– Sites ftp de téléchargement de produits tiers :

❢t♣✿✴✴❢t♣✳❞❡❜✐❛♥✳♦r❣

– Documentation sur les standards pertinents pour le projet :

❢t♣✿✴✴sq❧st❛♥❞❛r❞s✳♦r❣

– Pages personnelles de développeurs :

❤tt♣✿✴✴❞❡✈❡❧♦♣❡r✳♣♦st❣r❡sq❧✳♦r❣✴⑦❛❞✉♥st❛♥✴

– Données de gestion de version internes au projet :

❤tt♣✿✴✴❛♥♦♥❝✈s✳♣♦st❣r❡sq❧✳♦r❣

– Données de gestion de projets tiers :

❤tt♣✿✴✴❣✐t✳❦❡r♥❡❧✳♦r❣✴❄♣❂❧✐♥✉①✴❦❡r♥❡❧✴❣✐t✴t♦r✈❛❧❞s✴❧✐♥✉①✲✷✳✻✳❣✐t

– Archives de listes de discussion internes au projet :

❤tt♣✿✴✴❛r❝❤✐✈❡s✳♣♦st❣r❡sq❧✳♦r❣

– Publications sur des blogs :

❤tt♣✿✴✴❜❧♦❣s✳s✉♥✳❝♦♠✴❜♦♥✇✐❝❦✴❡♥tr②✴③❢s❴❡♥❞❴t♦❴❡♥❞❴❞❛t❛

– Fiches de bug externes au projet :

❤tt♣✿✴✴❜✉❣s✳❞❡❜✐❛♥✳♦r❣✴❝❣✐✲❜✐♥✴❜✉❣r❡♣♦rt✳❝❣✐❄❜✉❣❂✶✸✾✸✽✾

– Serveur d’intégration continue :

❤tt♣✿✴✴❜✉✐❧❞❢❛r♠✳♣♦st❣r❡sq❧✳♦r❣✴❝❣✐✲❜✐♥✴s❤♦✇❴❧♦❣✳♣❧❄♥♠❂❝r❛❦❡✫❞t❂✷✵✶✶✲✵✼✲✶✷✪ ✷✵✷✷✿✸✷✿✵✷

– Articles de recherche :

❤tt♣✿✴✴❝✐t❡s❡❡r①✳✐st✳♣s✉✳❡❞✉✴✈✐❡✇❞♦❝✴s✉♠♠❛r②❄❞♦✐❂✶✵✳✶✳✶✳✶✷✳✼✶✵✵

7.2.1.3.2 Étude détaillée et résultats Le contenu de certains liens peut être inféré à partir de leur structure et des mots clés présents dans leurs URLs. Des heuristiques ont donc été développées pour déterminer la nature de l’information vers laquelle pointe chacun de liens. Par exemple, un lien pointant vers une page du domaine ❛r❝❤✐✈❡s✳♣♦st❣r❡sq❧✳♦r❣ parle d’un échange sur une liste de discussion. Sur le sous-ensemble de 22 623 liens pour lesquels cette inférence peut être réalisée, on obtient la répartition de liens du tableau7.2.

Cette répartition montre la prépondérance des références à la documentation et aux dis-cussions précédentes. Cette utilisation n’est possible que parce que les systèmes logiciels (ar-chive de liste de discussion, site web de documentation) qui contiennent l’information per-mettent de la référencer de manière relativement précise par une URL. Dans le cas contraire,

les références se limiteraient à des “indications” pour retrouver l’information, comme “voir la discussion que j’ai eu avec <participant> il y a 3 mois au sujet de <thème>” ou “voir la section de la documentation qui parle des problèmes avec <thème> sous <système d’exploi-tation>”. Cependant, cette manière de communiquer ralentit toute l’équipe, parce qu’il faut un travail de recherche chaque fois qu’une telle référence est donnée.

Cette utilité des liens profonds est encore plus manifeste quand on considère que les liens vers les données de gestion de versions sont des plus fréquents. En effet, l’information de gestion de version est capitale, entre autres, dans la résolution des bugs. Elle permet d’iden-tifier les changements qui ont introduit les bugs, de retrouver les justifications avancées pour ces changements, et d’évaluer les sous-systèmes impactés en analysant l’historique du projet. Le système de gestion de versions met à disposition des liens profonds vers des informations précises comme les fichiers modifiés dans un commit particulier. Ceci facilite l’analyse colla-borative d’un bug, en mettant l’information utile à portée de clic.

Cet exemple montre que le système de gestion de version ne se contente pas simplement de gérer l’évolution des informations de version. Il fournit, d’une part, des concepts structurant cette information (commit, branche, auteur de commit, merge, etc.). D’autre part, il associe à ces informations des URLs qui forment un langage de requête sur les données de gestion de version. Ceci permet lors des échanges entre développeurs d’utiliser facilement cette infor-mation pour construire de la connaissance partagée, ce qui est crucial dans toute situation de collaboration [Rosc 94]. En l’absence d’une telle fonctionnalité, les développeurs sont réduits à décrire à leurs pairs les étapes nécessaires pour retrouver l’information, ce qui introduit des lourdeurs, et donc des frictions [Booc 03] dans la collaboration. Autrement dit, l’informa-tion qui contribue à la collaboral’informa-tion ne doit pas seulement être utile, mais aussi facilement accessible.

La mise à disposition de l’information de processus à travers des liens profonds permet d’exploiter cette information (description d’une tâche, deadlines, disponibilité des partici-pants, état d’avancement des tâches, etc.) dans les outils de discussion. Ainsi, l’information de processus ne sera plus, de part la conception des outils qui la gèrent, détachée et difficile à relier aux préoccupations journalières des participants à un projet logiciel.