Présentation de Software Heritage

Frédéric Santos

11 décembre 2025

1. Pourquoi archiver les logiciels de la recherche ?

horloge.png

Pour aller plus loin, consulter Granger et al. (2024), un tutoriel disponible sur le site de Programming Historian en Français.

1.1. Un pilier de la science reproductible

  • L’archivage et l’ouverture des données de la recherche académique est aujourd’hui un enjeu bien identifié, mais l’enjeu de la préservation des logiciels reste plus confidentiel
  • Pourtant, des données et des codes ouverts ont beaucoup moins d’utilité lorsqu’on ne dispose pas des logiciels permettant de reproduire les analyses :

    Un thème commun est l’importance croissante accordée à la « reproductibilité », qui fait l’objet de discussions dans de nombreuses disciplines […]. Cela dépasse la question des données, et nécessite que les logiciels et les pipelines d’analyse soient publiés dans un état utilisable conjointement aux articles. — (Davenport et al., 2020)

1.2. Cas concrets de « disparition logicielle »

  • Un article de Spinellis (2003) montre qu’il y a nombreux liens morts dans les publications scientifiques, et que la durée de vie moyenne d’une URL y est seulement de quelques années !
  • Certaines plateformes d’hébergement de code (e.g., Google Code) ont tout simplement disparu du jour au lendemain

2. Présentation de Software Heritage

software-heritage-logo.png

2.1. Missions

Software Heritage est une initiative soutenu par l’Inria et l’Unesco, qui a pour but d’archiver exhaustivement le patrimoine mondial logiciel de l’humanité.

Pour cela, ses trois missions sont :

  • la collecte de tout le code source publiquement disponible sur Internet ;
  • la préservation durable de ce code ;
  • de faciliter le partage et la citation du code source — éventuellement en lien avec d’autres infrastructures ou d’autres initiatives, telles que HAL.

2.2. Infrastructure

Les coûts d’infrastructure sont élevés au vu du matériel à archiver, avec (en 2025) :

  • plus de 25.000.000.000 de fichiers de code source ;
  • plus de 380.000.000 projets logiciels ;
  • plus de 90.000.000 d’auteurs ;
  • plus de 5.000 plateformes d’hébergement de code à explorer.

De plus, depuis 2025, SWH dispose de plusieurs miroirs mondiaux.

3. L’archive Software Heritage

Software Heritage collecte le code source de deux manières différentes : principalement par un processus automatisé, complété par une possibilité d’archivage manuel à la demande de tout utilisateur (pas nécessairement de l’auteur du logiciel !).

3.1. Le processus d’archivage automatisé

  • Moisson automatique et périodique des principales forges de développement (GitHub, GitLab.com, Sourceforge, …), ainsi que de dépôts « langage-spécifiques » (CRAN, PyPi, …).
  • Archivage de tout l’historique de développement des projets.
  • Pas de « filtrage » en entrée ou de pré-supposé sur l’intérêt : tout ce qui est public est archivé.
  • Seul le code source est archivé, pas les exécutables.

3.2. Alternative : l’archivage manuel

En complément, il est également possible de demander manuellement l’archivage d’un nouveau dépôt, ou la mise à jour d’un dépôt existant.

  • Aucun compte utilisateur requis pour cela.
  • Tout utilisateur du logiciel peut demander son archivage sur SWH, pas seulement l’auteur de ce logiciel. (Voyez-vous dans quel cas un utilisateur pourrait en faire la demande ?)
  • Il existe un plug-in de navigateur pour faciliter l’opération en un clic.

3.3. Intermède : le problème des métadonnées

Pour que le logiciel archivé soit correctement « découvrable » par la suite, il est nécessaire que des métadonnées soient indiquées de manière structurée.

  • Solution simple et répandue : utiliser des fichiers de métadonnées langage-spécifiques (e.g., le fichier DESCRIPTION pour un package R, le fichier Project.toml pour un package Julia, …).
  • Solution idéale : placer un fichier codemeta.json à la racine du dépôt. De tels fichiers peuvent être créés aisément avec CodeMeta generator.

3.4. Contenu de l’archive

En plus du contenu déjà mentionné, l’archive propose aussi notamment :

  • le contenu des forges fermées / désactivées ;
  • le contenu de certaines forges institutionnelles (e.g., GitLab de l’In2P3 du CNRS, GitLab d’Huma-Num, …) ;
  • le code source archivé dans HAL, grâce à une communication facilitée entre HAL et SWH.

3.5. Recherche dans l’archive

Lien vers l’archive publique SWH

L’archive possède son moteur de recherche intégré, qui permet notamment de rechercher un projet :

  • par son nom ;
  • par un glisser-déposer d’un fichier de code source ;
  • par un extrait de code source issu de ce projet ;
  • en donnant le lien vers le dépôt de référence du projet (sur GitHub ou GitLab par exemple) ;
  • en donnant le code de hachage d’un commit précis ;
  • en donnant un SWHID associé au projet.

4. Le SWHID : un outil pour rendre les logiciels identifiables

Le SWHID (Software Hash Identifier) est un identifiant pérenne utilisé pour identifier de manière unique un morceau de code source logiciel et sa version.

Le SWHID est une norme similaire au DOI mais spécifiquement conçue pour le code source des logiciels, compatible avec des systèmes de gestion de versions tels que Git.

(Cf. page Wikipedia)

4.1. Pourquoi et quand citer des logiciels

  • Si le logiciel a eu un rôle central dans les résultats d’une publication.
  • Pour permettre aux lecteurs de reproduire les résultats, en utilisant l’exacte même version de ce logiciel.
  • Le logiciel doit être citable en lui-même : il n’y a peut-être pas de publication associée.

4.2. Les besoins d’identification spécifiques aux logiciels

Par rapport à la publication de données (un contenu plus « figé »), les logiciels ont des besoins spécifiques :

  • ils sont évolutifs par nature (les contributeurs ou la plateforme de développement peut changer en cours de vie) ;
  • ils changent régulièrement de version ;
  • ce sont des contenus souvent « modulaires », avec des dépendances complexes. On peut souhaiter citer uniquement un composant précis, plutôt que l’ensemble du logiciel.

4.3. Obtenir et utiliser un SWHID

Un SWHID est assimilable à un « DOI pour du logiciel », et répond donc aux besoins spécifiques évoqués précédemment.

Un SWHID ne pointe pas seulement vers un logiciel, mais peut pointer vers :

  • un projet logiciel dans son ensemble ;
  • un point précis de l’historique de développement (version, ou même commit) ;
  • un extrait de code précis à un moment précis du développement.

5. Aspects juridiques

5.1. Licences

  • Software Heritage archive automatiquement tout ce qui est publiquement accessible (e.g., sur GitHub ou GitLab), et n’effectue pas de vérifications particulières sur le type de licence au préalable. (Pas même sur sa présence ou son absence !)
  • Pour rappel, pensez toujours à inclure une licence dans vos projets logiciels : à la fois pour vous protéger, et parce que (dans la majorité des pays du monde) l’utilisateur final n’a par défaut absolument aucun droit d’utilisation de votre logiciel en l’absence de licence.
  • En France, la licence CeCILL est conseillée pour les logiciels conçus par les membres du monde académique.

5.2. Retrait de code archivé sur SWH

  • Pour garantir la crédibilité de l’archive, il n’est pas possible de demander le retrait d’un projet logiciel archivé sur Software Heritage sans avoir une excellente raison.
  • Le retrait de l’archive reste possible en cas de situation grave (violation du droit d’auteur, …). Une demande circonstanciée doit alors être envoyée au service juridique par courrier, selon les modalités décrites sur la page dédiée du site de SWH.

6. Software Heritage & friends

6.1. Intégration entre Software Heritage et Zenodo

Malgré une offre en partie commune en ce qui concerne le logiciel (archivage pérenne et citabilité du code archivé), Software Heritage et Zenodo répondent initialement à des logiques différentes :

Fonctionnalité Software Heritage Zenodo
Cas d’usage Code source uniquement Généraliste : données, rapport, logiciels, …
Collecte Automatisée Téléversement manuel depuis un ZIP
Objet citable Historique complet Version ou snapshot précis
Identifiant SWHID DOI (plus général, moins fin)

Il est néanmoins possible (et parfois pertinent) d’utiliser les deux pour le même projet. De plus, depuis fin 2024, tout logiciel (publiquement accessible) déposé sur Zenodo est automatiquement archivé sur SWH. Les deux plateformes sont donc désormais très bien interconnectées.

6.2. Intégration entre Software Heritage et HAL

  • Depuis un passé relativement récent, HAL accepte également les dépôts de logiciels.
  • Pour faciliter cette opération, on peut simplement soumettre un identifiant SWHID dans l’interface de HAL, et les métadonnées sont complétées automatiquement dans le formulaire. (Sous réserve que l’auteur du logiciel les ait correctement et exhaustivement renseignées !)
  • Réciproquement, les codes sources déposés (manuellement) dans HAL peuvent être exportés vers Software Heritage.

7. Bénéfices de l’interaction Software Heritage / HAL

7.1. Le COSO et le catalogue national des logiciels de recherche

Dans le cadre du dernier Plan National pour la Science Ouverte, un Catalogue des logiciels libres de la recherche académique est en cours de mise en place.

  • Il est basiquement constitué des logiciels possédant une fiche dans HAL, et étant également archivés sur SWH.
  • Cette méthode de récolte nécessite donc peu (ou pas) de travail de la part des auteurs de logiciels, et facilite les mises à jour futures.
  • Un exemple de fiche du catalogue pour un package Julia.
  • À terme : projet de proposer des statistiques par auteur, par laboratoire, par établissement, etc.

7.2. OSPO-RADAR

Le projet OSPO-RADAR a pour objectif de compléter le catalogue des logiciels de recherche, en facilitant et en automatisant encore leur référencement.

  • Créer une plateforme dédiée aux Open Source Program Offices (OSPOs) des universités, afin d’améliorer la gestion, l’archivage et la mise en valeur du logiciel de recherche.
  • Développer un portail institutionnel avec un tableau de bord permettant de produire des indicateurs par établissement (Software Assets Dashboard).
  • Promouvoir la reconnaissance du logiciel de recherche comme un élément clé de la recherche scientifique et encourager une approche transparente et reproductible du développement logiciel.
  • Sortie publique prévue en 2026.

7.3. Un accompagnement local avec les Ateliers de la donnée

  • Les Ateliers de la donnée sont un réseau national de proximité pour accompagner localement les chercheurs sur la gestion (archivage, description, valorisation, …) des données de recherche.
  • Certains ateliers (comme celui de Bordeaux, en cours de certification) proposent aussi un service « Code, logiciel et calcul » pour accompagner les chercheurs sur l’archivage et la valorisation des codes source.
  • À priori, pas encore (?) d’Atelier de la donnée à La Rochelle.

Références

Davenport, J. H., Grant, J., & Jones, C. M. (2020). Data Without Software Are Just Numbers. Data science journal, 19(1). https://doi.org/10.5334/dsj-2020-003
Granger, S., Mélès, B., & Santos, F. (2024). Préserver et rendre identifiables les logiciels de recherche avec Software Heritage. Programming historian en français, 6. https://doi.org/10.46430/phfr0034
Spinellis, D. (2003). The decay and failures of web references. Communications of the acm, 46(1), 71–77. https://doi.org/10.1145/602421.602422

Créé par Frédéric Santos