Guides · 04

Double licence (licences multiples)

Les deux types de double licence (plusieurs licences pour un même code), le sens des expressions SPDX OR, AND et WITH, et pourquoi une CLA est nécessaire, avec les points d'attention.

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

Pourquoi proposer plusieurs licences pour un même code

Le titulaire des droits peut autoriser le même code selon plusieurs conditions à la fois. Le destinataire en choisit une et en respecte les conditions. Ce choix répond principalement à deux objectifs.

  1. Élargir la compatibilité — pour s'accorder avec plusieurs écosystèmes différents.
  2. Modèle économique — pour publier en open source tout en vendant une licence commerciale séparée.

Type 1 : deux licences permissives ensemble — MIT OR Apache-2.0

C'est la méthode utilisée par le langage Rust et la plupart des crates Rust. L'utilisateur choisit la MIT ou l'Apache-2.0, selon ce qui l'arrange.

On bénéficie ainsi des deux avantages, ce qui explique sa popularité auprès des auteurs de bibliothèques. Par convention, le dépôt contient deux fichiers : LICENSE-MIT et LICENSE-APACHE.

Type 2 : copyleft + commercial — « la GPL, ou payer »

Le code est publié sous GPL ou AGPL, et une licence commerciale est vendue par contrat séparé aux entreprises qui ne veulent pas assumer l'obligation de publier le source. MySQL (GPL + licence commerciale Oracle) et Qt (LGPL-3.0/GPL + commerciale) en sont des exemples typiques.

Ce modèle ne fonctionne que si le titulaire détient les droits sur l'ensemble du code. En effet, il n'a pas le droit de vendre sous licence commerciale du code apporté par des contributeurs externes uniquement sous GPL.

CLA et DCO

Comment l'écrire en expression SPDX

La relation entre plusieurs licences s'écrit avec une expression de licence SPDX.

ExpressionSensExemple
A OR BOn en choisit une (double licence au choix)MIT OR Apache-2.0
A AND BLes deux doivent être respectées (parties différentes mélangées)MIT AND BSD-3-Clause
A WITH exceptionAjoute une exception à une licenceGPL-2.0-only WITH Linux-syscall-note
ParenthèsesDéfinissent l'ordre de combinaison(MIT OR Apache-2.0) AND Unicode-3.0

Confondre OR et AND inverse complètement le sens. Si l'utilisateur peut choisir, c'est OR ; s'il doit tout respecter, c'est AND.

Points d'attention

Exemple d'application

Pour appliquer une double licence à la Rust, téléchargez depuis le générateur les fichiers MIT et Apache-2.0, enregistrez-les sous LICENSE-MIT et LICENSE-APACHE, et indiquez license = "MIT OR Apache-2.0" dans les métadonnées. Dans l'en-tête de chaque fichier, écrivez SPDX-License-Identifier: MIT OR Apache-2.0.

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