Ouvrir ses codes et logiciels

Valoriser ses codes et logiciels

Introduction

Un code de la recherche est une production scientifique au même titre que les publications et les données. Les logiciels sont un des piliers des processus de recherche. Il est donc essentiel de les préserver sur le long terme et de les partager. La valorisation des codes de la recherche fait l’objet du troisième axe du 2e Plan National Science Ouverte (2021-2024) et de plus en plus d’établissements et organismes de recherche le prennent en compte. Dans sa politique science ouverte, l’ANR se donne ainsi pour objectifs de “contribuer au partage et à l’ouverture des données de la recherche, des codes sources et des logiciels”. En 2023, dans son Appel à Projets Génériques, l’ANR recommande que les codes et logiciels développés dans le cadre du projet soient archivés dans Software Heritage, diffusés sous une licence libre et décrits dans HAL en indiquant la référence (code décision) du projet ANR.

Définition

Comment définir un code source ? Le rapport Bothorel propose la définition suivante : « Un code source peut être défini comme un ensemble d’instructions exécutables par un ordinateur ». Le  collège Codes sources et logiciels du Comité pour la science ouverte (COSO) définit ainsi les codes et logiciels de la recherche : “Les logiciels de recherche sont développés pour répondre à des besoins spécifiques de la science. Ils sont conçus, maintenus, et utilisés par des scientifiques (chercheurs et ingénieurs) et institutions de recherche, éventuellement dans une dimension internationale. Ils peuvent découler de travaux de recherche comme ils peuvent les favoriser, notamment par des publications avant/sur/autour/avec le logiciel. Ceux-ci peuvent se formaliser de différentes façons (une plateforme, un intergiciel, un workflow ou une bibliothèque, module ou greffon d’un autre logiciel) et être ainsi en interaction dans un écosystème ou au contraire plus autonomes.”

En résumé :

  • Algorithme : décrit le déroulé pour la résolution d’un problème posé.
  • Code source : mise en œuvre et formalisation de l’algorithme dans un langage informatique (par exemple python, C++, java …). C’est un (ou plusieurs) fichier(s) texte.
  • Exécutable : traduction du code source (en général via un compilateur ou un interpréteur) en code binaire compréhensible par l’ordinateur.
  • Logiciel : en général, l’ensemble global comprenant le code source et/ou l’exécutable, et le plus souvent la documentation, des exemples d’utilisation, éventuellement les dépendances … et évidemment la licence associée.

Bonnes pratiques

Pour assurer le partage et la réutilisation d’un code produit dans le cadre d’une recherche, plusieurs bonnes pratiques sont recommandées : 

  • le construire avec une forge
  • gestion des versions avec git
  • le documenter
  • choisir une licence adaptée
  • vérifier son archivage et le signaler dans Hal
  • écrire un software paper

Ces bonnes pratiques sont détaillées dans la page Datacc correspondante

Un passeport de la collection “Passeport pour la Science ouverte” aborde les enjeux particuliers de l’ouverture des codes et logiciels produits et utilisés dans le cadre de la recherche scientifique. Le rapport Scholarly infrastructures for research software fait des recommandations et propose des bonnes pratiques au niveau européen sur les infrastructures logicielles de recherche.

Archivage et diffusion des codes via Software Heritage et Hal

La perte des codes ayant été utilisés pour de la production scientifique arrive malheureusement régulièrement. En effet, le code source est fragile (obsolescence des formats, problème de matériel, dépendances à des outils qui disparaissent). L’archivage des codes et logiciels, qui correspond à leur préservation à long terme, est donc fondamental. Depuis 2016, l’archivage est assuré par l’archive universelle des codes sources Software Heritage (SWH). Cette initiative, lancée par l’INRIA, est soutenue par l’UNESCO (1). SWH collecte l’intégralité des logiciels disponibles publiquement sous forme de code source, depuis des plateformes d’hébergement de codes, comme GitHub, GitLab.com ou Bitbucket, et des archives de paquets, comme Npm ou Pypi. SWH attribue à chaque code archivé un identifiant pérenne (SWHID). Grâce à une collaboration initiée en 2018 entre le CCSD et SWH, il est aujourd’hui possible de référencer sur HAL les codes archivés sur SWH via le SWHID. Les deux plateformes sont donc complémentaires : les codes et logiciels signalés dans HAL acquièrent une grande visibilité et s’inscrivent dans une démarche de science ouverte. L’archivage pérenne est assuré par Software Heritage. La modération des métadonnées garantit la qualité du dépôt et la réutilisabilité du code. HAL propose différents formats d’export pour faciliter la citation.

Comment faire ?

Il est nécessaire de copier le SWHID contextualisé et de l’insérer dans la notice HAL. Ce processus permet de récupérer l’ensemble des métadonnées associées. Le SWHID contextualisé est disponible à partir de l’onglet Permalinks : il faut choisir le type “dir” en laissant cochée la case “informations contextuelles” qui comprendra ainsi les qualifiers suivants : origin, visit et anchor.

Quelques ressources et tutoriels pour le signalement dans HAL des codes et logiciels

Si un poster résume les enjeux d’une diffusion via HAL des codes et logiciels, la documentation du CCSD explicite les modalités de signalement dans HAL des codes archivés dans Software Heritage. La Cellule Data Grenoble Alpes a également proposé un webinaire en 2023 sur le référencement des logiciels via HAL et Software Heritage (support et vidéo)

Lier ses codes aux données et aux publications

Permettre la réutilisabilité et la reproductibilité de ce qui a été produit dans le cadre de la recherche est un enjeu important dans le contexte de la science ouverte.

Un des facteurs pour favoriser cette réutilisabilité et cette reproductibilité est de lier les publications aux données et aux codes qui ont conduit à ces publications

Le 2e Plan National Science Ouverte prévoit dans son axe 3 de “développer une bonne articulation entre les forges logicielles, les archives ouvertes de publications, les entrepôts de données et le secteur de l’édition scientifique.” Pour assurer ce lien, il suffit d’ajouter les identifiants pérennes de type DOI ou SWHID dans les métadonnées descriptives des publications, des données et des codes.

Quelques exemples

Sur l’entrepôt Recherche Data Gouv, dans le formulaire de dépôt, il est possible d’indiquer :

  • le DOI ou l’identifiant HAL de la publication dans le champ “publication associée”
  • le SWHID contextualisé dans la partie “workflow de calcul”.

Pour ce jeu de données, dans l’onglet métadonnées, le SWHID a été renseigné :

Dans HAL, par exemple, pour ce code et celui-là, les publications associées ont été mentionnées

Cette communication déposée dans HAL indique à la fois le jeu de données déposé dans Recherche Data Gouv et le code archivé dans Software Heritage et HAL.

Rédiger un software paper

Pour valoriser les codes produits dans le cadre de ses recherches, il est possible de rédiger un Software paper. L’Institut Pasteur en donne cette définition : “Un software paper (ou software article ou software tool article ou article sur les logiciels) est une publication revue par les pairs dont l’objectif est de présenter un logiciel à la communauté scientifique. Contrairement à une publication «traditionnelle», le software paper ne vise pas à partager un résultat marquant mais à décrire un logiciel qui a été développé pour la recherche, y compris les objectifs ayant conduit à son développement, le processus de conception, les détails techniques sur son fonctionnement, des instructions sur la façon de l’utiliser, son potentiel de réutilisation… “

La base de données “où publier” du CIRAD permet d’identifier les journaux acceptant les software papers. Le CIRAD a également établi une liste d’une centaine de titres acceptant des datapapers ou des software papers : par exemple, le Geoscientific Model Development (Copernicus Publication), le Journal of Open Research Software (Ubiquity Press), Software Impacts (Elsevier), SoftwareX (Elsevier) .

Le Software Sustainability Institute a publié la page “ In which journals should I publish my software ? ” référençant un certain nombre de titres par discipline, notamment en sciences l’ingénieur, en Physique et géosciences. L’EPFL a également publié en 2022 une liste de data et code journals.

JD Romano et JH Moore présentent dans un article publié dans Plos Computional Biology les dix règles à suivre pour rédiger un software paper. Pour aller plus loin, une ressource à consulter sur DoraNum : “Les software papers”, 2024.

Un autre type d’article permet de valoriser de manière concrète et directe ses codes : les articles exécutables. Voici la description qu’en fournit l’Institut Pasteur : “la publication est formatée sous forme d’un logiciel dynamique qui combine du texte, des données et le code utilisé pour l’analyse. La publication est donc interactive : le lecteur (ou le reviewer) peut interagir avec les données et rejouer (ou même modifier) les codes utilisés. L’idée est de permettre au lecteur de reproduire chaque étape franchie pour arriver aux conclusions d’une publication.” La revue eLife propose une collection d’articles exécutables. L’Institut Pasteur fournit également quelques conseils et retours d’expérience pour publier ce type d’article.

Les contenus de cette page sont inspirés de la rubrique codes du site science ouverte UGA, avec l’autorisation des auteurs.

  1. Voir l’article de présentation de l’écosystème Software Heritage : Roberto Di Cosmo, Stefano Zacchiroli, “The Software Heritage Open Science Ecosystem”, in Software Ecosystems, Springer International Publishing, pp.33-61, 2023, doi :10.1007/978-3-031-36060-2_2