Changed on 08/07/2021
Reproduire des expériences scientifiques largement basées sur l’outil informatique devient presque impossible avec des logiciels, versions et fonctions qui évoluent en permanence. La version 1.0 du logiciel libre Guix , disponible depuis mai 2019, relève ce défi, notamment en calcul haute performance (HPC). Elle permet en particulier de "remonter le temps" pour retrouver des versions antérieures de logiciels. Explications de Ludovic Courtès, d’Inria Bordeaux, l’un des chefs d’orchestre de ce projet collaboratif.

Dans le monde du logiciel libre, les premières livraisons d’un applicatif sont numérotées en 0.X (0.1, 0.2, 0.3 etc.) alors que le passage au 1.X témoigne d’une certaine maturité. « C’est le cas pour Guix 1.0, sourit Ludovic Courtès, d’Inria Bordeaux. Il succède à 19 versions 0.X livrées depuis 2013 et atteint ses objectifs de déploiement logiciel reproductible, notamment en calcul haute performance (HPC). Nous y avons travaillé plus particulièrement avec deux équipes étrangères*. »

Sans reproductibilité, une démarche scientifique entravée

Ce terme de "reproductibilité des sciences" mérite d’être expliqué. Il décrit la possibilité de mener une expérience en des lieux et/ou à des moments différents, avec des conditions expérimentales identiques. C’est enfantin s’il s’agit de mélanger trois produits chimiques sur une paillasse. C’est infiniment plus difficile quand une expérience mobilise des dizaines, voire des centaines de logiciels — ce qui est courant — et que sa complexité nécessite le recours au HPC, avec des grappes de calcul qui mettent en réseau des centaines de machines.

Le HPC devient la norme dans des domaines comme la simulation numérique, la génomique ou la bio-informatique, et la reproductibilité des expériences devient un sujet de controverse. La démarche scientifique nécessite de vérifier les résultats publiés et d’évaluer leur sensibilité à certains paramètres. Si c’est impossible, elle est entravée.

détaille Ludovic Courtès.

Les limites des gestionnaires de paquets et des conteneurs

Il existe déjà deux types d’outils pour composer avec cette difficulté. Le premier, le gestionnaire de paquets, décrit les éléments de l’application qui sert à l’expérience : bibliothèques, compilateurs, codes sources des logiciels, etc. Mais comme les chercheurs n’ont pas la main sur les machines de calcul qui seront utilisées, ils ne savent pas quelles versions de logiciels seront employées. « Or, chaque logiciel a un impact sur le comportement des autres et sur le résultat », rappelle Ludovic Courtès.
Le conteneur, deuxième outil disponible, est plus complet. Il accueille à la fois l’application et l’ensemble des logiciels dont elle dépend, y compris une partie du système d’exploitation. La reproductibilité est totale, mais figée. Car cette "boîte noire" n’entre pas dans le détail des spécifications et ne permet aucune modification de paramètres pour tester d’autres hypothèses. Les chercheurs resteront sur leur faim. 

Une description complète, fidèle et modifiable de l’expérience

Et Guix 1.0 dans tout cela ?

C’est un outil qui adopte une approche de gestionnaire de paquets, mais avec les bénéfices du conteneur 

résume Ludovic Courtès. Comme le gestionnaire de paquets, il décrit les éléments d’une expérience et permet donc de la modifier. Comme le conteneur, il est complet et fidèle à l’expérience originale. Quitte, si besoin, à "remonter le temps" pour retrouver la version antérieure d’un logiciel, celle utilisée au départ. 
Ce tour de force est possible grâce au partenariat avec Software Heritage, le projet collaboratif d’archive universelle et pérenne du logiciel lancé en 2016 avec le soutien d’Inria et de l’Unesco. « Si l’URL du site qui héberge le code n’est plus valide ou si la plate-forme de développement a fermé, Guix bascule de manière transparente vers nos archives et récupère le code source originel , explique Roberto Di Cosmo, PDG de Software HeritageIl n’y a donc pas nécessité de modifier les descriptions de paquets. »

10 000 logiciels libres disponibles

Guix est développé depuis 2012 par une communauté de plus de 250 contributeurs dont les propositions et les codes sont validés par leurs pairs. À ce jour, il intègre environ 10 000 logiciels libres, dont une part dédiée à la génomique et à la bio-informatique. C’est le fruit des deux ans de collaboration avec les laboratoires étrangers, qui ont activement participé à cette version 1.0 ouverte sur le HPC.
Pour ces équipes, les bénéfices sont majeurs. « Nos expériences reposent de plus en plus sur des logiciels hébergés par des sites tiers,  rappelle Altuna Akalin, chercheur au Max Delbrück Center for Molecular Medicine (Berlin). Guix nous permet malgré tout de reconstruire fidèlement leur environnement logiciel, tout en nous déchargeant de vérifications informatiques fastidieuses. » 
Les chercheurs allemands ont utilisé l’outil pour reproduire quatre expériences de séquençage d’ADN courantes, en employant des machines différentes et en générant le code plus de 300 fois. Dans 97,8 % des cas, ces codes sont identiques au bit près, et beaucoup des bugs résiduels sont faciles à corriger. Pas encore la reproductibilité parfaite, mais Guix 1.0 fait un grand pas pour s’en rapprocher.

* Max Delbrück Center for Molecular Medicine (Allemagne) et Utrecht Bioinformatics Center (Pays-Bas)