Dans cet article, je vous propose de découvrir Software Heritage, l’archive universelle dédiée à la collecte, la préservation et le partage des codes sources logiciels.
En 2021, je suis devenu ambassadeur pour Software Heritage, c’est-à-dire représentant de la communauté bioinformatique, dans l’infrastructure Software Heritage.
Pourquoi archiver son code source ?
Aujourd’hui, les scientifiques utilisent très souvent des logiciels pour leurs recherches, et en sont même régulièrement les auteur.e.s. Selon une étude datant de 2014, 92 % des chercheurs et des chercheuses utilisent des logiciels dans leurs travaux et 56 % développent leurs propres outils. Quand je parle de logiciel, il faut comprendre ce terme au sens large, allant de logiciels complets type Gromacs, Samtools ou OpenMS qui sont développés et maintenus par toute une équipe depuis plusieurs années, jusqu’au script Python ou R que vous produisez pour réaliser vos figures d’articles.
Quand on développe un code informatique, en bioinformatique comme ailleurs, il est désormais admis comme une bonne pratique d’utiliser un gestionnaire de version, comme Git, pour conserver l’historique des modifications du code source (voir, par exemple, ces références ici, là, et encore là). L’utilisation de plateformes de développement (ou forges) comme GitHub ou GitLab permet de partager son code avec le plus grand nombre et facilite la collaboration (voir cette référence et les articles correspondants sur Bioinfo-fr ici et là).
Par ailleurs, l’ouverture et le partage du code source logiciel (open source) est un des piliers de la science ouverte, tout comme l’ouverture des publications (open access) et des données (open data).
Le problème avec les plateformes de développement logiciel est qu’elles peuvent disparaître ou supprimer certaines fonctionnalités du jour au lendemain. Ce fut, par exemple, le cas pour Google Code en 2015 ou bien Bitbucket en 2020 qui décida d’arrêter le support du gestionnaire de version Mercurial (un équivalent à Git). Dans le premier cas, 1,4 million de projets furent détruits. Dans le second, 250 000 dépôts logiciels ont été supprimés.
Qu’on soit chercheu.r.se ou personnel de soutien à la recherche, nous ne pouvons pas nous permettre de perdre nos codes sources logiciels, car ils sont essentiels pour la reproductibilité à long terme.
C’est ici que Software Heritage entre en jeu.
Remarque : Les deux exemples précédents concernaient des plateformes de développement commerciales. Pour autant, les plateformes institutionnelles ne sont pas toujours pérennes. Ainsi, en 2020, l’ancienne forge de l’Inria, basée sur GForge, a été arrêtée au profit d’une nouvelle basée sur GitLab. Une migration des projets a été réalisée, mais certains logiciels ne sont plus accessibles (voir, par exemple, ici et là). De manière générale, le fort éparpillement des forges logicielles dans l’enseignement supérieur et la recherche en France et les contraintes liées à leur utilisation (authentification, collaboration, CI/CD…) conduisent de nombreux scientifiques à partager leur code sur des plateformes commerciales comme GitHub ou GitLab. Si ce sujet des forges dans l’Enseignement Supérieur et la Recherche (ESR) vous intéresse, je vous recommande le récent rapport « Forges de l’Enseignement supérieur et de la Recherche - Définition, usages, limitations rencontrées et analyse des besoins ».
Qu’est-ce que Software Heritage ?
Software Heritage est une organisation à but non lucratif créée en 2016 à l’Inria par Roberto Di Cosmo et Stefano Zacchiroli. Elle vise à archiver tous les codes sources ouverts, pour toujours et gratuitement. À ce jour (janvier 2025), elle contient plus de 22 milliards de fichiers source issus de 341 millions de projets (source). Cette énorme archive inclut des codes sources provenant de plateformes de développement comme GitHub, GitLab et Bitbucket, mais aussi d’entrepôts logiciels comme le CRAN (pour les paquets R), PyPI (pour les paquets Python), et bien d’autres encore. Software Heritage est soutenue par des organisations publiques et privées comme l’Unesco, l’Inria, le CNRS, Intel…
Les avantages de Software Heritage
Software Heritage propose :
- Un archivage permanent : Les codes sources sont préservés avec tout leur historique de développement, même si la plateforme d’origine disparaît.
- Un accès gratuit et facilité : Le service d’archivage et l’accès aux archives est ouvert à tou.te.s.
- Un identifiant unique (appelé SoftWare Hash Identifier ou SWHID) : Software Heritage génère un identifiant intrinsèque et persistant pour chaque version du code source. Cet identifiant, similaire à un DOI, est recalculable directement à partir du code. Le SWHID permet de citer une version particulière d’un code source, mais aussi un fichier donné, voire des lignes précises dans un fichier.
Comment archiver un code source logiciel ?
Il existe plusieurs manières d’archiver un code source logiciel quand celui-ci est sur une plateforme de développement.
Via l’interface web
Rendez vous sur l’interface web d’archivage : archive.softwareheritage.org/save
- Renseignez le gestionnaire de version utilisé (Git la plupart du temps)
- Copiez / collez l’adresse du dépôt (le lien GitHub, GitLab, etc.)
- Cliquez sur le bouton « Submit »

Après quelques minutes, votre code sera archivé.
Avec une extension de navigateur
Une extension de navigateur (disponible pour Mozilla Firefox, Google Chrome et Microsoft Edge) permet d’archiver un code source en un seul clic de souris.

À titre personnel, j’utilise énormément cette extension, notamment quand je fais ma veille biblio. Si je trouve un article qui partage un code logiciel, je clique sur le lien qui pointe vers le dépôt contenant le code source, si l’icône de l’extension (la petite disquette) est grise ou jaune, je clique sur l’icône pour déclencher l’archivage dans Software Heritage. De cette manière, je suis certain de pouvoir retrouver ce logiciel si un jour, j'en ai besoin.
Avec des webhooks
Pour les utilisateur.trice.s avancé.e.s, il est possible d’automatiser l’archivage à l’aide de webhooks. Depuis votre dépôt GitHub ou GitLab, vous pouvez automatiser l’archivage de votre code à chaque fois qu’une pull request est fusionnée ou à chaque nouvelle release.
Visibilité dans l’archive
Une fois archivé, un code source ressemble à cela dans Software Heritage :

Le bouton « Permalinks » en rouge, à droite, permet de citer le code source archivé avec l’identifiant SWHID (voir plus bas).
Bonnes pratiques pour un archivage efficace
Pour assurer un archivage efficace de vos codes sources, il est important de fournir des métadonnées, c’est-à-dire du contexte à propos de votre code.
On distingue deux types de métadonnées : des métadonnées pour les humains et des métadonnées pour les machines. Ces métadonnées sont réparties dans quatre fichiers. La présence de ces fichiers n’est pas obligatoire pour archiver un code source dans Software Heritage, mais constitue néanmoins une bonne pratique.
Les métadonnées pour les humains
- Fichier README (ou README.md) : Dans ce fichier, expliquez les objectifs du projet, comment l’installer, comment l’utiliser (voir l’article dans Bioinfo-fr sur ce sujet).
- Fichier LICENSE : Ce fichier précise la licence d’utilisation de votre code source. N’écrivez pas ce fichier vous-même, mais utilisez des modèles existants.
- Fichier AUTHORS : Ce fichier mentionne les contributeur.trice.s du projet.
Les métadonnées pour les machines
Les métadonnées pour les machines sont rassemblées dans un fichier codemeta.json. Ce fichier décrit votre projet dans un standard appelé CodeMeta. L’application web CodeMeta generator permet de créer ce fichier codemeta.json très rapidement.
Citer un code archivé dans Software Heritage
Le SWHID mentionné plus tôt permet de faire référence à un archivage précis (version, fichier, lignes d’un fichier) dans Software Heritage.
Un SWHID ressemble à cela :
1 |
swh :1 :dir :bb48f33b57ce3cf7b00696a43eaac04f0c4047c8 |
Seul, il n’est pas très utile. Il est important de toujours lui ajouter un contexte :
1 2 3 4 |
swh :1 :dir :bb48f33b57ce3cf7b00696a43eaac04f0c4047c8 ; origin=https ://github.com/data-fun/3d-genome-builder ; visit=swh :1 :snp :1187d991dfcba0b77eaeb194ede09e626ed6ac10 ; anchor=swh :1 :rev :640ea77e6e4696e9db1faefa8c2230ad1affecef |
De cette manière, vous pourrez retrouver le code source concerné dans l’archive.
Dans un article scientifique, l’archivage du code source logiciel arrive en complément du partage du code source sur une plateforme de développement logiciel (comme GitHub ou GitLab). La plupart des revues scientifiques reconnaissent Software Heritage comme une solution d’archivage pérenne (si ce n’est pas le cas, n’hésitez pas à me mettre en contact avec l’éditeur). Selon le journal, cet archivage peut se matérialiser sous la forme d’un lien hypertexte dans l’article (par exemple, dans cet article) ou comme une référence bibliographique (par exemple, dans cet autre article).
Intégration de Software Heritage dans l’écosystème scientifique français
Depuis 2021, le Deuxième Plan National pour la science ouverte recommande l’usage de Software Heritage pour l’archivage des codes sources logiciels.
Au niveau des institutions, Software Heritage est reconnu et promu localement (voir, par exemple, à l’université Sorbonne Paris Nord, l’université Grenoble Alpes, Inria…).
Enfin, depuis 2023, il est possible d’ajouter le SWHID dans l'archive française des publications, HAL. Ainsi, un logiciel dont le code source est archivé dans Software Heritage apparaîtra ainsi comme une production scientifique dans HAL (exemple). HAL a d’ailleurs produit une excellente documentation (et des tutoriels vidéo) sur le dépôt d’un code source d’un logiciel.
Discussion
Avant de terminer ce long article, j'adresse quelques questions qu’on me pose souvent quand je parle de Software Heritage.
Je bricole un petit script en R ou Python pour faire mes figures, pourquoi l’archiver ?
En bioinformatique, on produit régulièrement des scripts, en Python, en R, en Bash… pour réaliser une analyse de données, produire les figures d’un article ou pour automatiser un traitement de données. Ces « petits » scripts ont tout à fait leur place dans Software Heritage, pour au moins trois raisons :
- Même si votre script ne contient que quelques lignes, vous avez peut-être passé plusieurs heures pour l’écrire et le mettre au point. Il a donc une valeur en lui-même, ne serait-ce parce qu’il décrit tout ou partie d’une démarche scientifique. N’hésitez pas à le partager sur une plateforme de développement puis à l’archiver dans Software Heritage.
- La reproductibilité des analyses est un problème majeur en science, y compris en bioinformatique. Partager puis archiver vos scripts constituent les premiers pas pour améliorer la reproductibilité de votre recherche.
- Derrière Software Heritage, il y a une base de données dans laquelle les fichiers sont dédupliqués et compressées. Archiver vos scripts ne va pas surcharger Software Heritage. Vous pouvez y aller !
Une seule archive, ça n'est pas un peu fragile ?
L’archive Software Heritage est sauvegardée dans deux clouds : Azure et AWS.
Fin 2023, un miroir (autonome) de Software Heritage a été créé en Italie chez ENEA (voir l’article de blog correspondant). Deux autres sont en cours de déploiement : en Grèce chez GRNET, infrastructure nationale pour la recherche et la technologie, dans le cadre d’un projet Européen (FAIRCORE4EOSC) et en Allemagne, à l’Université de Duisbourg et Essen.
Rassurez-vous, vos scripts et programmes ne seront pas perdus.
Conclusion
Software Heritage est l’archive universelle des codes sources logiciels. C’est la solution pour archiver et citer vos codes sources. Que vous développiez des logiciels complexes ou de petits scripts Python ou R, l’archivage des codes sources est essentiel pour garantir la reproductibilité de vos travaux de recherche.
Pour en savoir plus sur Software Heritage, n’hésitez pas à consulter la FAQ, à visionner cette courte vidéo ou tout simplement à me contacter.
Colophon
Pour rédiger cet article, je suis parti de la vidéo d’une présentation de Software Heritage que j’ai réalisée le 11/10/2024 pour la communauté SHS. J’ai extrait le son de cette vidéo, découpé la partie pertinente et utilisé le modèle de langage whisper-large-v3 avec le moteur d’inférences Groq pour en obtenir une transcription. Ce texte brut a ensuite été traité par le modèle de langage ChatGPT 4o le 30/12/2024 avec le prompt :
Organise le texte suivant sur Software Heritage sous la forme d’un article de blog à destination de bioinformaticiens. L’article doit être structuré et factuel. N’enjolive pas mais donne envie aux lecteurs d’archiver leur code dans Software Heritage :
Le texte obtenu a constitué une première ébauche de cet article qui a ensuite été retravaillé manuellement.
Le processus d’édition est décrit dans ce dépôt sur GitHub et archivé sur Software Heritage.
Ce manuscrit a été relu par Sabrina Granger, Morane Gruenpeter, ZaZo0o et bonob. Merci à elles et eux.
Laisser un commentaire