Açık kaynak lisanslama, yazılım dünyasında yeni bir trend gibi görünse de aslında ilk yazılım lisanslama modeli olarak ortaya çıktı. 1960’ların sonunda AT&T Bell Labs tarafından geliştirilen Unix, şirketin ticari faaliyetlerine getirilen kısıtlamalar nedeniyle kaynak kodu açık şekilde dağıtıldı ve akademik çevrelerde yaygınlaştı. 1983’te bu kısıtlamalar kaldırılınca Unix kapalı kaynak haline geldi ve 1980’lerle birlikte ticari lisanslama modeli baskın hale geldi. 1990’larda Linux ve GNU Projesi’nin birleşmesiyle açık kaynak yeniden güç kazandı ve zamanla teknoloji sektöründe merkezi bir konuma ulaştı.
Günümüzdeyse açık kaynaklı bir yazılım kullanmamak neredeyse imkansız. Çok fazla açık kaynak lisans türü olsada, ana kategorilerin farkında olmak, bu lisansların bizim projelerimizi nasıl etkileyeceği konusunda fikir sahibi olmamıza yetecektir.
Lisans Kategorileri
Temel olarak bilmemiz gereken iki lisans kategorisi var: liberal ve copyleft.
Liberal Lisanslar
- Yazılım üzerinde herhangi bir kısıtlama olmaksızın değişiklik, dağıtım ve ticari kullanım özgürlüğü
- Kullanımdan doğabilecek risk ve yükümlülüklerin tamamıyla kullanıcıya ait olması
- Orijinal eser sahiplerinin fikri mülkiyet haklarının tanınması ve referans gösterilmesi zorunluluğu
Copyleft Lisanslar
- Çalıştırılabilir dosyaların dağıtımı halinde kaynak kodun da erişilebilir olması zorunluluğu
- Kaynak kod ve türev çalışmaların aynı copyleft koşullarına tabi olması gerekliliği
Liberal Lisanslar | Copyleft Lisanslar |
---|---|
BSD (Berkeley Software Distribution) | Affero GPL (AGPL) |
MIT | GPL |
Apache 2.0 | Lesser GPL (LGPL) |
Mozilla Public License (MPL) |
Copyleft Lisans Örneği
Copyleft lisansların temel amacı, kullanıldığı projelerin de açık kaynak olarak kalmasını sağlamaktır. Daha açıklayıcı olması için bir lisansı inceleyelim.
GNU Affero General Public License v3
- Yazılımı dilediğiniz gibi değiştirebilir ve ticari amaçlar da dahil olmak üzere özgürce dağıtabilirsiniz.
- Yazılımın kullanımından doğabilecek herhangi bir zarardan sorumlu tutulamaz ve yazılımın hakları başka bir lisans altında yeniden dağıtılamaz.
- Bu lisans, yazılımın telif hakkı bilgisinin korunmasını, lisansın ve kurulum talimatlarının eklenmesini, ayrıca yazılım dağıtıldığında veya servis olarak sunulduğunda (özellikle değiştirilmiş ya da türetilmişse) kaynak kodunun erişime açılmasını zorunlu kılar.
AGPL lisansı örneğinde, yazılım ağ üzerinden kullanıma sunulduğunda lisansın gereklilikleri devreye girer ve bizi kendi yazılımımızı da açık hale getirmeye zorlar.
The Lesser GPL (LGPL)
Zayıf Copyleft lisansları koşulları daha esnek olan bir Copyleft lisans türüdür. Copyleft koşulları gereği, açık kaynaklı bir yazılımı kullanıyorsanız, normalde değişiklik yapmanız durumunda kaynak kodunu da paylaşmanız gerekir. Ancak, LGPL lisansında bu kural yalnızca doğrudan değiştirilen kısım için geçerlidir.
Günümüzde birçok farklı açık kaynak lisans türü bulunuyor ve her biri projelerimiz üzerinde farklı etkilere sahip olabilir. Açık kaynak yazılımların yaygın kullanımı nedeniyle, bu lisansların ve etkilerinin DevOps pipeline’ında tespit edilmesi kritik bir önem taşıyor. Şimdi, bunu Sonatype ürünü ile nasıl gerçekleştirebileceğimizi inceleyelim.
Lisansların DevSecOps Pipeline’ında Tespiti ve Aksiyon Alınması
Lisans Tehdit Grupları
Açık kaynak bileşenler üzerindeki lisanslar, bu bileşenleri kullananların uyması gereken yükümlülükleri belirler. Bu yükümlülükler, uygulamanın dağıtım şekline bağlı olarak farklı risk seviyeleri oluşturur. Sonatype, bizim için bu lisansları uyulması gereken koşullara göre ayıran License Threat Groups (Lisans Tehdit Grupları) adında bir veritabanına sahiptir. Lisans Tehdit Grupları (LTG), lisansları bu yükümlülüklere göre kategorize ederek lisansların yönetimini sağlar.
Tek tek her lisansı listelemek yerine, lisansları tehdit gruplarına ayırarak yönetir. Sonatype’ın hukuk ekibi, yeni keşfedilen lisansları düzenli olarak inceler ve uygun gruba dahil eder.
Lisans Tehdit Grupları ve Açıklamaları
Her lisans en az bir tehdit grubuna dahil edilir ve bazı lisanslar birden fazla grupta yer alabilir.
- Yasaklı (Banned): Kullanımı hiçbir koşulda izin verilmeyen lisanslar.
- Copyleft: Kaynak kodun dağıtıldığı durumda, aynı veya uyumlu bir lisansla paylaşılmasını zorunlu kılan olan güçlü copyleft lisansları.
- Lisans-AI-ML: Yapay Zekâ ve Makine Öğrenimi (AI-ML) ile ilgili lisanslar.
- Ticari (Commercial): Açık kaynak olmayan ve kullanım için ödeme gerektiren lisanslar.
- Standart Dışı (Non-Standard): Olağandışı lisanslar (örneğin, “Eğer karşılaşırsak bana bira ısmarla” lisansı).
- Sonatype Özel Lisansları: Lisansı belirlenemeyen bileşenler. Örneğin, yazarı lisans belirtmemiş olabilir.
- Zayıf Copyleft (Weak Copyleft): Zayıf copyleft lisansları, türetilen kaynak kodunun aynı lisansla kalmasını zorunlu kılarken, farklı lisanslı (kapalı kaynak dahil) kodlarla bağlantı kurmaya veya entegre edilmeye izin verir.
- Liberal: Neredeyse hiçbir kısıtlama içermeyen ve her türlü kullanıma izin veren lisanslar.
- Sonatype Bilgilendirme (Sonatype Informational): Sonatype ve ekosistem tarafından lisansın nasıl tanımlandığını belirten lisans etiketleri.
Bilinen binlerce lisans Sonatype üzerinde kategorilenmiş durumda, değişikliğe ve yeni kategori oluşturmaya izin veren bir yapı da mevcut. Tespiti IDE, SCM ve CI/CD aşamasında tespit edebiliriz. Tespit ettikten sonra nasıl aksiyonlar alabiliriz, inceleyelim.
Aksiyon
Sonatype’la pipeline’ın çeşitli aşamalarında aksiyon alabiliriz. Varsayılan olarak, Sonatype lisanslarla ilgili birçok politikaya sahip.
Bu politikalar üzerinden, bir lisans türü keşfedildiğinde hangi aşamada hangi aksiyonu alabileceğimizi belirleyebiliriz. Başta esnek politikalar belirleyip, daha sonra sıkılaştırarak, kuruma lisans güvenliği kültürünün yerleşmesini sağlayabiliriz. □