Les pièges qui échappent à la matrice
La matrice famille × scénario traite le cas normal : un composant identifié, sous une licence connue, dans un produit défini. Les incidents réels viennent presque toujours d’ailleurs.
1. Le changement de licence en amont
Le risque le plus actif de la période. Plusieurs projets d’infrastructure majeurs ont quitté une licence libre pour une licence source-available au cours des dernières années — bases de données, moteurs de recherche, outils d’infrastructure, supervision, systèmes de tickets.
Le mécanisme : les versions déjà publiées restent sous l’ancienne licence, définitivement. Mais les versions suivantes ne le sont plus — et vos correctifs de sécurité viennent des versions suivantes.
L’organisation se retrouve alors devant trois options, toutes coûteuses :
| Option | Coût |
|---|---|
| Rester sur la dernière version libre | Plus de correctifs de sécurité en amont : dette réglementaire directe au regard du CRA |
| Basculer sur un fork communautaire | Maturité incertaine, écosystème fragmenté |
| Accepter la nouvelle licence | Négociation commerciale, restrictions d’usage, coût récurrent |
Ce qu’il faut mettre en place :
- épingler les versions et les licences dans le SBOM, et comparer d’une version à
l’autre — un changement de champ
licenseest un événement à traiter, pas une donnée parmi d’autres ; - surveiller les dix à vingt composants d’infrastructure critiques, ceux dont le remplacement prendrait des mois ;
- inscrire ce risque au registre des risques de conformité, avec un porteur nommé.
2. L’absence de licence
Un dépôt public sans fichier de licence n’est pas libre. En l’absence de concession expresse, le droit d’auteur s’applique dans sa plénitude : tous droits réservés. La visibilité du code ne concède rien, et les conditions générales d’une forge ne concèdent au mieux qu’un droit de consultation et de duplication interne à la plateforme.
En SPDX, cela s’écrit NOASSERTION. Dans une politique de licences, cela doit être
bloquant — au même titre qu’une licence interdite, et non traité comme une métadonnée
manquante.
Variante fréquente et plus insidieuse : le dépôt annonce une licence dans son fichier
README mais ne contient aucun texte de licence, ou en contient un autre.
3. Les licences multiples dans un même dépôt
Le dépôt se déclare MIT. Un sous-dossier vendor/, third_party/ ou contrib/ contient du
code sous une autre licence, parfois du copyleft.
Aucun gestionnaire de paquets ne le voit : ils lisent le champ de licence déclaré dans le manifeste, pas le contenu des fichiers.
La seule parade est l’analyse du contenu des fichiers, par empreinte, avec les outils dédiés — voir Générateurs. C’est lent, verbeux, et c’est la différence entre une conformité déclarative et une conformité établie.
4. Le code copié
Depuis un forum ou un site de questions-réponses. Les contributions des principales plateformes sont sous licence de partage à l’identique. Un extrait substantiel copié dans du code propriétaire pose, en théorie, une question de contamination. La pratique universelle est de l’ignorer pour quelques lignes triviales, et la doctrine considère qu’en deçà d’un seuil d’originalité il n’y a pas d’œuvre protégeable. Le risque devient réel pour une fonction entière recopiée.
Depuis un autre projet. Le copier-coller d’une fonction depuis un projet sous copyleft crée une œuvre dérivée, sans qu’aucun gestionnaire de dépendances n’en garde trace.
Le code vendorisé. Copier un composant dans votre arborescence plutôt que le déclarer en dépendance casse la traçabilité : il n’apparaît ni au manifeste, ni au SBOM produit depuis le manifeste. Il n’apparaît qu’à l’analyse de contenu.
5. Le code généré par intelligence artificielle
Sujet ouvert, qu’il faut traiter comme tel plutôt que trancher.
Les faits établis : les assistants de génération de code sont entraînés sur du code public, sous licences variées, dont du copyleft. Il est démontré qu’ils peuvent restituer des extraits substantiels quasi identiques à leur source, en particulier pour du code peu commun.
Les questions ouvertes : le statut juridique de la sortie, la titularité des droits, la qualification d’œuvre dérivée, et la responsabilité en cas de reproduction. Aucune réponse jurisprudentielle stabilisée à ce jour en Europe.
Ce qui est raisonnable en attendant :
- activer les filtres de correspondance proposés par les outils, qui bloquent la restitution d’extraits identiques à du code public connu ;
- relire le code généré pour les fonctions non triviales, comme on relit une contribution ;
- ne pas générer de code dans les zones où une contamination serait irrattrapable — cœur cryptographique, composant destiné à être publié sous licence permissive ;
- documenter la position retenue, pour ne pas avoir à l’improviser lors d’une diligence d’acquisition, où la question est désormais posée.
6. Les assets, ignorés par tous les outils
Aucun scanner de dépendances ne regarde les polices, les icônes, les images, les sons, les modèles 3D ou les jeux de données. Ils sont pourtant à l’origine de problèmes très concrets, parce que leurs licences sont souvent plus restrictives que celles du code.
| Asset | Piège |
|---|---|
| Polices | OFL-1.1 : clause de nom réservé, le sous-ensemblage est une modification. Polices commerciales : licences par domaine ou par nombre de pages vues |
| Icônes | CC-BY-NC interdit dans un produit vendu ; CC-BY impose une attribution rarement faite |
| Images | Banques d’images : licence par usage, souvent non transférable au client |
| Sons | Mêmes règles, plus les droits voisins |
| Jeux de données | ODbL : copyleft sur les bases dérivées. Décisif pour un produit d’apprentissage automatique |
| Modèles pré-entraînés | Licences propres, parfois avec restrictions d’usage — famille dite « responsable » |
Ce qu’il faut faire : tenir un inventaire des assets distinct du SBOM logiciel, avec la source, la licence, la preuve d’acquisition et le périmètre d’usage concédé. Personne ne le fait spontanément ; c’est pourtant le premier endroit où un audit trouve quelque chose.
7. Les incompatibilités mutuelles
Deux licences peuvent être libres toutes les deux et impossibles à combiner. Les combinaisons à connaître :
| Combinaison | Statut |
|---|---|
Apache-2.0 + GPL-2.0-only |
Incompatible selon la position de la FSF |
Apache-2.0 + GPL-3.0 |
Compatible |
CDDL-1.0 + GPL-2.0 |
Incompatible — c’est l’origine du problème ZFS sous Linux |
GPL-2.0-only + GPL-3.0-only |
Incompatible entre elles |
GPL-2.0-or-later + GPL-3.0 |
Compatible, par bascule en v3 |
BSD-4-Clause + GPL |
Incompatible — clause de publicité |
EPL-1.0 + GPL |
Incompatible ; l’EPL-2.0 le résout par une clause optionnelle |
| Deux copylefts forts différents | Généralement incompatibles entre eux |
Une incompatibilité ne se contourne pas : elle rend la distribution de l’œuvre combinée impossible. Elle se détecte tôt, ou elle se paie en réécriture.
8. Les clauses de brevets et leur effet en retour
Apache-2.0, GPL-3.0, MPL-2.0 et EPL-2.0 comportent une concession de brevets assortie d’une résiliation : engager une action en contrefaçon de brevet contre un contributeur au sujet de ce logiciel fait perdre la concession, et parfois la licence entière.
Pour une entreprise détentrice d’un portefeuille de brevets, c’est un sujet de direction juridique et non d’équipe technique : une stratégie contentieuse peut être neutralisée par le choix d’une bibliothèque fait trois ans plus tôt par un développeur.
9. Le CLA absent
Sans accord de licence de contributeur ni certificat d’origine, chaque contributeur externe conserve ses droits. Conséquences pour un projet que vous publiez :
- relicenciement impossible sans le consentement de chacun ;
- double licence commerciale impossible ;
- action en contrefaçon difficile contre un tiers qui violerait votre licence, faute de détenir tous les droits.
À trancher avant la première contribution externe. Voir Bibliothèque / SDK.
10. Les fausses licences libres
Des textes qui ressemblent à des licences libres sans en être :
| Texte | Problème |
|---|---|
| Commons Clause | Un avenant greffé sur une licence libre, qui en retire le droit de vendre. « MIT + Commons Clause » n’est pas MIT |
| JSON License | Contient la clause « le logiciel sera utilisé pour le Bien, pas pour le Mal » : ambiguë, non libre en pratique, plusieurs fondations l’interdisent |
| Licences « maison » | Rédigées par l’auteur, non revues, à l’interprétation imprévisible. À traiter comme du propriétaire |
| Licences « éthiques » | Restrictions d’usage selon la finalité. Sortent de la définition du libre et posent un problème d’appréciation permanent |
Ce que ces dix pièges ont en commun
Aucun n’est détecté par un scanner de dépendances lisant les manifestes. Tous exigent soit une analyse du contenu des fichiers, soit une surveillance dans le temps, soit une décision de gouvernance.
C’est la raison pour laquelle la conformité aux licences ne se réduit pas à un outil : elle suppose une politique, un registre, une veille et un propriétaire nommé — voir Propriété intellectuelle.