Depedliğinizin sahip olduğu lisansdan daha az kısıtlayıcı bir açık kaynak lisansı kullanabilir misiniz?
Genelliği kaybetmeden, derleme sistemi olarak Gradle ile açık kaynaklı bir Java projeniz olduğunu ve MIT lisansını buna eklemek istediğinizi varsayalım. Durumları düşünün:
Durum 1. build.gradle dosyasından , Eclipse Public License - v 2.0 altında lisanslanan JUnit5 üzerinde bir depedency tanımlıyorsunuz . Bir test klasöründe onunla birkaç test yaparsınız ve tüm bunlar bir src klasörüyle birlikte GitHub'a yüklenir. Projeniz MIT altında lisanslanabilir mi? Ayrıca, projenizle bir paket oluşturacaksınız ancak JUnit5 testleri buna dahil edilmeyecek.
Durum 2. build.gradle dosyasından , Apache License 2.0 altında lisanslanan JetBrains tarafından sağlanan java-annotations üzerinde bir dağıtım olduğunu kabul ediyorsunuz . Projeniz MIT altında lisanslanabilir mi? Dahası, projenizle birlikte bir paket oluşturacaksınız ve bağımlıların kodunuzdaki ek açıklamaları görüntülemesini istiyorsunuz, ancak ek açıklamaları kodlarında kullanıp kullanamayacaklarını merak etmiyorsunuz.
TL; DR: Bir projenin dosyalarını kopyalayıp yapıştırırsanız, onu yalnızca uyumlu lisanslarla yeniden lisanslayabileceğinizi anlıyorum, ancak yalnızca Maven / Gradle paketleri ve oluşturduğunuz proje paketi aracılığıyla bunlara güvenirseniz aynı şey geçerlidir. onları içermeyecek mi?
Yanıtlar
X paketine bir bağımlılık beyan ettiğinizde, iki olasılık vardır
Paket X, GPL veya AGPL gibi güçlü bir copyleft lisansına sahiptir: Bu lisanslar, nihai ikili uygulamanın sırasıyla GPL veya AGPL lisansı altında lisanslanması şartına sahiptir. Sonuç olarak, kendi kodunuz için seçebileceğiniz lisanslara bir kısıtlama getirirler.
X paketini içeren dağıttığınız herhangi bir yapı, X paketiyle aynı lisans altında lisanslanmalıdır. X paketinin olmadığı bir yapı yoksa, kaynak kodunu aynı lisansla lisanslamak en iyisidir. Ayrıca X paketi olmayan derlemeleriniz varsa, kaynak kodunuz için uyumlu bir lisans seçebilirsiniz.
Paket X'in başka bir lisansı vardır: Bu lisanslar, kapsamlarını söz konusu lisansla açıkça lisanslanmış dosyaların ötesine genişletmez ve bu nedenle kendi kodunuz için seçebileceğiniz lisanslara herhangi bir kısıtlama getirmez.
Bu durumda, daha az kısıtlayıcı bir açık kaynak lisansı, daha kısıtlayıcı bir açık kaynak lisansı veya hatta uyumlu bir kapalı kaynak lisansı kullanabilirsiniz.
Bahsettiğiniz her iki durum da (JUnit5 ve java-annotations) ikinci kategorideki lisansları içerir ve bu nedenle kendi kodunuz için sahip olduğunuz lisans seçimlerini etkilemez.