Birkaç ay önce hukuk ekibinden basit bir soru geldi: "Bu üründe hiç GPL lisanslı bir şey olmadığını kanıtlayabilir misiniz?" Binlerce geçişli bağımlılığın bulunduğu Node.js ve Python projelerinde doğru yanıtı veremiyorduk. "Ee, galiba hayır?" demek yerine, ihtiyacımız olan şey, yerel olarak, anında bağımlılıkların taşıdığı lisansları belirleyen bir araçtı. Mevcut çözümlerse ya bakımsız kalmıştı ya da bulut tabanlıydı. Bu yüzden licsniff’i geliştirdik: bağımlılıklarınızı tarayan, risk düzeylerini sınıflandıran ve tek bir satır komutla çalışan bir CLI aracı.
Yasal riskler yerelden çözülmeli
Bugün kapalı kaynak kodlu bir üründe çalışıyorsunuz. Projenizin altında yatan Node.js ya da Python bağımlılıklarından bazılarının GPL gibi zorunlu açık kaynak lisansları taşıdığını fark etmediğinizde neler olabileceğini düşünün. Hukuki inceleme sırasında, node_modules ya da site-packages klasörlerinde saklanan basit JSON ve METADATA dosyalarında gizlenen bu riskleri yerel olarak taramadan asla emin olamazsınız.
Mevcut araçlar genellikle ya bakımsız kalmıştı ya da kullanıcı kaydı, API token’ı ve ağ bağlantısı gerektiriyordu. Oysa bağımlılıklarınızın lisans bilgileri zaten sizin diskte duruyordu. Örneğin:
- Node.js paketleri
package.jsondosyasında lisans alanını taşır. - Python tekerleri (wheels) ise
METADATAdosyasında lisans bilgilerini içerir. - Modern Python tekerlerindeyse PEP 639 standardına göre
License-Expression:alanı bulunur.
Bütün bu veriler zaten oradayken, neden üçüncü taraf servislere göndermek zorunda kalalım?
licsniff: Yerel, hızlı ve basit bir çözüm
licsniff, bağımlılıklarınızın lisanslarını yerel olarak tarayan, sıfır bağımlılıkla çalışan bir komut satırı aracıdır. Kurulum gerektirmez, ağ bağlantısına ihtiyaç duymaz ve sadece birkaç saniye içinde sonuç üretir.
Komut satırından kullanımı son derece basittir:
npx licsniffveya Python projeleri için:
pipx run licsniffAraç, bağımlılıklarınızı en riskli olandan en az riskliye doğru sıralayarak sunar. Örneğin:
PACKAGE VERSION LICENSE RISK
some-gpl-lib 2.1.0 GPL-3.0 strong-copyleft
mystery-pkg 0.0.3 (none) unknown
copyleft-utils 1.4.0 LGPL-2.1 weak-copyleft
left-pad 1.3.0 MIT permissive
fast-json 3.1.4 (MIT OR Apache-2.0) permissiveLisans risklerini beş kategoride sınıflandırıyor
Araç, her lisansı beş farklı risk kategorisine ayırır. Bu sayede sadece lisans adını değil, uygulama riskini de anında görürsünüz:
- İzin verici (permissive) – MIT, ISC, BSD, Apache-2.0, 0BSD, Unlicense, CC0. Bu lisanslara sahip bağımlılıkları serbestçe kullanabilirsiniz.
- Zayıf copyleft (weak-copyleft) – LGPL-, MPL-2.0, EPL-, CDDL-*. Sadece dosya ya da bağlantı zorunlulukları getirir.
- Güçlü copyleft (strong-copyleft) – GPL-, AGPL-. Projenizin tamamını açık kaynaklığa zorlayabilir.
- Ticari (proprietary) –
UNLICENSED,SEE LICENSE IN …. Açık kaynaklı olmayan lisanslardır. - Bilinmeyen (unknown) – Lisans bilgisi eksik ya da tanınmayan. Bu kategori en tehlikeli olanıdır; çünkü neyi dağıttığınızı bile bilmiyorsunuz.
Gerçek dünya lisans ifadelerini doğru şekilde değerlendiriyor
Bağımlılıklarınızın lisans alanları her zaman temiz değildir. Karmaşık ifadelerle karşılaşabilirsiniz:
(MIT OR Apache-2.0)GPL-3.0 AND MITGPLv3GPL-3.0+GPL-3.0-onlyApache License 2.0
licsniff, bütün bu ifadeleri SPDX standardına uygun şekilde normalleştirir ve mantıksal operatörleri doğru şekilde değerlendirir:
ORoperatörü – en az kısıtlayıcı seçeneği seçer. Örneğin,(MIT OR GPL-3.0)ifadesiizin vericiolarak sınıflandırılır.ANDoperatörü – en kısıtlayıcı seçeneği seçer. Örneğin,GPL-3.0 AND MITifadesigüçlü copyleftolarak sınıflandırılır.
Bu sayede CI sürecinde **yanlış bir şekilde
Yapay zeka özeti
Kapalı kaynak kodlu projelerinizdeki GPL ve diğer lisans risklerini yerel olarak tarayan licsniff aracıyla, bağımlılıklarınızın yasal uyumluluğunu anında kontrol edin. Net, hızlı ve kullanımı kolay çözüm.