Guides · 05

Identifiants SPDX et en-têtes de fichiers

Comment écrire les en-têtes SPDX-License-Identifier et SPDX-FileCopyrightText, identifiants obsolètes (GPL-2.0 → GPL-2.0-only), champ license des métadonnées de paquets et spécification REUSE.

Dernière vérification : 2026-09-23

Qu'est-ce que SPDX ?

SPDX (Software Package Data Exchange) est un projet de la Linux Foundation : une norme qui exprime de façon lisible par machine les composants d'un logiciel et leurs informations de licence. Elle est devenue la norme internationale ISO/IEC 5962:2021 en 2021. Son élément le plus utilisé est l'identifiant court de la liste des licences SPDX : au lieu de noms disparates comme « MIT License », « The MIT license » ou « licence MIT », on convient d'écrire simplement MIT.

Deux lignes d'en-tête

En plaçant ces deux lignes en commentaire en tête d'un fichier source, humains comme outils identifient immédiatement le titulaire et la licence du fichier.

// SPDX-FileCopyrightText: 2026 Jane Doe <jane@example.com>
// SPDX-License-Identifier: MIT

L'onglet En-tête de fichier du générateur crée ces deux lignes dans 7 styles de commentaire.

Attention aux identifiants obsolètes

Depuis la version 3.0 de la liste des licences SPDX (décembre 2017), la clause de version des licences GNU doit apparaître dans l'identifiant.

Identifiant obsolèteIdentifiant actuel
GPL-2.0GPL-2.0-only
GPL-2.0+GPL-2.0-or-later
GPL-3.0GPL-3.0-only
LGPL-2.1LGPL-2.1-only
AGPL-3.0AGPL-3.0-only

Écrire simplement GPL-3.0 ne permet pas de savoir s'il s'agit de « only » ou de « or later ». La différence entre les deux est expliquée dans only vs or-later.

Métadonnées des paquets

La plupart des gestionnaires de paquets acceptent les identifiants ou expressions SPDX.

ÉcosystèmeFichierExemple
npmpackage.json"license": "MIT" · pour un paquet privé "UNLICENSED"
RustCargo.tomllicense = "MIT OR Apache-2.0"
Pythonpyproject.tomllicense = "Apache-2.0" (PEP 639)
Mavenpom.xmlNom et URL dans <licenses>

Le UNLICENSED de npm n'a rien à voir avec « Unlicense » : il signale un paquet privé dont l'utilisation n'est pas autorisée. Les orthographes étant proches, les erreurs sont fréquentes.

REUSE : rendre tout le dépôt lisible par machine

La spécification REUSE de la Free Software Foundation Europe (FSFE) définit comment appliquer les en-têtes SPDX de façon cohérente à tout un dépôt.

  1. Placez tous les textes de licence dans le dossier LICENSES/ sous le nom identifiantSPDX.txt (p. ex. LICENSES/MIT.txt).
  2. Ajoutez SPDX-FileCopyrightText et SPDX-License-Identifier à chaque fichier.
  3. Pour les fichiers qui ne peuvent pas contenir de commentaires (images, JSON, etc.), indiquez les informations dans un fichier voisin nomdufichier.license ou dans un REUSE.toml à la racine du dépôt.
  4. Vérifiez avec l'outil reuse lint qu'aucun fichier ne manque.

Conseils pratiques

Cet article est fourni à titre d'information générale et ne constitue pas un conseil juridique. Pour toute décision importante, consultez un professionnel.

Sources