Vers plus de reproductibilité

Comment rendre vos développements et vos calculs plus reproductibles ?

Pourquoi et comment rendre vos développements et vos calculs plus reproductibles ? La reproductibilité de la recherche est une thématique qui concerne toutes les disciplines scientifiques et qui s’inscrit pleinement dans le plan pour la Science Ouverte et la loi pour l’intégrité scientifique. Les bénéfices qu’on peut en tirer sont nombreux et concernent tout un panel de personnes. En effet, reprendre son travail 5 ans après, le transmettre à des collègues de son équipe, un doctorant qui arrive ou assurer une diffusion plus large sont d’autant plus faciles que certaines bonnes pratiques ont été suivies lors des phases de production, d’utilisation et de diffusion.

Bonnes pratiques pour le développement logiciel

  • Utiliser une convention de nommage pour vos variables et vos fichiers afin de faciliter la lecture et l’utilisation de votre logiciel.
  • Choisir et mettre une licence sur vos développements.
    • Cette présentation détaille les différentes licenses envisageables et aborde les aspects juridiques. La license va en effet déterminer la façon dont les utilisateurs vont pouvoir réutiliser vos développements.
  • Utiliser un environnement de développement intégré (IDE)
    • Il existe plusieurs d’exemples d’IDE et le choix se portera sur celui le plus adapté à vos besoins : VScodium, Xcode, Eclipse, …
  • Utiliser une forge logicielle pour gérer l’historique collaboratif
    • Utiliser de préférence une forge souveraine comme gricad-gitlab.
  • Inclure des tests unitaires dans le code.
  • Inclure des cas-tests exécutés automatiquement (grâce notamment à de l’intégration continue) pour vérifier que les nouveaux développements ne modifient pas comportement du logiciel.
  • Rédiger une documentation claire détaillée et la plus automatique possible.
    • Il existe plusieurs outils pour faire de la documentation automatique de code : Sphynx, Doxygen, etc ..

Pour aller plus loin, vous pouvez consulter ce document édité par les informaticiens du réseau DEVLOG :

Bonnes pratiques pour l’exécution des calculs

Pour rendre votre travail reproductible, vous devez prêter une attention particulière à l’environnement logiciel dans lequel vous avez effectué vos développements et exécuté votre code. La description de cet environnement et la façon de le recréer ailleurs et/ou plus tard doit être diffusée de la même façon que votre logiciel.

Sur les clusters de Gricad, plusieurs outils sont à votre disposition pour déployer l’environnement logiciel dont vous avez besoin : voir la section Calcul intensif.

Certains sont plus reproductibles que d’autres pour des raisons intrinsèques. Par exemple, Guix ou Nix permettent de construire un environnement isolé de la machine de calcul, ce qui est moins vrai dans le cas de conda / mamba / micromamba, qui s’appuient sur des composantes logiciels déjà présents sur la machine.

Une autre façon de reproduire son environnement logiciel est l’utilisation de conteneurs. Cela permet de fournir à un utilisateur un logiciel et un environnement logiciel complet et isolé (librairies et dépendances) pour le faire fonctionner. Parmi les plateforme de conteneurisation répandues, on peut citer Docker ou Apptainer mais il en existe d’autres.

En terme de reproductibilité, Guix et Nix sont clairement les plus performants, suivis par les conteneurs. Les outils basés sur conda / mamba sont moins performants (toujours du point de vue de la reproductibilité).

Mise à part les conteneurs qui ont un mode de fonctionnement différent, pour chaque outil, il existe une façon de “capturer” l’environnement d’exécution :

guix package --export-manifest > manifest.scm
nix-env --switch-profile $NIX_USER_PROFILE_DIR/test_profile
conda create -n <env_name> <pkg-name1> <pkg-name2> <pkg-name3>

et le remettre en place ultérieurement :

guix shell -m manifest.scm
nix-env --switch-profile $NIX_USER_PROFILE_DIR/test_profile
conda activate /path/to/env

Pour assurer la reproductibilité, le dépôt git du projet contiendra ces informations. Ainsi un utilisateur qui aura téléchargé les sources du logiciel sera en mesure de connaître et redéployer l’environnement logiciel d’exécution.

Enfin, un document décrivant les différentes étapes de l’exécution et éventuellement un cas-test est aussi nécessaire : cela permettra à l’utilisateur d’identifier clairement les parties à exécuter et dans quel ordre.

Pour une description plus exhaustive, vous pouvez trouver des informations sur ce site.

Bonnes pratiques pour la diffusion du logiciel

Si vos développements sont associés à une publication, le lecteur voudra avoir accès à la version qui correspond exactement à celle décrite dans l’article. Il faudra donc indiquer précisément le “commit” correspondant. Pour cela la plateforme Software Heritage sera d’une grande aide.

Etapes préliminaires

Pour diffuser votre logiciel, plusieurs étapes préliminaires sont à réaliser :

  • Vérifier que le dépôt git qui contient les fichiers source est indexé dans la plateforme Software Heritage.
    • Cela permet d’obtenir un identifiant pérenne (SWHID) qui permet de fixer la version des sources utilisées dans une publication par exemple. Chaque contribution ultérieure peut elle-même être identifiée par un identifiant différent.
  • Rédiger une fiche HAL pour votre logiciel
    • La rédaction de la fiche HAl pour un logiciel est grandement facilitée par l’indication du SWHID : toutes les métadonnées sont automatiquement récupérées (dépôt git, etc …).

La diffusion

La fiche HAL contient normalement toutes les informations nécessaires au téléchargement et à la réutilisation de votre logiciel !

Pour aller plus loin, vous pouvez consulter ce document édité par les informaticiens du réseau DEVLOG :

Conclusions

En résumé, vous devez fournir votre logiciel muni de la licence choisie, la liste des auteurs et des contributeurs, son identifiant SWHID, la description de l’environnement logiciel et sa documentation (code + exécution).

Pour toute question : N’hésitez pas à nous contacter par mail à sos-gricad@univ-grenoble-alpes.fr

Pour plus d’information sur GRICAD, vous pouvez consulter notre site web.

Si la thématique de la reproductibilité vous intéresse, vous trouverez plus d’informations sur le site du réseau national de recherche reproductible.