SWHID : identifiant pour les codes et les logiciels

La recommandation pour identifier un code ou un logiciel à INRAE

À INRAE et au sein de l’écosystème de la recherche, pour identifier des codes et logiciels, il est recommandé d’utiliser le SWHID et HAL-ID en complémentarité (et un DOI si nécessaire), pour leurs fonctions respectives de “hachage” (qui permet d’identifier très précisément le contenu technique d’un logiciel) et de description (qui permet de documenter une version du code). 

En bref :  

  • Le développement de code et de logiciel doit être versionné et documenté (fichiers README, auteurs, licence) dans la forge INRAE ;
  • Son développement est suivi et identifié par des SWHID ;
  • La version de ce code ou logiciel qui fera l’objet d’une valorisation (publication, rapport, etc.) doit être déposée dans HAL INRAE de façon à ce que des métadonnées complètes soient associées à cette version ;
  • Un DOI DataCite peut lui être attribué, pointant sur le dépôt HAL. 

Cette page présente les bonnes pratiques d’identification des codes et logiciels par le SWHID. Pour aller plus loin, consultez le page concernant les HAL-ID et les Recommandations sur la publication de codes informatiques produits par INRAE et ses partenaires.
 

Le Software Hash Identifier (SWHID) est calculé par Software Heritage afin de fournir un identifiant intrinsèque, unique et propre au contenu du code lui-même, résistant aux changements de plateforme (forges logicielles, GitHub, GitLab) et d’emplacement. Basé sur une empreinte cryptographique (SHA-1), dérivée d’une structure Merkle DAG, il permet, grâce à une granularité fine, d’identifier un dépôt entier, un commit, un répertoire, un fichier, voire une ligne de code. Depuis avril 2025, le SWHID est publié en tant que norme internationale ISO/IEC 18670.
 

Attribuer un identifiant à un logiciel développé en local

Attention : Le développement de code en local n’est pas recommandé à INRAE cf : Recommandations sur la publication de codes informatiques produits par INRAE et ses partenaires

Dans ce cas, l’identification du code ou du logiciel devra donc nécessairement passer par le dépôt de la version au format compressé dans HAL. À l’issue de ce dépôt, l’attribution d’un SWHID et d’un DOI pourra être demandé. Pour plus d’informations : consulter la page de recommandation HAL-ID.

De plus, le dépôt d’un ficher zip dans HAL avec le type de document Logiciel permet également d’attribuer un identifiant SWHID à ce dernier. 

Attribuer un identifiant à un logiciel développé en forge logicielle publique ou une archive ouverte de packages

Quand on développe un code ou logiciel de la recherche dans une forge ou dans une archive ouverte, le logiciel doit disposer d’une licence Open Source ou libre autorisant sa réutilisation et rediffusion, parmi la liste des licences autorisées. Il est alors possible d’archiver le code source sur Software Heritage avec la fonctionnalité “Save Code Now” . 

Cette fonctionnalité permet de saisir l’URL du code dans la forge et de l’enregistrer dans Software Heritage.

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.

Le SWHID est automatiquement généré, le déposant du code n’a pas d’autres actions à effectuer. Il peut récupérer le SWHID dans l’onglet “permalink” : 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.

Pour le dépôt dans HAL, il est possible de copier-coller le SWHID pour récupérer certaines métadonnées. Voir la fiche de recommandation HAL-ID pour plus de détails.