Résumé

  • Une expression SPDX valide décrit une information de licence selon une syntaxe ; elle ne prouve ni conformité, ni permission, ni décision de diffusion ou de déploiement.
  • SPDX distingue l’information déclarée par l’auteur d’un paquet, l’information observée dans un fichier et la conclusion d’un créateur de document.
  • Un reçu qui sépare ces enregistrements d’une décision ultérieure rend la correction possible sans présenter une métadonnée comme une autorité qu’elle ne possède pas.

Le raccourci qui semble conclure

Dans une chaîne de livraison, l’expression est souvent la seule chose visible. Un écran de catalogue affiche un identifiant, un fichier de nomenclature l’agrège, puis une équipe le copie dans une feuille de calcul. À chaque étape, il devient tentant de résumer le tout par « licence vérifiée ». Pourtant, le texte conservé dans cette cellule peut provenir de trois opérations différentes : une déclaration de l’auteur, une observation faite dans un fichier, ou une conclusion ajoutée par le créateur d’un document SPDX. Elles ne portent pas la même question.

La syntaxe SPDX permet de représenter avec précision un identifiant, une référence de licence, une exception ou une combinaison avec AND, OR, WITH et +. Cette précision règle une question de forme et de représentation. Elle n’établit pas que le périmètre est complet, que l’expression s’applique à un artefact précis, ou qu’une personne a décidé ce qu’une organisation peut faire ensuite.

La distinction est explicite dans la présentation de SPDX : le projet collecte et communique des faits, et ne fait pas d’interprétation juridique des licences ni de leur conformité. Il faut prendre cette phrase au sérieux. Elle n’enlève rien à la valeur de l’expression ; elle indique ce que l’expression peut transporter sans emprunter l’autorité d’une décision distincte. Une représentation commune peut traverser plusieurs organisations alors que leurs règles, leurs contrats, leurs risques et leurs décisions restent différents.

Déclaration, observation, conclusion

Le champ de licence déclarée d’un paquet a une provenance nette. Il liste les licences déclarées par les auteurs du paquet. La spécification précise que l’information obtenue auprès d’un dépôt tiers ne doit pas y être placée. Ce n’est donc pas un champ où l’on rassemble tout ce qu’un lecteur croit savoir. Il répond à une question plus étroite : qu’ont déclaré les auteurs de ce paquet ?

Cette réponse peut être précieuse même si elle ne clôt rien. Une expression déclarée n’atteste pas que la déclaration est exhaustive, qu’elle décrit chaque fichier, ou qu’un destinataire satisfait à toutes les obligations pertinentes. L’absence du champ a aussi une signification de format, équivalente à NOASSERTION; elle ne devient pas, par magie, une permission ou une absence de licence. Effacer cette différence pour fabriquer un statut rassurant rend une future correction beaucoup plus opaque.

La licence conclue répond à une autre question. Elle contient ce que le créateur d’un document SPDX a conclu comme étant applicable au paquet, ou une valeur alternative lorsque cela ne peut pas être déterminé. Cette conclusion peut aider un lecteur à comprendre un examen réalisé. Mais son auteur n’est pas nécessairement l’auteur du paquet, et l’usage du même vocabulaire ne transforme pas une conclusion documentaire en règle universelle.

SPDX prévoit le cas où les deux enregistrements divergent. Si la licence conclue diffère de la licence déclarée, une explication écrite est demandée dans les commentaires relatifs à la licence. Au niveau d’un fichier, la spécification distingue également l’information réellement trouvée dans le fichier de la licence conclue et demande une explication lorsque les deux diffèrent. La divergence n’est pas un défaut à masquer. C’est une information sur l’origine, le périmètre et le raisonnement d’un enregistrement.

L’observation de fichier mérite donc sa place propre. Elle est liée à des octets et à un moment de consultation. Elle peut changer si le fichier change. Une conclusion ultérieure peut alors être rectifiée en montrant quelle nouvelle observation l’a motivée, sans réécrire l’histoire comme si l’ancienne information n’avait jamais existé.

La décision se situe hors de la chaîne

Après ces enregistrements, une organisation peut devoir décider si elle demande un examen complémentaire, si elle distribue un artefact, si elle applique sa propre politique ou si elle reporte une mise en production. Les sources SPDX utilisées ici ne tranchent aucune de ces situations pour un paquet réel. Elles ne désignent pas non plus un décideur, une juridiction, une politique interne ou une exception commerciale.

Il serait donc erroné de tirer deux conclusions opposées. La première serait de faire d’une expression bien formée un verdict de conformité. La seconde serait de considérer l’expression inutile parce qu’elle ne décide pas tout. L’usage discipliné est plus solide : l’expression peut servir de preuve sur le type d’information qu’elle représente. Elle peut orienter une recherche, signaler un écart et permettre à un examen de reproduire son point de départ. Elle ne doit pas être présentée comme l’examen ou la décision elle-même.

Un reçu d’expression et de décision

Une organisation peut conserver un reçu simple, sans inventer un nouveau profil SPDX. Il doit d’abord fixer le périmètre : paquet, fichier, artefact ou version, avec une référence stable quand elle existe. Il doit ensuite dire quel enregistrement est cité — déclaration d’auteur, information trouvée dans un fichier, ou conclusion du créateur du document — et conserver l’expression exacte ainsi que sa source.

Si une conclusion s’écarte d’une déclaration ou d’une observation, le reçu doit conserver l’explication au lieu de remplacer silencieusement l’une par l’autre. Enfin, une décision distincte ne doit être inscrite que lorsqu’elle existe réellement : son propriétaire, sa version de politique, son périmètre et sa date doivent être nommés. Sans décision, l’état honnête est « non évalué ». Un identifiant propre n’est pas une approbation implicite.

Cette discipline protège chaque rôle. Les auteurs peuvent déclarer une information sans devenir responsables de toutes les actions ultérieures. Le créateur du document peut expliquer sa conclusion sans prétendre parler pour chaque destinataire. Le détenteur d’une décision peut documenter son acte sans prétendre que la grammaire SPDX lui a donné son mandat.

Sources

  1. SPDX — Overview
  2. SPDX Specification 2.3 — Package Information
  3. SPDX Specification 2.2.2 — File Information
  4. SPDX Specification 3.0.1 — License Expressions