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.
Pour aller plus loin, vous pouvez consulter ce document édité par les informaticiens du réseau DEVLOG :
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.
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.
Pour diffuser votre logiciel, plusieurs étapes préliminaires sont à réaliser :
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 :
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.