Software Heritage : la bibliothèque d’Alexandrie du logiciel

Deux personnes discutent de code
Le projet Software Heritage a pour objectif de construire une bibliothèque d’Alexandrie du logiciel ; une archive universelle et pérenne du code source au service de la société, de la science et de l’industrie.

Dans la société de l’information d’aujourd’hui, les logiciels sont partout. Ils sont au cœur de la recherche scientifique, des développements technologiques et de plus en plus de processus industriels. Ils jouent un rôle central dans notre vie quotidienne et notre société. Ils nous permettent d’accéder aux connaissances et au patrimoine culturel de l’humanité, dont ils font eux-mêmes partie. Cependant, les logiciels sont fragiles : ils peuvent être altérés ou rendus inutilisables.

Software Heritage est aussi un outil fantastique pour examiner les logiciels en développement aujourd’hui, qui doit permettre aux programmeurs de construire de meilleurs logiciels.

“Afin de préserver ce patrimoine et de répondre aux défis technologiques et scientifiques de demain, il est essentiel de construire dès aujourd’hui une archive universelle et pérenne du logiciel.” Tel est l’objectif ambitieux de Software Heritage. Lancé par l’Institut national de recherche en sciences et technologies du numérique (Inria) en 2016 et mené en partenariat avec l’UNESCO, ce projet vise à collecter, préserver et rendre accessibles tous les logiciels disponibles publiquement sous forme de code source. Le code source est un texte qui détaille les instructions d’un programme informatique dans un langage de programmation lisible et utilisable par l’homme.

Le concept de patrimoine logiciel

Une large part des informations produites dans le monde se présente sous forme numérique. Dans le domaine scientifique, par exemple, les dispositifs de publicisation des sciences sur Internet (revues électroniques, portails d’archives ouvertes, blogs, etc.) jouent aujourd’hui, aux côtés des ouvrages et des revues scientifiques sur papier, un rôle essentiel dans la dissémination des connaissances et la valorisation de la recherche.

En parallèle, les technologies numériques sont de plus en plus utilisées dans le secteur culturel pour la préservation du patrimoine. De grands programmes ont été lancés visant à numériser en masse les collections des musées, des bibliothèques, des archives, ainsi que les monuments et les sites historiques.

Accéder à, manipuler et interpréter ces ressources numériques, quel que soit le support physique sur lequel elles sont stockées, nécessite des logiciels. En ce sens, le logiciel est “un médiateur indispensable pour accéder à tout l’héritage culturel, la pierre de Rosette contenant aussi bien la donnée brute que le moyen de la reconvertir en information”.

Eux-mêmes expression de la créativité et de l’intelligence humaines, les logiciels constituent une part de notre héritage qu’il convient de protéger et de transmettre aux générations futures. L’UNESCO les inclut donc dans la Charte sur la conservation du patrimoine numérique qu’elle a adoptée en 2003. En 2017, l’agence onusienne a signé avec l’Inria un accord relatif à la préservation et à l’accès au code source des logiciels, faisant entrer le projet Software Heritage dans une nouvelle dimension.

Un voyage dans le passé (et l’avenir) de la programmation

Tout individu peut utiliser Software Heritage pour trouver, étudier, améliorer et réutiliser le code dont elle a besoin. “Notre archive est un observatoire absolument unique du développement des logiciels de la planète,” affirme Roberto Di Cosmo, Directeur de Software Heritage, dans une interview accordée au magazine Usbek & Rica. Garder la trace de milliers de langages de programmation, ainsi que de toute ressource relative au développement des programmes (documentation, articles, commentaires laissés par les programmeurs, etc.), représente un intérêt immense pour les chercheurs spécialisés dans l’histoire de l’informatique. L’archive peut servir de base à des travaux fondamentaux, comme ceux qui ont été menés sur l’histoire d’Unix ou le code source de l’Apollo Guidance Computer.

Au-delà d’être une “machine à remonter le temps”, une archive des logiciels du passé, le dispositif permet d’examiner les logiciels en développement actuellement. Les développeurs peuvent s’appuyer dessus pour construire de meilleurs programmes.

Une brique clé de la science ouverte

Software Heritage souhaite devenir la référence pour les logiciels utilisés dans la recherche scientifique, complétant ainsi les démarches de libre accès et d’open data qui visent à rendre les publications et les données scientifiques librement accessibles à tous.

La reproductibilité des résultats d’une expérience est un impératif de la méthode scientifique. Elle permet de valider scientifiquement une recherche. Pour garantir cette reproductibilité, il faut pouvoir accéder aux articles qui présentent les résultats, aux données de recherche, mais aussi aux logiciels employés lors de l’expérience. En effet, ceux-ci interviennent désormais à toutes les étapes de la recherche, dans toutes les disciplines scientifiques. Avec Software Heritage, les chercheurs peuvent connaître avec exactitude la version du logiciel sur lesquels s’appuient les travaux de recherche.

Archiver, rendre accessible et préserver

Tâche titanesque, l’archivage de tous les codes sources – Software Heritage n’opère pas de sélection – repose sur différents mécanismes. Les programmeurs et les différentes entités possédant ce que l’on appelle des “artefacts logiciels” (tout élément produit lors du processus de développement) peuvent déposer et référencer eux-mêmes du code source en incluant plusieurs fichiers (description du logiciel, personnes à créditer, licence du projet, fichier de métadonnées pour aider à l’indexation du code source). Les internautes peuvent participer au projet en soumettant une demande de sauvegarde de tout code source “contemporain” qui n’est pas encore intégré dans l’archive, ou qui n’est pas à jour. Cela complète l’exploration automatique (crawling) effectuée sur les principales plateformes d’hébergement de code pour découvrir continuellement des “origines logicielles” (emplacements identifiés par des URLs à partir desquels un ensemble cohérent de codes sources a été obtenu). Ils peuvent également contribuer à la récupération et à l’organisation du code source historique en suivant le processus d’acquisition du patrimoine logiciel SWHAP, développé en collaboration avec l’Université de Pise.

Un travail d’organisation et d’indexation des collections et de fourniture d’outils de recherche à l’intérieur de l’archive doit permettre aux utilisateurs de s’y retrouver parmi tous ces logiciels. Un identifiant unique est attribué à chaque artefact logiciel, et il est possible de lancer une recherche à partir des métadonnées des logiciels, collectées et extraites par le projet. Les utilisateurs peuvent écrire des programmes pour naviguer dans l’archive via l’API Software Heritage.

Enfin, pour s’assurer de la pérennité des archives, plusieurs précautions ont été prises. Il existe aujourd’hui trois copies de l’archive : deux sont dans les data centers de l’Inria, et une est sur un cloud de Microsoft dans un autre pays. Les membres du projet travaillent aussi sur un réseau de “miroirs” international, des copies complètes de l’archive gérées par d’autres entités, totalement indépendantes de l’Inria. De cette façon, les précieux logiciels de Software Heritage ne devraient jamais connaître le destin tragique des documents de la Bibliothèque d’Alexandrie.

Selon l’Inria, Software Heritage a collecté à ce jour plus de vingt millions de projets logiciels, deux milliards et demi de fichiers sources uniques ainsi que tout l’historique de leur développement, ce qui en ferait déjà l’archive de code source la plus riche de la planète.

A lire aussi sur Hello Future