Pratikte “sınıf yolu istisnasına sahip GPL” ne demektir?


70

Oracle, Java ile ilgili tüm açık kaynak kodlarını GPL kapsamında sınıf yolu istisnasıyla lisanslıyor gibi görünüyor . Anladığım kadarıyla bu, bu kütüphaneleri kendi kodunuzla GPL kapsamına girmeyen ürünlerle birleştirmenize izin veriyor gibi görünüyor.

  1. Bu nasıl çalışıyor?
  2. Bu sınıfları nasıl kullanabileceğime ve kullanamaya örneklerim?
  3. Bu yeni lisans neden hemen hemen aynı şeylere izin veren, ancak daha iyi kurulmuş ve anlaşılmış olan LGPL'nin aksine kullanılmıştı?
  4. LGPL ile arasındaki farklar nelerdir?

1
Bunu wikipedia'da buldum: en.wikipedia.org/wiki/… ki bu işleri biraz temizliyor, ama neden birisinin bunu LGPL üzerinden kullandığını hala anlamıyorum. İyi soru!

1
Bu Wikipedia sayfalarının, LGPL'nin hükümleri olan "kullanıcının kendi sürümüyle kütüphaneyi değiştirebilmesi gerekir" gibi şeylerden bahsetmediği. Yani belki GPL + İstisna, bunu gerektirmez?
Thilo

1
Okumaya devam edersek, durum böyle görünüyor: "LGPL, bağlantı istisnası için daha fazla gereksinim oluşturuyor: kullandığınız Kütüphane bölümlerinin değiştirilmesine izin vermelisiniz ve bu tür değişikliklerin hatalarını ayıklamak için mühendislik (programınızın ve kütüphanenin) tersine çevirmelisiniz"
Thilo

Bu durumda, ne am değil bu lisans altında yapmasına izin? Lisanslı kodu (seç + sınıfları seç) kendi kod tabanıma kopyalayabilir miyim (elbette değiştirilmemiş)? Elde edilen ikili dosyayı değiştirmek için otomatik derleme araçları kullanabilir miyim? Obfuscators, minimizer, ölü kod striptizci?
Thilo

Bu koddan kopyalayabilir ve kendi kodunuz "SINIF YOLU DURUMU İLE GPL" lisansı altında da yayınlanmışsa SADECE kendi kodunuzda kullanabilirsiniz . Kodunuz tescilli ise veya MIT gibi diğer birçok açık kaynak lisansı altındaysa, kullanmanıza izin verilmez.
Abhi Beckert

Yanıtlar:


69

Öncelikle ben avukat değilim. Ancak birçok lisans çalıştım ve bunlarla ilgili sorunları anladım.

İkincisi, bunun eski bir soru olduğunu biliyorum, ama bunun hala bir karışıklık ve endişe kaynağı olduğunu düşünüyorum. Eğer bir endişe konusu değilse, öyle olmalı. Bir lisans seçmek, özellikle birden fazla katılımcının dahil olması durumunda, yol üzerinde önemsizce değiştiremeyeceğiniz büyük bir iştir.

(L) GPL ne yazık ki C / C ++ ile yazılmıştır. "Kaynak Kod", "Nesne Kodu", "Dinamik Bağlantı", "Statik Bağlantı", "Derleyiciler" ve "Nesne Kodu Yorumlayıcı" dan bahsetmektedir. Bu nedenle, aynı derleme tekniklerini (Java'nın byte kodu, Python'un tam zamanında derlemesi veya Javascript'in yorumlanmış doğası gibi) izlemeyen diğer diller için tercüme edilmesi bazı tahmin ve varsayımlar gerektirir. Kanun hakkında konuşurken - yani iki tarafın tartıştığı davalar hakkında düşünmek - kesin bir ayrım yapmamak KÖTÜ BİR ŞEYDİR.

Standart GPL lisanslı bir kod parçası, kasıtlı olarak oldukça kolaydır. Bu kodu kullanan herkesin, kodu dağıtırken veya satarken kodunu tüm kullanıcılara bırakması beklenir. Richard Stallman'ın açıkça ve temiz bir şekilde oluşturmak istediği GPL virüsü.

LGPL başlangıçta viral olmayacak bir “kütüphane” ye izin vermeye çalıştı. Ancak yine de son kullanıcının kütüphaneyi kendi başlarına değiştirebilmelerini istediler, bu nedenle "statik" ve "dinamik" bağlantı arasındaki fark - kullanıcı farklı bir dinamik olarak bağlanmış kütüphaneye geçebiliyordu, bu yüzden buna gerek kalmayacaktı. GPL lisansına sahip olmak. Ve statik bir bağlantı kullanıcının GPL olmasını gerektiriyordu. Lisans, C / C ++ dilinde açık olan ancak Java, Python, Javascript, vb. Dünyalarda olduğunuzda açıkça belli olmayan "başlık dosyaları" hakkında konuşuyor. Yani LGPL'nin L ("kütüphane") işte en iyisi çamurlu.

Bu meselenin zorluğuna ulaşıyor. Belirsiz olan her şey yasalar dünyasında kötüdür. GPL veya LGPL bileşenini kullanarak bir şeyler inşa etmek istiyorsam, mahkemeye çıkarsam gelecekteki yasal duruşumun ne olduğundan emin olmak istiyorum. Ancak bugün itibariyle emin değilim çünkü yasal emsal teşkil eden iyi mahkeme davaları olmadı, ancak böyle forumlarda entelektüel tartışmalar oldu.

Classpath İstisnasının paha biçilmez olduğu yer burasıdır. Lisansın altındaki kodun (L) GPL olduğunu açıkça belirtir, ancak bu kodu kullanan herhangi bir şey, istedikleri lisansı izleyebilir. Hiç bahane istemiyorum. Çekirdek kodunu değiştirirseniz (örneğin, hataları gidermek), bu değişiklikleri GPL'nin bir parçası olarak bırakmanız gerekir. Ancak kullanmak sizi etkilemez.

İş açısından bakıldığında, neden bazılarının GPL koduna 10'luk bir kutupla dokunmak istemediklerini anlıyorum. Yasal duruş belirsizdir ve yasal emsal nihayet belirlendiğinde işler yoldan on yıl sürebilir. Veya yasal emsal teşkil etmek için mücadele ederek yıllarca mahkemeye sıkışıp kalabilirler. Yine de onlar sadece bu savaşın maliyetini riske atmak istemiyorlar. Classpath Exception fıkra hükmünün eklenmesi yasal soruları ortadan kaldırır ve (ciddi) olası bir davadan kaçınır.

Bu yüzden, bana göre Classpath İstisnaları LGPL'den çok farklı. GPL veya LGPL kaynak kodunun veya kütüphanelerin GPL dışı kullanımına izin veren parlak bir çizgi çizmek yasal olarak temiz bir yoldur.


21
IANAL, ama Classpath İstisna'nın yaratıcılarından biriyim ve bu doğru cevap. İstisna, geliştiricilerin statik olarak ikilileri bağlayacakları AOT derlemeli gömülü kullanım durumlarını desteklemek için yaratıldı (bizim durumumuzda gcj ile). Libgcc lisansı gibi bir şeye ihtiyacımız vardı, ben de buna göre Classpath İstisna'nın ilk versiyonunu yazdım. O zamandan beri olgunlaştı, ama ruh aynı.
Anthony Green,

6

Sınıf yolu istisnasına sahip GPL, çoğu kullanım için LGPL gibi davranır.

Bu talep üzerine kütüphanenin kaynağını gönderebilmeniz gerektiği anlamına gelir. Bu, kendi kaynağınızı gönderebilmeniz gerektiği anlamına gelmez. Bu, statik olarak bağlantı kurarsanız kütüphaneyi değiştirmenin bir yolunu göndermeniz gerekmediği anlamına gelir ancak değiştirmeyi önlemek için ortak bir anahtar kullanamazsınız.


-3

"Sınıf yolu istisnasına sahip GPL" stili lisansları, LGPL'den daha eski olabilir.

Belki de birisinin hala onu kullanmasının tek nedeni, GPL kodunun, kod katkıda bulunan herkesin yazılı izni olmadan LGPL koduna geçirilememesidir.


7
LGPL'nin ilk sürümü 1991'de piyasaya sürüldü, böylece Java'nın önü açıldı. en.wikipedia.org/wiki/LGPL
Thilo

Java’dan önce gelir, ancak Java’nın içindeki tüm kodu tarihlendirir mi? Belki de ilk Java sürümü, bazı eski "sınıf yolu ile GPL" projesinin kodunu içeriyordu.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.