Guides · 07

Bases de la compatibilité des licences

Ce qu'est la compatibilité des licences, pourquoi elle ne vaut que dans un sens, et les cas typiques : Apache-2.0 et GPL, Secondary License de la MPL-2.0, liaison LGPL, combinaison AGPL.

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

La compatibilité, c'est « peut-on combiner et distribuer ? »

Deux licences sont compatibles lorsque, en combinant en un seul programme le code soumis à chacune et en le distribuant, on peut respecter simultanément les conditions des deux licences. Si l'une interdit les conditions de l'autre, elles sont incompatibles. Par exemple, la GPL exigeant de « ne pas ajouter de restrictions supplémentaires », le code soumis à une licence imposant des conditions que la GPL n'autorise pas ne peut pas entrer dans un programme GPL.

La compatibilité a un sens

Le code permissif peut entrer dans un projet copyleft, mais pas l'inverse.

C'est pourquoi un tableau de compatibilité doit toujours se lire « quel code → dans quel projet ».

Cas typiques

Apache-2.0 et GPL

La FSF considère que l'Apache-2.0 est compatible avec la GPL-3.0 mais pas avec la GPL-2.0, car ses clauses de résiliation des brevets et d'indemnisation sont des conditions supplémentaires absentes de la GPL-2.0. La GPL-3.0 a été conçue pour résoudre ce problème. Un projet GPL-2.0-or-later peut donc utiliser du code Apache-2.0 en distribuant l'ensemble combiné sous GPL-3.0.

MPL-2.0 et licences GNU

L'article 1.12 de la MPL-2.0 définit la GPL-2.0, la LGPL-2.1, l'AGPL-3.0 et leurs versions ultérieures comme « Secondary License », et l'article 3.3 permet de distribuer sous licence GNU une Larger Work combinant du code MPL avec ce code. L'exception est le cas où l'auteur d'origine a ajouté l'Exhibit B (« Incompatible With Secondary Licenses »).

Bibliothèques LGPL et applications fermées

Une bibliothèque LGPL peut être utilisée dans une application fermée. En contrepartie, l'utilisateur doit pouvoir remplacer la bibliothèque par une version modifiée (la liaison dynamique est le plus simple), et il faut fournir le source de la partie bibliothèque ainsi que les mentions de licence. Si vous copiez et mélangez du code LGPL dans le source de l'application, la situation change : l'ensemble combiné doit suivre les conditions LGPL/GPL.

GPL-3.0 et AGPL-3.0

Les deux licences autorisent expressément la combinaison par leur article 13 respectif. Dans l'ensemble combiné, la partie GPL continue de suivre les conditions de la GPL, et la partie AGPL celles de l'AGPL, y compris l'obligation de fournir le source via le réseau.

EPL-2.0 et GPL

L'EPL-2.0 n'est pas compatible avec la GPL par défaut, mais la combinaison devient possible si l'auteur d'origine désigne la GPL, etc., comme Secondary License via l'Exhibit A.

Code importéApplication ferméeProjet MITGPL-2.0-onlyGPL-3.0
MIT · BSD · ISCPossible (mention)PossiblePossiblePossible
Apache-2.0Possible (mention · NOTICE)PossibleImpossiblePossible
MPL-2.0Sous conditions (publication des fichiers)Sous conditionsSous conditions (Secondary)Sous conditions (Secondary)
LGPL-3.0Sous conditions (liaison)Sous conditions (liaison)ImpossiblePossible
GPL-3.0ImpossibleImpossibleImpossiblePossible

Jusqu'où va la « combinaison » ?

Les problèmes de compatibilité naissent lorsque du code est combiné en un seul programme. La FSF considère que des éléments liés dans un même exécutable ou partageant des structures de données internes complexes forment un seul programme, tandis que la communication habituelle entre programmes séparés (tubes, sockets, arguments de ligne de commande) relève généralement d'un « agrégat » (aggregate) de programmes distincts. Cette frontière n'est toutefois pas fixée par la jurisprudence et les interprétations divergent. Réunir plusieurs programmes dans une même distribution ne constitue pas en soi une combinaison.

Démarche pratique

  1. Extrayez la liste des dépendances (fonction de rapport de licences du gestionnaire de paquets ou outil SBOM).
  2. Classez la licence de chaque dépendance par identifiant SPDX.
  3. Vérifiez une première fois les combinaisons avec la licence de votre projet dans le vérificateur de compatibilité.
  4. Pour les combinaisons « sous conditions », vérifiez les conditions (mention, mode de liaison, Secondary License) dans les textes.
  5. En cas de combinaison impossible, changez de dépendance, séparez les programmes ou ajustez votre licence.
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