En quelques mots, la compatibilité entre licence libre, est la possibilité de « mélanger » des composants de logiciels sous différentes licences entre eux, afin d'obtenir de nouveaux logiciels modifiés, puis par la suite de les soumettre à une certaine licence plutôt qu'à une autre.
Le principe : la licence d'un logiciel ne peut pas conférer plus de droits et moins d'obligations que les licences de chacun des composants qui sont intégrés au logiciel.
C'est la capacité d'un logiciel sous une certaine licence d'être soumis aux termes d'une autre licence.
Cette compatibilité se décline en 3 mécanismes :
C'est la capacité de la licence d'accueillir un logiciel ou des composants logiciels soumis à d'autres licences.
Cette compatibilité peut être vérifiée de 2 façons :
Cette compatibilité existe lorsque la licence du logiciel/ composant logiciel accueillit par la licence est expressément compatible avec cette dernière. Sous l'angle des facilités d'accueil expresses ou implicites (par la permissivité de la licence) dont dispose la licence « d'accueil ».
Mise en application avec quelques licences à fort copyleft (en se basant uniquement sur les compatibilités expresses) ; exemples avec les licences : GPLv3 ; AGPLv3 ; CeCILL v2 ; CeCILL v2.1 ; EUPL.
Compatibilité supérieure : Aucune, sauf avec les versions ultérieures de la GPL s'il est précisé ou toute version ultérieure , alors le logiciel sous licence GPLv3 pourra être mis à jour et distribué sous la nouvelle version GPL.
Compatibilité inférieure : la licence GPLv3 permet d'accueillir des composants sous les licences : AGPLv3, CeCILLv2 ; CeCILLv2.1, qui se soumettront à la licence GPLv3. Mais attention, compatibilité avec l'AGPLv3 mais sous condition. Le logiciel dérivé issu de composants sous AGPLv3 et GPLv3, est soumis à la licence GPLv3 mais la clause de communication du code source modifié s'applique même lors de la distribution en réseau.
Compatibilité supérieure : avec la GPLv3, uniquement en cas de modification du logiciel par intégration de code soumis à la licence GPLv3, c'est ce que l'on appelle en matière de composition. Compatibilité inférieure : CeCILLv2.1 ; GPLv3
Rappel : c'est la capacité d'un logiciel sous licence AGPLv3 d'accueillir des composants soumis aux licences citées ci-dessus.
Compatibilité supérieure : GPLv3 ; GPLv2 ; ainsi que la CeCILLv2.1 la mise à jour est acceptée par la licence CeCILLv2 aux termes de son article 12.
Compatibilité inférieure : GPLv3 ; GPLv2 ; CeCILL v2.1 ; EUPL, du code sous CeCILLv2 peut accueillir du code sous les licences citées ci-avant.
Compatibilité supérieure : un logiciel sous licence CeCILL v2.1 peut être soumis en cas d'intégration de code sous une autre licence, aux termes de GPLv2 ; GPLv3 ; AGPLv3 ou EUPL. Par son article 12, la licence CeCILLv2.1 permet de soumettre le logiciel sous cette licence à la version ultérieure, c'est la mise à jour.
Compatibilité inférieure : un logiciel sous licence CeCILL v2.1 peut accueillir des composants sous les licences GPLv2 ; GPLv3; AGPLv3 ; EUPL ; CeCILLv2.
Compatibilité supérieure : si un composant est intégré à du code sous licence EUPL, le code modifié peut être par la suite soumis aux licences GPLv2 ; CeCILLv2. De plus, par son article 13 la licence EUPL permet de mettre à jour le logiciel et de le soumettre à toute version ultérieure de cette licence.
Compatibilité inférieure : un logiciel sous licence EUPL a la capacité d'accueillir du code sous licence GPLv2 ; CeCILLv2 ; CeCILLv2.1.
Résumé
Si on mélange :
AGPLv3 + GPLv3 = GPLv3 + clause rendant applicable l'obligation de communication du code source même en réseau
AGPLv3 + CeCILLv2.1 = AGPLv3
GPLv3 + CeCILLv2 = GPLv3
GPLv3 + CeCILLv2.1 = GPLv3
EUPL + GPLv2 = GPLv2
EUPL + CeCILLv2 = CeCILLv2
EUPL + CeCILLv2.1 = EUPL
CeCILLv2 + GPLv2 = GPLv2
CeCILLv2.1 + GPLv2 = GPLv2