Aller au contenu

Déposer le code source d'un logiciel

Le dépôt de logiciel dans HAL permet sa citabilité, l’archivage étant pris en charge par l’infrastructure Software Heritage. HAL et Software Heritage proposent des services complémentaires.

Le recours à des logiciels est constant dans la plupart des disciplines académiques, mais il s’avère que les logiciels peuvent être difficiles à identifier pour des utilisateurs comme pour des développeurs qui voudraient procéder à des adaptations. Par ailleurs, de nombreux articles mentionnant des logiciels contiennent des liens brisés, ce qui entrave la pleine compréhension des travaux scientifiques.

Un logiciel déposé dans HAL est plus facile à identifier et préservé sur le long terme. Par ailleurs, HAL développe une palette de services permettant à un auteur de lier des publications, des logiciels et des jeux de données. Inversement, si le logiciel est déjà archivé dans Software Heritage, son dépôt dans HAL est facilité. De plus, tout l’historique de développement du logiciel sera aussi accessible.

Bénéfice du dépôt de logiciel

Schéma tiré de : Jackson, M. (2018). Software Deposit: Why deposit software. Zenodo.

Pour être transféré à Software Heritage, le fichier déposé doit être sous licence libre et ne peut pas être sous embargo.

Quel logiciel déposer dans HAL/Software Heritage ?

Qu’appelle-t-on un logiciel de recherche ? Quels types de logiciels sont éligibles ?

Ainsi que le rappelle la définition du collège “Logiciels et code source”, du Comité pour la science ouverte”, “[Les logiciels] 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.”

Concrètement, peut être considéré comme un logiciel de recherche : “ [...] a 50 line bash shell script for manipulating and filtering files, a collection of 50 line R scripts for running a bioinformatics analysis, 10,000 lines of Java for medical image analysis or 100,000 lines of Fortran using MPI for computational fluid dynamics are all examples of research software”.

Quels fichiers dépose-t-on ?

✔️Le code source du logiciel ❌ Les exécutables (ou binaires)
Ces fichiers contiennent des informations textuelles, en général au format Markdown (.md) Extrait du code source de Parmap Les exécutables permettent à une machine d’exécuter le code source ; cette traduction peut être réalisée en amont de l’utilisation du logiciel ou à la volée. Mais les informations essentielles d’un logiciel sont contenues dans son code source. Ainsi, on peut ré-exécuter un logiciel si on dispose du code source mais pas de ses exécutables, mais l’inverse n’est pas vrai.

2 modalités de dépôt selon les modalités de développement

  • Vous n’avez pas utilisé une plateforme de développement en ligne intégrant un outil de contrôle de version ? Choisissez l’option 1.
  • Vous avez utilisé une plateforme de développement en ligne intégrant un outil de contrôle de version ? Conservez l’historique de développement du logiciel en choisissant l’option 2.

Voir aussi : guide du déposant.

Option 1 : Le logiciel a été développé en dehors d’une plateforme de développement en ligne, en local

Exemples de cas d’usage : le logiciel est partagé via un site web personnel ou institutionnel classique, sans fonctionnalité de développement dédiée. Le logiciel est disponible sur l’ordinateur de son auteur, en local uniquement.

Cette option permet de déposer une archive aux formats zip ou tar.gz. On ne peut donc pas archiver tout un historique de développement, mais uniquement un répertoire contenant des fichiers sources à un moment donné. L’usage de cette option de dépôt est déconseillé aux chercheurs qui utilisent des systèmes de contrôle de version et qui souhaitent archiver aussi l’historique de développement. L’option 2 est préférable.

Avant le dépôt dans HAL, en local

1 . AJOUTER les informations sur les auteurs, la licence et le README file dans des fichiers dédiés et nommés explicitement. Note : ces fichiers sont fournis au format Markdown, .md.

  • README : explique à quels besoins répond le logiciel que vous déposez, voir aussi Make a README
  • AUTHORS : contient la liste de tous les auteurs et des contributeurs éventuels. Si vous souhaitez mentionner des contributeurs qui n’ont pas vocation à être mentionnés parmi les auteurs (ex. personnes ayant participé à des tests), vous pouvez prévoir un fichier CONTRIBUTORS. Les informations seront intégrées au code repository et visibles par les utilisateurs, mais lorsque quelqu’un cite le logiciel via HAL, ces contributeurs n’apparaissent pas parmi les auteurs.
  • LICENSE (ou COPYING) : décrit les droits d’utilisation du code source déposé. La licence est à choisir en collaboration avec les services de valorisation des organismes de rattachement des auteurs. Il est notamment possible d’attribuer plusieurs licences à un même logiciel. Voir aussi la section Choisir une licence pour un code source de logiciel.

2 . COMPRESSER les fichiers du code repository dans une archive : .zip, .tar.gz. - Nommer l’archive avec le nom du logiciel ainsi que sa version. - Il n’est pas possible de déposer dans HAL plusieurs archives ou plusieurs fichiers distincts. Le .zip ou .tar.gz. doit contenir tous les fichiers. La taille maximum est 200 M0.

Sur l’interface de HAL, cliquer sur l’onglet “Dépôt”

  • DEPOSER l’archive zippée.
  • COMPLETER les métadonnées : le dépôt ne peut pas être achevé tant que les métadonnées obligatoires ne sont pas complétées. Bon à savoir : pour terminer un dépôt, il faut fournir le nom du logiciel, le domaine thématique, les informations de licence, la liste des auteurs. Les autres informations sont facultatives, elles enrichissent la description du logiciel.
  • Dans la rubrique “Auteurs”, indiquer au moins 1 affiliation. Voir aussi Auteurs et affiliations.
  • Préciser le domaine : il peut être renseigné avant le dépôt dans Profil/Mes préférences de dépôt.
  • Champ “Description” : il est recommandé d’avoir une description cohérente avec le contenu du fichier README.
  • Mots-clés
  • Date de production
  • Classification
  • Projet ANR ou projet européen
  • Langage de programmation
  • Platform/OS : le système d’exploitation compatible avec le logiciel
  • Version : version du logiciel déposé (peut être différente de la version publiée sur HAL)
  • Etat du développement : l’état du développement du logiciel au moment du dépôt (Concept, WIP, Suspendu, Actif, Inactif)
  • Outils de développement : les outils de développement associés au logiciel (Framework, middleware, plateforme logicielle)
  • VALIDER le dépôt.
  • ENREGISTRER le dépôt. La phase de modération du dépôt débute. La personne chargée de la modération peut être amenée à vous solliciter.

Synthèse du processus de dépôt

Synthèse du processus de dépôt. Illustration tirée de Science ouverte - Codes et logiciels

Option 2 : Le logiciel a été développé sur une plateforme de développement en ligne, basée sur un outil de contrôle de version

Vous utilisez des plateformes de développement basées sur des outils de contrôle de version : Gitlab, GitHub, etc.

Cette modalité de dépôt permet de conserver l’historique de développement du logiciel.

Avant le dépôt dans HAL, dans le code repository

  • AJOUTER les informations sur les auteurs, la licence et le README file dans des fichiers dédiés et nommés explicitement. Note : ces fichiers sont fournis au format Markdown, .md.
    • README : explique à quels besoins répond le logiciel que vous déposez, voir aussi Make a README
    • AUTHORS : contient la liste de tous les auteurs et des contributeurs éventuels. Si vous souhaitez mentionner des contributeurs qui n’ont pas vocation à être mentionnés parmi les auteurs (ex. personnes ayant participé à des tests), vous pouvez prévoir un fichier CONTRIBUTORS. Les informations seront intégrées au code repository et visibles par les utilisateurs, mais lorsque quelqu’un cite le logiciel via HAL, ces contributeurs n’apparaissent pas parmi les auteurs.
    • LICENSE (ou COPYING) : décrit les droits d’utilisation du code source déposé. La licence est à choisir en collaboration avec les services de valorisation des organismes de rattachement des auteurs. Il est notamment possible d’attribuer plusieurs licences à un même logiciel. Voir aussi la section Choisir une licence pour un code source de logiciel dans la documentation.
  • DECRIRE le logiciel en ajoutant un fichier CodeMeta conçu avec le CodeMeta Generator : ces métadonnées lisibles par les humains et les machines permettent de pré-remplir les champs de HAL et sont directement associées au code source. Le README file indique ce que permet de faire le logiciel. Le fichier CodeMeta décrit le logiciel, son contexte de création.
  • ARCHIVER le code source sur Software Heritage avec la fonctionnalité “Save Code Now” . Bon à savoir : “Save Code Now” peut être utilisée depuis l’interface de Software Heritage ou depuis la plateforme de développement, pour les utilisateurs de l’extension de navigateur.
  • OBTENIR le SoftWare Hash Identifier (SWHID) de votre code repository depuis Software Heritage, en utilisant l’onglet “Permalinks” : choisir le SWHID de type “dir”, en laissant cochée la case “informations contextuelles”. Bon à savoir : il n’y a pas de compte à créer sur Software Heritage pour obtenir un SWHID.

Obtenir le SWHID

Sur l’interface de HAL, cliquer sur l’onglet “Dépôt”

  • COPIER-COLLER le SoftWare Hash Identifier de votre code repository.
  • VERIFIER et COMPLETER les métadonnées : le dépôt ne peut pas être achevé tant que les métadonnées obligatoires ne sont pas complétées. Bon à savoir : pour terminer un dépôt, il faut fournir le nom du logiciel, le domaine thématique, les informations de licence, la liste des auteurs. Les autres informations sont facultatives, elles enrichissent la description du logiciel.
    • Vérifier le résultat de l’extraction des métadonnées du fichier CodeMeta. Les informations figurent-elles dans le champ ad hoc?
    • Dans la rubrique “Auteurs”, indiquer au moins 1 affiliation. Voir aussi Auteurs et affiliations.
    • Préciser le domaine : il peut être renseigné avant le dépôt dans Profil/Mes préférences de dépôt.
    • Champ “Description” : il est recommandé d’avoir une description cohérente avec le contenu du fichier README.
    • Mots-clés
    • Date de production
    • Classification
    • Projet ANR ou projet européen
    • Langage de programmation
    • Code repository : vérifier que le lien renvoie bien au contenu attendu et qu’il n’est pas brisé. Il s’agit de renvoyer à la page où est disponible le développement du code (SVN, github, gitlab, CodePlex).
    • Platform/OS : le système d’exploitation compatible avec le logiciel
    • Version : version du logiciel déposé (peut être différente de la version publiée sur HAL)
    • Etat du développement : l’état du développement du logiciel au moment du dépôt (Concept, WIP, Suspendu, Actif, Inactif)
    • Outils de développement : les outils de développement associés au logiciel (Framework, middleware, plateforme logicielle)
  • VALIDER le dépôt.
  • ENREGISTRER le dépôt. La phase de modération du dépôt débute. La personne chargée de la modération peut être amenée à vous solliciter.

Focus sur le transfert vers Software Heritage

Lors des dernières étapes du dépôt, il est possible de choisir de transférer ou non les données vers Software Heritage.

Choix du transfert Software Heritage

Les données transférées vers Software Heritage varient selon le type de dépôt effectué :

  • Dépôt option 1, via le dépôt d’archive zippée = l’archivage du code source dans Software Heritage n’est pas antérieur au dépôt dans HAL : les métadonnées ainsi que les fichiers sont transférés vers Software Heritage.

  • Dépôt option 2, via l’identifiant SWHID = l’archivage du code source dans Software Heritage est antérieur au dépôt dans HAL : les métadonnées sont transférées vers Software Heritage.

Bon à savoir :

Si le logiciel a été déposé dans HAL via les modalités de l’option 1, accepter le transfert vers Software Heritage permet de mettre en ligne les fichiers de code source, qui deviennent ainsi plus faciles à explorer. Si le transfert est refusé, la personne qui souhaite consulter le code source doit télécharger tous les fichiers depuis HAL.

Utiliser l’identifiant pérenne SoftWare Hash IDentifier (SWHID)

Pour reproduire une expérience, il est indispensable de connaître avec exactitude la version du logiciel, ce que permet le SoftWare Hash IDentifier (SWHID). Avec le SWHID vous pouvez retrouver dans l’archive de Software Heritage vos codes, lire en ligne tous les contenus textuels et télécharger le code source.

Grâce au SWHID, l’identification des logiciels s’effectue sans passer par un registre. en effet, le SWHID est calculé à partir des données du code source lui-même, à la différence d’un identifiant de type DOI qui s’appuie sur un registre externe pour faire le lien entre un objet et sa description. Le SWHID est l’empreinte digitale du logiciel et ne dépend pas d’un résolveur: un utilisateur peut ainsi le calculer localement.

Chaque version du schéma d’identification est entretenue même quand celui-ci sera étiqueté obsolète, dans le cas de collisions sur les hachages SHA1.

Bon à savoir : si pour le dépôt dans HAL, le SWHID de type “directory” est requis, une fois que le code source est archivé dans Software Heritage, il est possible d’obtenir des SWHID pour différents artefacts : un fichier, un commit, quelques lignes de code source dans un fichier donné, etc. Le pré-requis est d’accepter le transfert vers Software Heritage si le dépôt a été effectué selon les modalités de l’option 1.

En savoir plus sur le SWHID

Citer un logiciel

Le logiciel est une production académique au même titre qu’un article ou un chapitre d’ouvrage. Il ne s’agit pas de citer l’ensemble des logiciels ayant permis de produire les travaux de recherche (ex. un traitement de texte), mais d’identifier les logiciels ayant joué un rôle critique dans la conduite des travaux scientifiques, les outils ayant permis d’aboutir à des résultats significatifs. Il peut aussi être pertinent de citer un logiciel si son utilisation est atypique dans une discipline donnée.

Une pratique courante consiste à citer l’article présentant le logiciel plutôt que de citer le logiciel lui-même. Mais les enjeux liés au cycle de vie du logiciel peuvent rendre cet usage inadapté : il faut renvoyer vers une version précise du logiciel. Ainsi, il est fortement recommandé de citer le logiciel lui-même plutôt que l’article associé.

Le format de citation proposé sur HAL est composé d’une sélection des métadonnées obligatoires soumises lors du dépôt du logiciel. Voici un exemple de citation :

Citation logiciel

Outre ces métadonnées descriptives, le format de citation inclut aussi des identifiants pérennes qui permettent de localiser précisément le logiciel : “When citing software, it is important to distinguish between a software project, which refers to the software as a concept and its creation environment (and which is not a digital object) and software artifacts themselves (source code, binaries, etc.), which usually are digital objects.” Ainsi, le HAL-ID renvoie vers le logiciel en tant qu'œuvre et le SWHID permet d’accéder aux fichiers qui composent le code source. Bon à savoir : il faut accepter l’archivage du dépôt sur Software Heritage pour qu’un SWHID soit inclus dans la notice HAL et dans les exports de citation.

Ressources complémentaires

Télécharger le guide du déposant

A propos du déploiement de la fonctionnalité dans HAL

Une collaboration étroite entre Hal-Inria (l’archive ouverte d’Inria), le CCSD et Software Heritage a abouti à la mise en place d’un processus permettant de déposer des codes sources de logiciels via HAL, et leur archivage pérenne dans Software Heritage.

Pour en savoir plus sur la collaboration