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.
Définition du SWHID
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.
Développement de codes et logiciels et identification avec les SWHID
Le collège Codes sources et logiciels propose la définition suivante des 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 fonction du contexte de développement (partenariat avec des acteurs privés par exemple), les codes développés peuvent être amenés à rester privés. Les recommandations qui suivent concernent davantage les codes ouverts, pour plus de détails voir : les préconisations en matière d’ouverture des codes sources, algorithmes et logiciels issus des travaux de recherche d’INRAE.
Les logiciels ouverts peuvent être développés en local ou via un entrepôt de code (Git, Forge, etc.).
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.