Açık kaynak lisans türleri: bir projede neden dört lisans var?
Havenfold ekibi ·

Açık kaynak lisanslar kabaca üç gruba ayrılır: kodu kapalı ürünlerde bile az koşulla kullanmaya izin veren serbest lisanslar (MIT, BSD, Apache-2.0), kodun üstüne yapılanın da aynı lisansla paylaşılmasını isteyen güçlü copyleft lisanslar (GPL, AGPL) ve aradaki dosya düzeyinde copyleft lisanslar (MPL-2.0). Bir proje, farklı parçaları için bunlardan birkaçını bilerek seçebilir.
Bu yazı lisans türlerini sade bir dille anlatıyor, MPL-2.0'ı ayrıca açıklıyor ve Havenfold'un deposunu neden dört lisansa böldüğünü gösteriyor. Genel bir açıklamadır, hukuki danışmanlık değildir.
Üç grup lisans
- Serbest (permissive) lisanslar: MIT, BSD ve Apache-2.0 gibi lisanslar kodu kullanmaya, değiştirmeye ve kapalı ürünler dahil yeniden dağıtmaya izin verir; genellikle telif bildirimini korumanız yeterlidir.
- Güçlü copyleft lisanslar: GPL ve AGPL, kodun üstüne kurulan yazılım dağıtıldığında onun da aynı lisansla paylaşılmasını ister. Mozilla'nın SSS sayfası GPL'nin kapsamını şöyle özetliyor: copyleft, GPL'li kod üzerine kurulan bütün yazılıma uygulanır.
- Dosya düzeyinde copyleft: MPL-2.0 ikisinin arasında durur; copyleft yalnız lisansı taşıyan dosyalara uygulanır, çevresindeki kodun tamamına değil.
MPL-2.0 sizden ne ister?
Mozilla'nın kendi SSS sayfası MPL'yi "basit bir copyleft lisansı" olarak tanımlıyor; dosya düzeyindeki copyleft'in amacı, katkıda bulunanları kodunuzda yaptıkları değişiklikleri paylaşmaya teşvik etmek. Pratikte:
- MPL dosyalarındaki değişiklikler paylaşılır. MPL lisanslı bir dosyayı değiştirip yazılımınızı dağıtırsanız, değiştirdiğiniz o dosyanın kaynağını MPL ile erişilebilir kılarsınız.
- Kendi yeni dosyalarınız sizin kalır. SSS'ye göre içinde MPL lisanslı kod olmayan yeni dosyalar "değişiklik" sayılmaz ve MPL ile yayımlanmaları gerekmez. SSS, MPL kodunun daha büyük ve kapalı bir yazılımın parçası olarak dağıtılabileceği örneğini de veriyor.
- GPL ile yan yana durabilir. SSS'ye göre MPL ve GPL kodu, MPL kodu "ikincil lisanslarla uyumsuz" diye işaretlenmemişse, daha büyük bir eserde birleştirilebilir.
Çekirdeğindeki iyileştirmelerin geri gelmesini isteyen ama şirketlerin üstüne ürün yapmasına da izin vermek isteyen bir proje için bu doğal bir seçimdir.
Öbür üç lisans, kısaca
- Apache-2.0: Serbest bir lisanstır ve açık bir patent lisansı içerir. Üçüncü bölümü "Grant of Patent License" başlığını taşır; katkıda bulunanların katkılarıyla ilgili patentleri için kullanıcılara lisans verir.
- AGPL-3.0: GPL'ye bir ağ maddesi ekler. On üçüncü bölüme göre programı değiştirirseniz, değiştirdiğiniz sürüm onunla bilgisayar ağı üzerinden etkileşen bütün kullanıcılara kaynak kodunu alma imkânını açıkça sunmalıdır. Hiç "dağıtılmayan" ama başkalarının kullandığı sunucu yazılımlarındaki boşluğu kapatır.
- CC BY 4.0: Bir yazılım lisansı değil, metin ve medya için bir Creative Commons lisansıdır. Uygun biçimde atıf yaparak paylaşabilir ve uyarlayabilirsiniz.
Havenfold neden bilerek dört lisans kullanıyor?
Havenfold'un İngilizce README'si birden çok lisansı bilerek kullandığını yazıyor (Türkçe BENİOKU aynı bölünmeyi kısaca veriyor). Her paket lisansını kendi paket dosyasında belirtiyor, her kaynak dosyasında bir SPDX satırı var ve lisansların tam metinleri depoda duruyor. Bölünme şöyle:
- Çekirdek, telefon paketi, düğüm yazılımı ve kurulum: MPL-2.0. README'deki gerekçe: dosya düzeyinde copyleft; çekirdeği kapalı bir ürünün içinde dağıtabilirsiniz, ama çekirdeğin kendi dosyalarındaki değişiklikler yayımlanmalıdır. MPL-2.0'ın uygulama mağazalarında dağıtımla uyumlu olduğunu da ekliyor; telefon uygulamaları çekirdeğin üstüne kurulduğu için bu önemli.
- Test vektörleri ve numara tahsisleri, SDK, export-open aracı ve görev imajları: Apache-2.0. Amaç, herkesin Havenfold'u çekinmeden uygulayabilmesi; patent izni de içeriyor.
- Sunucu tarafı referans kodu: AGPL-3.0. Bugün hizmet paketleri için bir referans alıcı; ileride depoya taşındıklarında Posta Kutusu ve aktarıcı. Ağ hizmeti olarak çalışan kod, tam da AGPL'nin ağ maddesinin işe yaradığı yer.
- Belgeler: CC BY 4.0. Kurucu belge ve BENİOKU dosyaları dahil.
README lisansların yanında bazı taahhütler de yazıyor: yayımlanan kod daha kısıtlayıcı bir lisansa geçmeyecek; katkılar CLA olmadan, Geliştirici Kökeni Sertifikası (DCO) ile kabul ediliyor; proje satılırsa marka ve depo bir vakfa devredilecek. Patent konusunda proje, yeniliklerini savunma amaçlı açık yayın olarak sunduğunu ve bunlar için patent başvurusu yapmadığını söylüyor.
Havenfold üstüne bir şey yaparsanız ne demek?
- Çekirdeğin üstüne kapalı bir uygulama yapmak: MPL-2.0 izin veriyor; çekirdeğin kendi dosyalarında yaptığınız değişiklikleri yayımlamanız gerekiyor.
- Tanımlardan ve test vektörlerinden kendi uygulamanızı yazmak: Apache-2.0 parçaları bunu kolaylaştırmak için seçildi.
- Değiştirdiğiniz bir sunucu tarafı referans bileşenini başkalarına hizmet olarak çalıştırmak: AGPL, ağ üzerinden kullananlara kaynağı sunmanızı istiyor.
- Belgeleri alıntılamak ya da uyarlamak: CC BY 4.0, atıfla.
Havenfold'un kendisi pre-alpha aşamasında: gerçek verinizle kullanmayın. Lisanslar kodla ne yapabileceğinizi anlatır; kodun hazır olup olmadığı hakkında bir şey söylemez ve bugün hazır değil.
Özet
- Açık kaynak lisanslar serbest, güçlü copyleft ve dosya düzeyinde copyleft diye üç gruba ayrılabilir.
- MPL-2.0'da MPL dosyalarındaki değişiklikler paylaşılır; kapalı bir ürünün içinde bile kendi ayrı dosyalarınız kapalı kalabilir.
- Apache-2.0 serbesttir ve açık bir patent lisansı içerir; AGPL, GPL'ye ağ maddesi ekler; CC BY 4.0 metin ve medya içindir.
- Havenfold çekirdek için MPL-2.0, SDK ve araçlar için Apache-2.0, sunucu tarafı referans kodu için AGPL-3.0 ve belgeler için CC BY 4.0 kullanıyor; her birinin gerekçesi README'de yazılı.
Havenfold pre-alpha aşamasında: gerçek verilerle kullanmayın. Henüz gerçek bir evde çalışmadı ve bağımsız bir güvenlik denetiminden geçmedi.
Kaynaklar