Utilisation de différentes licences pour différentes branches du même référentiel
J'ai un référentiel Git avec un projet de taille moyenne sur GitHub. Comme certains composants dépendent des bibliothèques GPL, le référentiel est actuellement également sous licence GPL. Cependant, la bibliothèque sous licence GPL n'est utilisée que par certains composants (qui peuvent être isolés), et le reste du projet est parfaitement utilisable sans ces composants. Par conséquent, je souhaite obtenir une licence pour tout ce qui n'a aucune dépendance sur les bibliothèques GPL sous la licence MIT. Quelles sont les meilleures pratiques pour y parvenir?
Mon idée est d'avoir deux branches différentes: une branche contient le code complet et est sous licence GPL. L'autre branche supprime toutes les fonctionnalités qui dépendent du code GPL et sont sous licence du MIT. Est-il possible et / ou courant d'avoir des licences différentes pour différentes branches du même référentiel? Sinon, quelles seraient les meilleures alternatives?
Cela pourrait-il être un problème que, techniquement, l'historique complet de cette nouvelle branche non GPL incluait autrefois du code GPL? Ou est-ce que ça va tant que tout le code GPL est supprimé de cette branche avant d'ajouter le nouveau fichier de licence MIT sur la branche?
Notez que cette question est un peu similaire, mais j'ai le sentiment que la mienne est plus concernée par la mise en œuvre technique . Autrement dit, puis-je simplement mettre deux fichiers de LICENCE différents dans le répertoire racine du référentiel, en fonction de la branche sur laquelle nous nous trouvons actuellement?
Réponses
Les branches Git ne fonctionnent pas très bien pour maintenir différentes «éditions» du même projet, car il n'y a pas de bon moyen de partager les modifications entre les branches sans les fusionner complètement. Donc, simplement pour des raisons techniques, je vous exhorte à ne pas utiliser de succursales sous licence différente. De telles branches sont également peu visibles pour les utilisateurs.
Au lieu de cela, conservez tout le code dans une branche principale, mais gardez le code sous licence différente dans différents dossiers et indiquez très clairement quel code est sous quelle licence.
La GPL n'exige pas qu'un code en aval soit sous la GPL. Il exige que toutes les œuvres dérivées (dans leur ensemble) soient sous la même licence GPL. Mais cela peut être satisfait lorsque des composants que vous avez écrits vous-même sont sous une licence compatible GPL, telle que le MIT. Pour éviter tout doute, vous pouvez également obtenir une double licence pour ces composants en tant que «MIT ou GPL». Ce serait important pour les licences qui ne sont pas compatibles, par exemple "Apache-2.0 ou GPL-2.0 uniquement".
La meilleure pratique serait donc de séparer les parties couvertes par la GPL des parties que vous avez entièrement écrites par vous-même, et d'utiliser la LICENCE de niveau supérieur pour décrire quelles parties sont disponibles sous quelle licence. Si vous voulez faire cela avec une extrême précision, vous pouvez même adopter le copyrightformat de fichier lisible par machine de Debian qui associe des modèles globaux à des licences. Vous pouvez stocker le texte intégral de licence soit dans le même fichier de licence, ou peut - être sous forme de fichiers séparés aiment LICENSE.GPL.txt, LICENSE.MIT.txtou dans leurs répertoires respectifs.
Étant donné que vous proposez actuellement l'intégralité du code sous GPL, le déplacement du MIT pour certaines parties nécessiterait une nouvelle licence . Ceci est trivial si vous êtes le seul contributeur, car vous, en tant que seul détenteur des droits d'auteur, pouvez délivrer des licences comme bon vous semble. Mais s'il y a d'autres contributeurs, vous devrez obtenir leur consentement au renouvellement de la licence ou supprimer leurs contributions (ce qui peut être extrêmement délicat car cela nécessite généralement de réécrire le composant en commençant par le dernier état avant la contribution couverte par la GPL). Je ne pense pas qu'il soit important que l'historique de Git affiche les mêmes fichiers couverts par la GPL même après le renouvellement de la licence. L'ancienne licence est toujours valable pour ces anciennes versions, la nouvelle licence est toujours valable pour ces nouvelles versions.