Pourquoi Software Heritage crée un patrimoine mondial du logiciel
- Software Heritage a été lancé en 2015 en tant qu’initiative de préservation numérique.
- Son ambition : collecter, préserver et partager tous les logiciels disponibles publiquement sous forme de code source.
- La préservation du code source des logiciels est également importante pour la recherche et l’industrie, car ils sont de plus en plus utilisés dans ces domaines.
- Les logiciels libres sont également omniprésents dans les produits informatiques de nos jours – par exemple, dans les appareils IoT, les téléphones, les voitures et les caméras.
- L’objectif de ces bibliothèques était d’accumuler le maximum de connaissances en un seul endroit. Software Heritage est la Bibliothèque d’Alexandrie pour ce bien moderne précieux qu’est le code source des logiciels.
Software Heritage a été lancé en 2015 en tant qu’initiative de préservation numérique. Son ambition : collecter, préserver et partager tous les logiciels disponibles publiquement sous forme de code source. Une telle archive logicielle universelle garantira la fiabilité ou l’originalité du code source, de sorte que la version « officielle » non modifiée du code est ainsi préservée à jamais, quelles que soient les modifications ultérieures qui peuvent y être apportées.
Une telle préservation est importante parce que la création d’un logiciel demande beaucoup d’énergie intellectuelle et contient des connaissances techniques avancées, sous forme d’algorithmes, qui ne sont compréhensibles qu’en lisant le code source du logiciel. « Ces connaissances peuvent contenir des innovations, de sorte que le code source de certains logiciels peut être aussi innovant qu’un article scientifique ou qu’un brevet », explique Stefano Zacchiroli de Télécom Paris, l’un des fondateurs de Software Heritage. L’UNESCO a reconnu la nécessité d’éviter la perte de ces connaissances techniques importantes dans « Le code source des logiciels : un patrimoine – L’Appel de Paris »1.
Software Heritage a rassemblé la plus grande archive publique de logiciels sous forme de code source, comprenant plus de 10 milliards de fichiers de code source uniques et plus de deux milliards de commits – les révisions internes des logiciels utilisées par les développeurs – issus de plus de 160 millions de projets de développement. Parmi les plus célèbres : le code source du système de navigation d’Apollo 11, qui permit le premier pas sur la Lune, ou celui du navigateur NCSA Mosaic, qui popularisa l’utilisation du web. La taille de l’archive est actuellement d’environ un pétaoctet, ce qui est significatif mais pas aussi grand que les archives de vidéos, par exemple. Le projet a été fondé en 2016 par Roberto Di Cosmo (Inria et Université de Paris) et Stefano Zacchiroli (Télécom Paris) en collaboration avec Inria et l’UNESCO. Il compte désormais un certain nombre de sponsors issus des secteurs privé et public, y compris le CNRS.
La préservation du code source et des logiciels est également importante pour la recherche et l’industrie, car ils sont de plus en plus utilisés dans ces domaines. En effet, une grande partie des connaissances techniques et scientifiques développées aujourd’hui réside dans les logiciels, qui doivent donc être conservés pour garantir la reproductibilité des expériences et des résultats, base de la démarche scientifique.
Cette approche se retrouve déjà dans des mouvements comme l’Open Access, par exemple, qui garantit que les articles scientifiques sont disponibles sur le long terme et accessibles à tous. Elle s’incarne également dans le mouvement de l’Open Data, qui vise à garantir que les données scientifiques sont ouvertes et partagées universellement. Software Heritage contribue à ces efforts en assurant l’archivage à long terme des logiciels sous forme de code source. Parfois, le logiciel lui-même constitue une avancée scientifique majeure, et le code source renferme une connaissance précieuse qui doit être préservée pour des réutilisations ultérieures.
Les logiciels libres sont également omniprésents dans les produits informatiques de nos jours – par exemple, dans les appareils IoT, les téléphones, les voitures et les caméras. La difficulté ici est que tout le monde peut modifier ces logiciels, de sorte que des variantes d’un logiciel deviennent partie intégrante des nouveaux appareils. Software Heritage fournit un endroit où la version originelle du logiciel peut être stockée avec des « identifiants » permettant de reconnaître la version spécifique du logiciel installé dans un appareil donné. Ces identifiants permettent le suivi des vulnérabilités du logiciel dans des produits fabriqués ultérieurement et de reconnaître des produits informatiques qui doivent être « réparés ».
La base de données, comment est-elle construite ?
Software Heritage archive principalement le code source en parcourant ou en « crawlant » les plateformes publiques utilisées pour développer des logiciels libres de manière collaborative. Les plus connues sont GitHub et GitLab. Une autre méthode consiste à faire appel à des chercheurs qui « poussent » activement des logiciels vers les archives. Par exemple, en France, HAL est une plateforme populaire, financée par des fonds publics et en libre accès, utilisée par la communauté scientifique pour déposer des articles sous forme de preprints. Le point clé à noter ici : les logiciels, et en particulier les logiciels libres, sont massivement dupliqués de nos jours. Le même morceau de code source peut ainsi se trouver simultanément dans des milliers, voire des millions, d’endroits différents sur Internet.
Pour faire face à ce problème, Software Heritage structure l’archive comme un graphe géant (dans une structure appelée DAG de Merkle), qui est entièrement dé-dupliqué. Cela signifie que si le même fichier de code source est stocké dans des milliers ou des millions d’emplacements différents, il ne sera archivé qu’une seule fois, tout en gardant la trace de tous les différents emplacements. C’est le cas non seulement pour des fichiers individuels, mais aussi pour des répertoires entiers de code source et des commits, qui peuvent être très volumineux pour des logiciels importants.
Il est essentiel de procéder ainsi pour contrôler la taille de l’archive et pour minimiser la duplication des informations qui doivent être sauvegardées. C’est également utile pour les cas d’utilisation scientifique. En regardant ce graphique global du code public, vous pouvez identifier qui a référencé un de vos logiciels et qui l’a peut-être utilisé pour en créer un autre. En un sens, ce graphique permet de mesurer l’impact des logiciels développés par les chercheurs et les développeurs de logiciels libres.
« Software Heritage est une ‘grande bibliothèque de code source’, analogue aux grandes bibliothèques du monde antique », explique Zacchiroli. « L’objectif de ces bibliothèques était d’accumuler le maximum de connaissances en un seul endroit. Software Heritage est la Bibliothèque d’Alexandrie pour ce bien moderne précieux qu’est le code source des logiciels. » Nous pouvons visiter cette bibliothèque du patrimoine logiciel pour trouver le code qui nous intéresse, peut-être parce qu’il a disparu de son lieu d’hébergement d’origine, ou peut-être pour analyser toute l’étendue des connaissances qui y sont stockées.
Propos recueillis par Isabelle Dumé
Pour plus d’informations : https://www.softwareheritage.org/