Les forges logicielles sont issues du milieu du logiciel libre.
Pour faire collaborer des développeurs issus de tous milieux et de tous pays, il fallait des outils collaboratifs accessibles à tous, et un lieu pour échanger codes et conseils. Ainsi est née SourceForge [1], première forge logicielle, qui reste aujourd’hui encore la référence. Le concept : réunir un ensemble de services pour le développement collaboratif, sur une plate-forme centralisée et accessible par le web.
SourceForge offre gratuitement, à toute équipe travaillant sur un projet de logiciel libre, un espace dédié pour gérer le code source du projet, des forums de discussions pour échanger entre programmeurs et utilisateurs, la gestion de documents, le suivi des bugs, etc.
Les développeurs de l’IN2P3 qui participent à de grandes expériences de physique bénéficient souvent d’une forge mise en place pour l’expérience [2]. Pour tous les autres, le centre de calcul ouvre progressivement sa forge. L’intérêt d’une telle plate-forme pour l’institut est multiple :
servir de vitrine pour ses développements logiciels ;
aider les agents de l’IN2P3 à mieux connaître les travaux des uns et des autres et ainsi mieux les réutiliser ;
héberger des projets privés, que ce soit pour des raisons de partenariat avec l’industrie, ou simplement parce que les auteurs ne se sentent pas prêts à exposer leur code.
Le Centre de Calcul ayant déjà un service mature pour la gestion des dépôts de code. C’est pourquoi les ingénieurs du centre ont opté pour un moteur de forge complémentaire, modeste et de conception récente : Redmine.
Ce moteur à plusieurs qualités, notamment une vision d’ensemble des projets avec une notion de sous-projets, une administration qui se fait entièrement par le web, et le framework web réputé sur lequel il s’appuie : RubyOnRails.
Une fois le compte activé pour se connecter à la forge, il est possible de demander à être rattaché à un projet ou de créer directement le sien.
Chaque membre d’un projet peut avoir un ou plusieurs rôles, définissant ses droits :
les "Reporters", limités à soumettre des bugs, demander des fonctionnalités, poster des messages, et voir tous les documents ;
les "Programmers", qui peuvent également contribuer aux documents disponibles ;
les "Managers", qui ont tous les droits sur le projet.
Actuellement, différentes fonctionnalités existent pour les membres, comme :
la possibilité de consulter toutes les révisions du dépôt de code du projet, pour pratiquement tous les outils de gestion de version du marché (CVS, Subversion, Git, etc) ;
la possibilité de publier des nouvelles, de consulter et contribuer à un wiki, d’éditer des documents, d’attacher des fichiers, de débattre dans des forums de discussions propres au projet ;
la gestion de "problèmes" de tous types (bugs, demandes, tâches, etc.), que l’on peut ouvrir/commenter/prioriser/assigner/fermer.
la gestion du temps passé sur chaque problème, la planification des projets (jusqu’au diagramme de Gantt).
Néanmoins, comme tout produit relativement jeune, toutes les fonctionnalités souhaitées ne sont pas encore disponibles. Celles-ci nécessitent effectivement certaines améliorations qui peuvent être apportées par les développeurs de l’IN2P3. Parmi ces améliorations, il y a entre autre :
L’intégration avec le système de gestion des dépôts de code. Actuellement, il faut créer un nouveau dépôt CVS [3] et un nouveau projet Redmine. Cette procédure pourrait être simplifiée en envisageant par exemple le déclenchement systématique de la création d’un dépôt de code lorsqu’un nouveau projet est crée. Ici, l’obstacle est classique : les deux services ne reposent pas sur les mêmes mécanismes d’authentification.
La gestion des nouveaux utilisateurs externes à l’Institut. La forge est utilisée pour dialoguer avec les utilisateurs (débats dans les forums, soumission de bugs et de demandes). Aussi, de nombreuses requêtes de création de compte sont-elles attendues. Il faut réussir à faire le tri entre spammeurs et utilisateurs légitimes.
La classification des projets. La liste des projets s’allongeant, il devient nécessaire de classer ces derniers, par exemple en s’appuyant sur la notion de sous-projets, en créant des projets à la racine pour chaque famille d’outils, en mettant en place un système d’étiquetage, en reprenant les étiquettes retenues par Plume…
Les possibilités de perfectionner la forge du Centre de Calcul sont donc nombreuses. Néanmoins, ces améliorations ne pourront s’effectuer sans l’aide et les idées des développeurs de l’IN2P3, qui, en retour, se verront offrir l’opportunité de s’initier à un nouveau langage : Ruby
David Chamont