Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

https://github.com/pierrepo/article-SWH-bioinfo-fr
14 January 2025, 09:51:44 UTC
  • Code
  • Branches (1)
  • Releases (0)
  • Visits
    • Branches
    • Releases
    • HEAD
    • refs/heads/main
    • f85d0db6f228b21fc0f5eb3a874bdfdcb0a2dac9
    No releases to show
  • 5cb6bb7
  • /
  • 2025-01-14_v1.md
Raw File Download Save again
Take a new snapshot of a software origin

If the archived software origin currently browsed is not synchronized with its upstream version (for instance when new commits have been issued), you can explicitly request Software Heritage to take a new snapshot of it.

Use the form below to proceed. Once a request has been submitted and accepted, it will be processed as soon as possible. You can then check its processing state by visiting this dedicated page.
swh spinner

Processing "take a new snapshot" request ...

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
  • revision
  • snapshot
origin badgecontent badge
swh:1:cnt:53ea360133a973bb96d8b2a73b5eb2c75b6c1fd3
origin badgedirectory badge
swh:1:dir:5cb6bb7ee827f722ac263c83caff357a87f2c8a8
origin badgerevision badge
swh:1:rev:f85d0db6f228b21fc0f5eb3a874bdfdcb0a2dac9
origin badgesnapshot badge
swh:1:snp:27ec900903020d311214f368f4ea2102c080fda2

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
  • revision
  • snapshot
(requires biblatex-software package)
Generating citation ...
(requires biblatex-software package)
Generating citation ...
(requires biblatex-software package)
Generating citation ...
(requires biblatex-software package)
Generating citation ...
Tip revision: f85d0db6f228b21fc0f5eb3a874bdfdcb0a2dac9 authored by Pierre Poulain on 14 January 2025, 09:50:27 UTC
Add manuscript v1
Tip revision: f85d0db
2025-01-14_v1.md
# Software Heritage : l'archive universelle des codes sources logiciels

Dans cet article, je vous propose de découvrir [Software Heritage](https://www.softwareheritage.org/), 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, voire, parfois, les produisent eux.elles-mêmes. Selon une [étude datant de 2014](https://www.software.ac.uk/blog/2014-12-04-its-impossible-conduct-research-without-software-say-7-out-10-uk-researchers), 92 % des chercheu.r.se.s utilisent des logiciels dans leurs travaux et 56 % d'entre eux.elles développent leurs propres outils. Quand je parle de logiciel, il faut comprendre ce terme au sens large, c'est-à-dire des logiciels complets type [Gromacs](https://www.gromacs.org/), [Samtools](https://www.htslib.org/) ou [OpenMS](https://openms.de/) 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 exemples ces références [ici](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1004668), [là](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1004947), et [encore là](https://doi.org/10.1186/1751-0473-8-7)). 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](https://f1000research.com/articles/6-876/v1) et les articles correspondants sur Bioinfo-fr [ici](https://bioinfo-fr.net/git-premiers-pas) et [là](https://bioinfo-fr.net/git-usage-collaboratif)).

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 fonctionalités du jour au lendemain. Ce fût par exemple le cas pour [Google Code en 2015](https://techcrunch.com/2015/03/13/google-kills-off-google-code/) ou bien [Bitbucket en 2020](https://www.atlassian.com/blog/bitbucket/sunsetting-mercurial-support-in-bitbucket) qui décida d'arrêter le support du gestionnaire de version Mercurial (un équivalent à git). Dans le premier cas, 1,4 millions 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](https://pubmed.ncbi.nlm.nih.gov/25572717/) et [là](https://pubmed.ncbi.nlm.nih.gov/28969586/)). 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'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](https://hal-lara.archives-ouvertes.fr/hal-04098702v6/) ».


## 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](https://archive.softwareheritage.org/)). 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 :

1. **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.
2. **Un accès gratuit et facilité** : Le service d'archivage  et l'accès aux archives est ouvert à tou.te.s.
3. **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](https://archive.softwareheritage.org/save)

1. **Renseignez le gestionnaire de version utilisé** (git la plupart du temps)
2. **Copiez / collez l'adresse du dépôt** (le lien GitHub, GitLab, etc.)
3. **Cliquez sur le bouton « Submit »**

![](https://codimd.math.cnrs.fr/uploads/upload_4cb945fcbd8d0d2578567db650109c5b.png)

Après quelques minutes, votre code sera archivé.


### Avec une extension de navigateur

Une [extension de navigateur](https://www.softwareheritage.org/browser-extensions/) (disponible pour [Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/updateswh/), [Google Chrome](https://chromewebstore.google.com/detail/updateswh/palihjnakafgffnompkdfgbgdbcagbko) et [Microsoft Edge](https://microsoftedge.microsoft.com/addons/detail/updateswh/hckookfmlcmedndpdejhpbgjbgmjemnn)) permet d'archiver un code source en un seul clic de souris.

![](https://codimd.math.cnrs.fr/uploads/upload_81e6e41631e4f3d8ec64e0c0d54ddb7c.png)

*Source : [UpdateSWH: check and update archival of a repository](https://www.softwareheritage.org/browser-extensions/), Software Heritage*

À titre personnel, j'utilise cette extension énormément, notamment quand je fais ma veille biblio. Si je trouve un article qui partage un code logiciel, je clique sur le lien pointant vers le dépôt contenant le code source, si l'icône de l'extension (la petit disquette) est grise ou jaune, je clique sur l'icône pour déclencher l'archivage dans Software Heritage. De ce 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](https://www.softwareheritage.org/2023/06/01/webhooks-integrate-swh-workflow/). 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](https://github.com/data-fun/3d-genome-builder) ressemble [à cela](https://archive.softwareheritage.org/browse/directory/bb48f33b57ce3cf7b00696a43eaac04f0c4047c8/?origin_url=https://github.com/data-fun/3d-genome-builder&revision=640ea77e6e4696e9db1faefa8c2230ad1affecef&snapshot=1187d991dfcba0b77eaeb194ede09e626ed6ac10) dans Software Heritage : 

![](https://codimd.math.cnrs.fr/uploads/upload_b0465eb4a76d98afd95d907e979eb6ff.png)

Le bouton « *Permalinks* » en rouge, à droite, permet de de citer le code source archivé en utilisant l'identifiant SWHID (voir plus bas).


## Bonnes pratiques pour un archivage efficace

Pour assurer un [archivage efficace de vos codes sources](https://www.softwareheritage.org/how-to-archive-reference-code/), il est important de fournir des métadonnées, c'est-à-dire du contexte à propos de votre code.

On distingue deux types des 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 consitue néanmoins une bonne pratique.

### Les métadonnées pour les humains

1. **Fichier `README` (ou `README.md`)** : Dans ce fichier, expliquez les objectifs du projet, comment l’installer, comment l'utiliser (voir l'[article](https://bioinfo-fr.net/quest-ce-quun-bon-fichier-lisez-moi-txt) dans Bioinfo-fr sur ce sujet).
2. **Fichier `LICENSE`** : Ce fichier précise la license d'utilisation de votre code source. N'écrivez pas ce fichier vous-même, mais utilisez des [modèles existants](https://choosealicense.com/).
3. **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](https://codemeta.github.io/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 : 

```
swh:1:dir:bb48f33b57ce3cf7b00696a43eaac04f0c4047c8
```

Seul, il n'est pas très utile. Il est important de toujours lui ajouter un contexte : 

```
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é](https://archive.softwareheritage.org/swh:1:dir:bb48f33b57ce3cf7b00696a43eaac04f0c4047c8;origin=https://github.com/data-fun/3d-genome-builder;visit=swh:1:snp:1187d991dfcba0b77eaeb194ede09e626ed6ac10;anchor=swh:1:rev:640ea77e6e4696e9db1faefa8c2230ad1affecef) 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](https://academic.oup.com/nargab/article/5/4/lqad104/7458894#428574197)) ou comme une référence bibliographique (par exemple dans [cet autre article](https://elifesciences.org/articles/90061#data))


## Intégration de Software Heritage dans l'écosystème scientifique français

Depuis 2021, le [Deuxième Plan National pour la science ouverte](https://www.ouvrirlascience.fr/deuxieme-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](https://www.softwareheritage.org/2024/12/05/sorbonne-paris-north-adopts-software-heritage/), l'université [Grenoble Alpes](https://www.softwareheritage.org/2024/12/11/open-science-grenoble-alpes/), [Inria](https://www.softwareheritage.org/2024/12/10/preserving-inrias-legacy-software/)...)

Enfin, depuis 2023, il est possible d'[ajouter le SWHID dans HAL](https://www.softwareheritage.org/2023/04/04/swhid-deposit-hal/). Ainsi, un logiciel dont le code source est archivé dans Software Heritage apparaîtra ainsi comme une production scientifique dans HAL ([exemple](https://inria.hal.science/hal-03467422)). HAL a d'ailleurs produit une excellente [documentation](https://doc.hal.science/deposer/deposer-le-code-source/) (et des [tutoriels](https://www.youtube.com/playlist?list=PLD2VqrZz2-u3bOWtoCoBIh5Flt6iYXsq3) vidéo) sur le dépôt d'un code source d'un logiciel.


## Discussion

Avant de terminer ce long article, je vais adresser 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 : 

1. 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.
2. La reproductibilité des analyses est un [problème majeur](https://www.nature.com/articles/533452a) en [science](https://www.science.org/doi/10.1126/science.354.6308.142), y compris en [bioinformatique](https://academic.oup.com/gigascience/article/7/7/giy077/5046609). Partager puis archiver vos scripts constituent les premiers pas pour améliorer la reproductibilité de votre recherche.
3. 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, c'est pas un peu fragile ?

L'archive Software Heritage est sauvegardée dans deux clouds : Azure et AWS.

Fin 2023, un [miroir](https://mirror.softwareheritage.enea.it/) (autonome) de Software Heritage a été créé en Italie chez ENEA (voir l'[article de blog](https://www.softwareheritage.org/2023/12/14/enea-mirror-opening/) correspondant). Deux autres sont en cour 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.


## 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 script 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](https://www.softwareheritage.org/faq/), à visionner cette [courte vidéo](https://www.youtube.com/watch?v=Ez4xKTKJO2o) 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](https://mate-shs.cnrs.fr/actions/tutomate/tuto61_git_poulain/) 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 language *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 permiè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](https://github.com/pierrepo/article-SWH-bioinfo-fr) et [archivé](https://archive.softwareheritage.org/swh:1:dir:1ecb5612db26f1c3e6a2d3226540dc106a1c478d;origin=https://github.com/pierrepo/article-SWH-bioinfo-fr;visit=swh:1:snp:11c7f7736a34350d31d23c2cc0754b7134dbac3d;anchor=swh:1:rev:aaf8c6f701a0fce5a45d8b507968eef0bac3f113) sur Software Heritage.

Ce manuscrit a été relu par Sabrina Granger et Morane Gruenpeter. Merci à elles et eux.

back to top

Software Heritage — Copyright (C) 2015–2026, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Content policy— Contact— JavaScript license information— Web API