Accessibility Tools

- Le blog participatif de bioinformatique francophone depuis 2012 -

Software Heritage : l'archive universelle des codes sources logiciels

Dans cet article, je vous pro­pose de décou­vrir Soft­ware Heri­tage, l’archive uni­ver­selle dédiée à la col­lecte, la pré­ser­va­tion et le par­tage des codes sources logi­ciels.

En 2021, je suis deve­nu ambas­sa­deur pour Soft­ware Heri­tage, c’est-à-dire repré­sen­tant de la com­mu­nau­té bio­in­for­ma­tique, dans l’infrastructure Soft­ware Heri­tage.

Pourquoi archiver son code source ?

Aujourd’hui, les scien­ti­fiques uti­lisent très sou­vent des logi­ciels pour leurs recherches, et en sont même régu­liè­re­ment les auteur.e.s. Selon une étude datant de 2014, 92 % des cher­cheurs et des cher­cheuses uti­lisent des logi­ciels dans leurs tra­vaux et 56 % déve­loppent leurs propres outils. Quand je parle de logi­ciel, il faut com­prendre ce terme au sens large, allant de logi­ciels com­plets type Gro­macsSam­tools ou OpenMS qui sont déve­lop­pés et main­te­nus par toute une équipe depuis plu­sieurs années, jusqu’au script Python ou R que vous pro­dui­sez pour réa­li­ser vos figures d’articles.

Quand on déve­loppe un code infor­ma­tique, en bio­in­for­ma­tique comme ailleurs, il est désor­mais admis comme une bonne pra­tique d’utiliser un ges­tion­naire de ver­sion, comme Git, pour conser­ver l’historique des modi­fi­ca­tions du code source (voir, par exemple, ces réfé­rences ici, et encore là). L’utilisation de pla­te­formes de déve­lop­pe­ment (ou forges) comme GitHub ou Git­Lab per­met de par­ta­ger son code avec le plus grand nombre et faci­lite la col­la­bo­ra­tion (voir cette réfé­rence et les articles cor­res­pon­dants sur Bioin­fo-fr ici et ).

Par ailleurs, l’ouverture et le par­tage du code source logi­ciel (open source) est un des piliers de la science ouverte, tout comme l’ouverture des publi­ca­tions (open access) et des don­nées (open data).

Le pro­blème avec les pla­te­formes de déve­lop­pe­ment logi­ciel est qu’elles peuvent dis­pa­raître ou sup­pri­mer cer­taines fonc­tion­na­li­tés du jour au len­de­main. Ce fut, par exemple, le cas pour Google Code en 2015 ou bien Bit­bu­cket en 2020 qui déci­da d’arrêter le sup­port du ges­tion­naire de ver­sion Mer­cu­rial (un équi­valent à Git). Dans le pre­mier cas, 1,4 mil­lion de pro­jets furent détruits. Dans le second, 250 000 dépôts logi­ciels ont été sup­pri­més.

Qu’on soit chercheu.r.se ou per­son­nel de sou­tien à la recherche, nous ne pou­vons pas nous per­mettre de perdre nos codes sources logi­ciels, car ils sont essen­tiels pour la repro­duc­ti­bi­li­té à long terme.

C’est ici que Soft­ware Heri­tage entre en jeu.

Remarque : Les deux exemples pré­cé­dents concer­naient des pla­te­formes de déve­lop­pe­ment com­mer­ciales. Pour autant, les pla­te­formes ins­ti­tu­tion­nelles ne sont pas tou­jours pérennes. Ain­si, en 2020, l’ancienne forge de l’Inria, basée sur GForge, a été arrê­tée au pro­fit d’une nou­velle basée sur Git­Lab. Une migra­tion des pro­jets a été réa­li­sée, mais cer­tains logi­ciels ne sont plus acces­sibles (voir, par exemple, ici et ). De manière géné­rale, le fort épar­pille­ment des forges logi­cielles dans l’enseignement supé­rieur et la recherche en France et les contraintes liées à leur uti­li­sa­tion (authen­ti­fi­ca­tion, col­la­bo­ra­tion, CI/​CD…) conduisent de nom­breux scien­ti­fiques à par­ta­ger leur code sur des pla­te­formes com­mer­ciales comme GitHub ou Git­Lab. Si ce sujet des forges dans l’Enseignement Supé­rieur et la Recherche (ESR) vous inté­resse, je vous recom­mande le récent rap­port « Forges de l’Enseignement supé­rieur et de la Recherche - Défi­ni­tion, usages, limi­ta­tions ren­con­trées et ana­lyse des besoins ».

Qu’est-ce que Software Heritage ?

Soft­ware Heri­tage est une orga­ni­sa­tion à but non lucra­tif créée en 2016 à l’Inria par Rober­to Di Cos­mo et Ste­fa­no Zac­chi­ro­li. Elle vise à archi­ver tous les codes sources ouverts, pour tou­jours et gra­tui­te­ment. À ce jour (jan­vier 2025), elle contient plus de 22 mil­liards de fichiers source issus de 341 mil­lions de pro­jets (source). Cette énorme archive inclut des codes sources pro­ve­nant de pla­te­formes de déve­lop­pe­ment comme GitHub, Git­Lab et Bit­bu­cket, mais aus­si d’entrepôts logi­ciels comme le CRAN (pour les paquets R), PyPI (pour les paquets Python), et bien d’autres encore. Soft­ware Heri­tage est sou­te­nue par des orga­ni­sa­tions publiques et pri­vées comme l’Unesco, l’Inria, le CNRS, Intel…

Les avantages de Software Heritage

Soft­ware Heri­tage pro­pose :

  1. Un archi­vage per­ma­nent : Les codes sources sont pré­ser­vés avec tout leur his­to­rique de déve­lop­pe­ment, même si la pla­te­forme d’origine dis­pa­raît.
  2. Un accès gra­tuit et faci­li­té : Le ser­vice d’archivage et l’accès aux archives est ouvert à tou.te.s.
  3. Un iden­ti­fiant unique (appe­lé Soft­Ware Hash Iden­ti­fier ou SWHID) : Soft­ware Heri­tage génère un iden­ti­fiant intrin­sèque et per­sis­tant pour chaque ver­sion du code source. Cet iden­ti­fiant, simi­laire à un DOI, est recal­cu­lable direc­te­ment à par­tir du code. Le SWHID per­met de citer une ver­sion par­ti­cu­lière d’un code source, mais aus­si un fichier don­né, voire des lignes pré­cises dans un fichier.

Comment archiver un code source logiciel ?

Il existe plu­sieurs manières d’archiver un code source logi­ciel quand celui-ci est sur une pla­te­forme de déve­lop­pe­ment.

Via l’interface web

Ren­dez vous sur l’interface web d’archivage : archive​.soft​wa​re​he​ri​tage​.org/​s​ave

  1. Ren­sei­gnez le ges­tion­naire de ver­sion uti­li­sé (Git la plu­part du temps)
  2. Copiez /​ col­lez l’adresse du dépôt (le lien GitHub, Git­Lab, etc.)
  3. Cli­quez sur le bou­ton « Sub­mit »

Après quelques minutes, votre code sera archi­vé.

Avec une extension de navigateur

Une exten­sion de navi­ga­teur (dis­po­nible pour Mozilla Fire­foxGoogle Chrome et Micro­soft Edge) per­met d’archiver un code source en un seul clic de sou­ris.

Source : Upda­teSWH : check and update archi­val of a repo­si­to­ry, Soft­ware Heri­tage

À titre per­son­nel, j’utilise énor­mé­ment cette exten­sion, notam­ment quand je fais ma veille biblio. Si je trouve un article qui par­tage un code logi­ciel, je clique sur le lien qui pointe vers le dépôt conte­nant le code source, si l’icône de l’extension (la petite dis­quette) est grise ou jaune, je clique sur l’icône pour déclen­cher l’archivage dans Soft­ware Heri­tage. De cette manière, je suis cer­tain de pou­voir retrou­ver ce logi­ciel si un jour, j'en ai besoin.

Avec des webhooks

Pour les utilisateur.trice.s avancé.e.s, il est pos­sible d’automatiser l’archivage à l’aide de web­hooks. Depuis votre dépôt GitHub ou Git­Lab, vous pou­vez auto­ma­ti­ser l’archivage de votre code à chaque fois qu’une pull request est fusion­née ou à chaque nou­velle release.

Visibilité dans l’archive

Une fois archi­vé, un code source res­semble à cela dans Soft­ware Heri­tage :

Le bou­ton « Per­ma­links » en rouge, à droite, per­met de citer le code source archi­vé avec l’identifiant SWHID (voir plus bas).

Bonnes pratiques pour un archivage efficace

Pour assu­rer un archi­vage effi­cace de vos codes sources, il est impor­tant de four­nir des méta­don­nées, c’est-à-dire du contexte à pro­pos de votre code.

On dis­tingue deux types de méta­don­nées : des méta­don­nées pour les humains et des méta­don­nées pour les machines. Ces méta­don­nées sont répar­ties dans quatre fichiers. La pré­sence de ces fichiers n’est pas obli­ga­toire pour archi­ver un code source dans Soft­ware Heri­tage, mais consti­tue néan­moins une bonne pra­tique.

Les métadonnées pour les humains

  1. Fichier  README (ou  README.md) : Dans ce fichier, expli­quez les objec­tifs du pro­jet, com­ment l’installer, com­ment l’utiliser (voir l’article dans Bioin­fo-fr sur ce sujet).
  2. Fichier  LICENSE : Ce fichier pré­cise la licence d’utilisation de votre code source. N’écrivez pas ce fichier vous-même, mais uti­li­sez des modèles exis­tants.
  3. Fichier  AUTHORS : Ce fichier men­tionne les contributeur.trice.s du pro­jet.

Les métadonnées pour les machines

Les méta­don­nées pour les machines sont ras­sem­blées dans un fichier  code­me­ta.json. Ce fichier décrit votre pro­jet dans un stan­dard appe­lé Code­Me­ta. L’application web Code­Me­ta gene­ra­tor per­met de créer ce fichier  code­me­ta.json très rapi­de­ment.

Citer un code archivé dans Software Heritage

Le SWHID men­tion­né plus tôt per­met de faire réfé­rence à un archi­vage pré­cis (ver­sion, fichier, lignes d’un fichier) dans Soft­ware Heri­tage.

Un SWHID res­semble à cela :

Seul, il n’est pas très utile. Il est impor­tant de tou­jours lui ajou­ter un contexte :

De cette manière, vous pour­rez retrou­ver le code source concer­né dans l’archive.

Dans un article scien­ti­fique, l’archivage du code source logi­ciel arrive en com­plé­ment du par­tage du code source sur une pla­te­forme de déve­lop­pe­ment logi­ciel (comme GitHub ou Git­Lab). La plu­part des revues scien­ti­fiques recon­naissent Soft­ware Heri­tage comme une solu­tion d’archivage pérenne (si ce n’est pas le cas, n’hésitez pas à me mettre en contact avec l’éditeur). Selon le jour­nal, cet archi­vage peut se maté­ria­li­ser sous la forme d’un lien hyper­texte dans l’article (par exemple, dans cet article) ou comme une réfé­rence biblio­gra­phique (par exemple, dans cet autre article).

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

Depuis 2021, le Deuxième Plan Natio­nal pour la science ouverte recom­mande l’usage de Soft­ware Heri­tage pour l’archivage des codes sources logi­ciels.

Au niveau des ins­ti­tu­tions, Soft­ware Heri­tage est recon­nu et pro­mu loca­le­ment (voir, par exemple, à l’université Sor­bonne Paris Nord, l’université Gre­noble AlpesInria…).

Enfin, depuis 2023, il est pos­sible d’ajou­ter le SWHID dans l'archive fran­çaise des publi­ca­tions, HAL. Ain­si, un logi­ciel dont le code source est archi­vé dans Soft­ware Heri­tage appa­raî­tra ain­si comme une pro­duc­tion scien­ti­fique dans HAL (exemple). HAL a d’ailleurs pro­duit une excel­lente docu­men­ta­tion (et des tuto­riels vidéo) sur le dépôt d’un code source d’un logi­ciel.

Discussion

Avant de ter­mi­ner ce long article, j'adresse quelques ques­tions qu’on me pose sou­vent quand je parle de Soft­ware Heri­tage.

Je bricole un petit script en R ou Python pour faire mes figures, pourquoi l’archiver ?

En bio­in­for­ma­tique, on pro­duit régu­liè­re­ment des scripts, en Python, en R, en Bash… pour réa­li­ser une ana­lyse de don­nées, pro­duire les figures d’un article ou pour auto­ma­ti­ser un trai­te­ment de don­nées. Ces « petits » scripts ont tout à fait leur place dans Soft­ware Heri­tage, pour au moins trois rai­sons :

  1. Même si votre script ne contient que quelques lignes, vous avez peut-être pas­sé plu­sieurs 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 par­tie d’une démarche scien­ti­fique. N’hésitez pas à le par­ta­ger sur une pla­te­forme de déve­lop­pe­ment puis à l’archiver dans Soft­ware Heri­tage.
  2. La repro­duc­ti­bi­li­té des ana­lyses est un pro­blème majeur en science, y com­pris en bio­in­for­ma­tique. Par­ta­ger puis archi­ver vos scripts consti­tuent les pre­miers pas pour amé­lio­rer la repro­duc­ti­bi­li­té de votre recherche.
  3. Der­rière Soft­ware Heri­tage, il y a une base de don­nées dans laquelle les fichiers sont dédu­pli­qués et com­pres­sées. Archi­ver vos scripts ne va pas sur­char­ger Soft­ware Heri­tage. Vous pou­vez y aller !

Une seule archive, ça n'est pas un peu fragile ?

L’archive Soft­ware Heri­tage est sau­ve­gar­dée dans deux clouds : Azure et AWS.

Fin 2023, un miroir (auto­nome) de Soft­ware Heri­tage a été créé en Ita­lie chez ENEA (voir l’article de blog cor­res­pon­dant). Deux autres sont en cours de déploie­ment : en Grèce chez GRNET, infra­struc­ture natio­nale pour la recherche et la tech­no­lo­gie, dans le cadre d’un pro­jet Euro­péen (FAIRCORE4EOSC) et en Alle­magne, à l’Université de Duis­bourg et Essen.

Ras­su­rez-vous, vos scripts et pro­grammes ne seront pas per­dus.

Conclusion

Soft­ware Heri­tage est l’archive uni­ver­selle des codes sources logi­ciels. C’est la solu­tion pour archi­ver et citer vos codes sources. Que vous déve­lop­piez des logi­ciels com­plexes ou de petits scripts Python ou R, l’archivage des codes sources est essen­tiel pour garan­tir la repro­duc­ti­bi­li­té de vos tra­vaux de recherche.

Pour en savoir plus sur Soft­ware Heri­tage, n’hésitez pas à consul­ter la FAQ, à vision­ner cette courte vidéo ou tout sim­ple­ment à me contac­ter.

Colophon

Pour rédi­ger cet article, je suis par­ti de la vidéo d’une pré­sen­ta­tion de Soft­ware Heri­tage que j’ai réa­li­sée le 11/​10/​2024 pour la com­mu­nau­té SHS. J’ai extrait le son de cette vidéo, décou­pé la par­tie per­ti­nente et uti­li­sé le modèle de lan­gage whis­per-large-v3 avec le moteur d’inférences Groq pour en obte­nir une trans­crip­tion. Ce texte brut a ensuite été trai­té par le modèle de lan­gage ChatGPT 4o le 30/​12/​2024 avec le prompt :

Orga­nise le texte sui­vant sur Soft­ware Heri­tage sous la forme d’un article de blog à des­ti­na­tion de bio­in­for­ma­ti­ciens. L’article doit être struc­tu­ré et fac­tuel. N’enjolive pas mais donne envie aux lec­teurs d’archiver leur code dans Soft­ware Heri­tage :

Le texte obte­nu a consti­tué une pre­mière ébauche de cet article qui a ensuite été retra­vaillé manuel­le­ment.

Le pro­ces­sus d’édition est décrit dans ce dépôt sur GitHub et archi­vé sur Soft­ware Heri­tage.

Ce manus­crit a été relu par Sabri­na Gran­ger, Morane Gruen­pe­ter, ZaZo0o et bonob. Mer­ci à elles et eux.

Vous avez aimé ? Dites-le nous !

Moyenne : 5 /​ 5. Nb de votes : 2

Pas encore de vote pour cet article.

Partagez cet article




Commentaires

Une réponse à “Software Heritage : l'archive universelle des codes sources logiciels”

  1. Mathurin
    Léopold Carron

    c'est super inté­res­sant pierre ! Mer­ci pour ce billet, une code de plus a l'arc de la repro­duc­ti­bi­li­té à connaitre !

Laisser un commentaire

Pour insérer du code dans vos commentaires, utilisez les balises <code> et <\code>.