GPL statik ve dinamik bağlantı kuralı, yorumlanan diller için nasıl uygulanır?


19

Anladığım kadarıyla, GPL, GPL olmayan koddan GPL koduna statik bağlantı yapılmasını yasaklar, ancak GPL olmayan koddan GPL koduna dinamik bağlantıya izin verir. Peki, kod yorumlanmış bir dilde (örn. Perl) yazıldığı için söz konusu kod hiç bağlantılı olmadığında hangisi?

Dinamik bağlantı olarak kabul edilirse kuralı kullanmak çok kolay görünebilir, ancak diğer yandan, statik olarak kabul edilirse, GPL kodundan GPL koduna yasal olarak başvurmak imkansız gibi görünebilir! Derlenmiş diller en azından statik ve dinamik bağlantı arasında bir ayırım yapar, ancak tüm "bağlantı" sadece komut dosyaları çalıştırıyorsa, açık bir lisans olmadan amacın ne olduğunu söylemek mümkün değildir!

Yoksa bu konuyu anlamam yanlış mıdır? Ayrıca dinamik bağlantı içeren bir "sınıf yolu istisnası" duydum; bu GPL'nin bir parçası değil, ona eklenebilecek bir şey mi, bu nedenle dinamik bağlantıya yalnızca lisans bu istisnayı içerdiğinde izin verilir?



2
@delnan lgpl! = gpl
Johann

Yanıtlar:


16

Yorumlanan dillerle ilgili özel soruya gelince, GPL SSS çok açıktır :

Yorumlanan program, tercümana göre sadece veridir; telif hakkı yasalarına dayanan GPL gibi ücretsiz bir yazılım lisansı, yorumlayıcıyı kullandığınız verileri sınırlayamaz. İstediğiniz şekilde herhangi bir veri (yorumlanmış program) üzerinde çalıştırabilirsiniz ve bu verileri kimseye lisanslamak için herhangi bir gereklilik yoktur.

Dinamik ve statik bağlantı hakkında genel soruya gelince. Her şeyden önce, FSF'ler ve Stallman'ın görüşü, bağlamanın statik mi yoksa dinamik mi olduğu önemli değil, GPL her iki şekilde de bulaşıyor. FSF GPL SSS bölümünden:

Program , eklentileri dinamik olarak bağlar ve birbirlerine işlev çağrıları yapar ve veri yapılarını paylaşırsa, hem ana programın hem de eklentilerin bir uzantısı olarak ele alınması gereken tek bir program oluşturduklarına inanıyoruz. Bu, GPL kapsamındaki eklentinin ücretsiz olmayan ana programla kombinasyonunun GPL'yi ihlal edeceği anlamına gelir.

ve

[Programınızın adını] diğer modüllerle statik veya dinamik olarak bağlamak, [programınızın adı] 'na dayalı birleşik bir çalışma yapıyor. Böylece, GNU Genel Kamu Lisansının hüküm ve koşulları tüm kombinasyonu kapsar

Ancak bu yasal açıdan tartışmalıdır. Dinamik bağlantı konusunda mahkemeye giden tek davada - Galoob / Nintendo - Temyiz Mahkemesi, türev çalışmaların "telif hakkıyla korunan eserin bir kısmını bir şekilde içermesi gerektiğine" karar verdi . Dinamik bağlantıda durum böyle değil.

Her neyse, dinamik bağlantının gerçekten bulaşıp bulaşmadığına bakılmaksızın, etrafta bir çalışma var. Örneğin Nvidia tarafından Linux için ikili sürücüler sağlamak için kullanılır. (L) GPL sarmalayıcısı oluşturursunuz, ancak yazar olarak belirli kapalı kaynaklarla bağlantı oluşturmak için özel bir istisna eklemenize izin verilir. Vide FSF GPL SSS .


Türev bir çalışmanın doğasından biri, orijinal telif hakkı sahibinin çalışmasını temiz bir şekilde ayırmanın mümkün olmamasıdır. Bob Eğer Foo()statik Joe'nun aramaya bağlantılıdır Bar(), hangi telif hakkı sahibi için gereken CALLaralarındaki talimat atfedilebilir? Böyle bir etkileşim bir "türev çalışma" oluşturmak için yeterli olacaktır. Bununla birlikte, Joe'nun çalışması tamamen bir dosyada kalırsa ve Bob'un tamamen başka bir dosyada kalırsa, bu dosyaların aynı diskteki farklı dizinlerde görünmesi türetme değil toplama oluşturur.
supercat

2
@thepaul: Zaten telif hakkıyla korunan çalışmanın en azından bir kısmının türev işi oluşturmak için bir çalışmaya dahil edilmesi gerektiğini belirten yasal bir öncelik vardır. Stallman'ın inançlarının gerçek hukukta çoğu zaman çok az temeli vardır.
vartec

1
@ thepaul: bir tarafta 9 milyar dolarlık şirket tarafından, diğer iddialarda ise folyo folyo giymeyi sevenlerin yasal uygulamaları var. Sonrakinin daha güvenilir olduğunu iddia edersiniz ve tamamen buna inanma hakkınız vardır.
vartec

1
GPL SSS'nin yanlış kısmının çok açık olduğunu belirtiyorsunuz . Alıntı yaptığınız bölüm , GPL altında bir programlama dili tercümanı yayınlanıyorsa, bu program tarafından yorumlanması için yazılan programların GPL uyumlu lisanslar altında olması gerektiği anlamına mı geliyor? ! Dolayısıyla [GPL lisanslı] tercümana . İlgili bölüm son 2 paragraftır: [...] Benzer ve çok yaygın olan bir diğer durum, kütüphanelere, kendileri yorumlanan tercüman sağlamaktır. Örneğin, Perl birçok Perl modülü ile geliyor [...]
Chris Wesseling

1
«Yorumlanan program, tercümana göre sadece veridir; telif hakkı yasalarına dayanan GPL gibi ücretsiz bir yazılım lisansı, yorumlayıcıyı kullandığınız verileri sınırlayamaz. İstediğiniz şekilde herhangi bir veri (yorumlanmış program) üzerinde çalıştırabilirsiniz ve bu verileri kimseye lisanslamak için herhangi bir gereklilik yoktur. »Bu, bir GPL tercümanı bile herhangi bir lisansta program çalıştırmakla ilgili değil mi? Bu, bir GPL programında yorumlanmamış bir dilde libre olmayan bir eklenti kullanma konusunu kapsamaz.
tuxayo

4

Not: Bu yasal bir sorudur. SE yasal bir forum değil, bir programlama forumudur. Buradaki insanlar programlama hakkında biraz bilgi sahibi olsalar da, yasa hakkında hiçbir şey bilmiyorlar. Yasal bir soru sormak istiyorsanız, konu hakkında gerçekten bir şeyler bilen kişilerin bulunduğu yasal bir forumda bunu sormalısınız.


GPL statik veya dinamik bağlantı hakkında hiçbir şey söylemez. Hatta bağlama hakkında hiçbir şey söylemez hiç . Konuştuğum her avukat veya yargıç, statik ve dinamik bağlantı sorununun tamamen alakasız olduğunu söylüyor.

Telif hakkı yaratıcılıkla ilgilidir. Statik ve dinamik bağlantı teknik uygulama detayıdır. Bir şeyin statik veya dinamik olarak bağlantılı olup olmadığı yaratıcı bir eylem değildir, muhtemelen bir eserin telif hakkı durumunu değiştiremez.

Sorunuzda "yorumlanmış diller" den bahsediyorsunuz. Fakat bu terim bir anlam ifade etmiyor: Yorumlanmış bir dil diye bir şey yok. Dil, soyut bir matematiksel kurallar ve kısıtlamalar kümesidir. Bir dil yorumlanmaz veya derlenmez. Bir dil sadece olduğunu . "Yorumlanan dil" terimi sadece yanlış değil aynı zamanda duyusal değildir . İngilizce yazılmış bir dil olsaydı, bir tür hatası olurdu.

Yorumlama ve derleme, dilin değil, tercümanın veya derleyicinin (duh!) Özellikleridir. Her dil bir tercüman ile uygulanabilir ve her dil bir derleyici ile uygulanabilir. Çoğu dilde her ikisi de vardır. Modern dil uygulamalarının çoğu, her ikisini de tek bir yürütme motorunda birleştirir.

Örneğin, Rubinius Ruby Uygulaması, Ruby kodunu Rubinius bayt koduna derleyen statik bir vaktinden önce derleyici, Rubinius bayt kodunu yorumlayan bir yorumlayıcı ve Rubinius bayt kodunu LLVM ile derleyen dinamik bir tam zamanında derleyici içerir. LLVM altyapısının yerel makine koduyla derlendiği IR. MacRuby Ruby Uygulaması hiçbir yorumlayıcı içermez, Ruby kodunu doğrudan LLVM IR'ye, sonra da yerel makine koduna derler.

Öte yandan, C veya C ++ için tercümanlar vardır.

Bütün bunlar sadece teknik detaylar. Telif hakkı ile tamamen ilgisizdir.

Birisinin başkasının telif hakkını ihlal edip etmediğinin, üçüncü bir kişinin programı bir tercümanla çalıştırmayı veya derlemeyi seçip seçmemesine bağlı olması mantıklı değildir.

Soru, bir işin başka bir işten türetilmiş olup olmadığıdır. Dinamik olarak bağlanabilir ve yine de türetilebilir ve statik olarak bağlanabilir ve hiç türetilemez.


Yorumlanmış "ara kod" dilleri ne olacak? GPL'nin arkasındaki prensiplerden biri, programı orijinaliyle aynı dil araçlarına sahip herhangi bir makul makineye herkesin uyarlayabilmesidir. Birisi bir ara-kod yorumlayıcısı için kaynak kodunu ve birlikte çalıştırabileceği bir grup ara-form kodunu serbest bırakırsa, o ara-kod blobuyla ilgili bilgileri serbest bırakmak için kurallar ne olur? Makineye özgü derlenmiş yürütülebilir dosyalardan farklı olarak, ara kod blob'u tamamen taşınabilir olacaktır.
supercat

Afedersiniz; Stackoverflow.com üzerinde soracaktı ve ben "gpl" etiketini kullandığınızda bunun yerine burada sormak önerdi! Bu tür bir tartışma burada da yasaklandı mı? exec ("killall -9 avukat"); : D
ekolis

Ve evet, bir uygulama detayının yeniden kullanımın yasal statüsü üzerinde hiçbir etkisi olmaması mantıklı değil; Sadece böyle bir ayrım olduğunu düşündüm ve açıklama istiyordum!
ekolis

2
@ekolis: Aslında yasak değil. İnsanlar varken O, o (örneğin programcılar gibi) yasal sorunlar hakkında hiçbir şey bilmeyen insanlar yasal soru sormak için iyi bir fikir değil bu sadece var bunun yerine sorabilirsiniz (avukatlar aka) yasal konular hakkında biliyorum. Avukatlara karşı hiçbir şeyim yok, tam tersi. Ancak algoritma tavsiyesinden birini istemem ve bir programcıdan yasal tavsiye istemem.
Jörg W Mittag

IANAL: Teknik bir ayrıntı olabilir, ancak yine de büyük bir fark yaratır, çünkü dağıtılanları yasal olarak önemli bir şekilde değiştirir. Statik bağlantı ile, GPL kurallarına göre GPL'nin dışına dağıtılamayan birleşik bir çalışma oluşturuyorsunuz. Dinamik bağlantı ile, örneğin kütüphaneleri yazılımınızla birlikte bir ZIP dosyasında paketlerseniz, bunu da yapıyor olabilirsiniz. Ancak dinamik bağlantı ile, kütüphaneler olmadan dağıtabilirsiniz ve kendi başına işe yaramasa bile işinizin% 100'üdür. Ve elbette, GPL altındaki kütüphaneleri sunabilirsiniz.
flarn2006

0

Bu konuda ne kadar gerçek olduğu hakkında hiçbir fikrim yok ve IANAL, vb .; ama benim yorumumda, önemli olan bağlandığınız kütüphanenin "binary" de yer alıyor olması (dinamik programlama dilleri durumunda "binary" sadece dağıtılan kaynak kodudur; bu bu bağlamda FSF'nin "ikili" tanımından ne yapıyorum).

Bu nedenle, kütüphanelerinizi dağıtımınıza dahil etmeden kodunuzdan referans alırsanız, bunu "dinamik bağlantı" nın eşdeğeri olarak değerlendiririm, oysa kütüphaneleri ürününüzle birlikte paketlerseniz veya kütüphanenin bazı bölümlerini kendi kodunuza yapıştırırsanız, "statik bağlantı" senaryosu geçerlidir. Bu, en azından GPL'nin ruhundadır: GPL'd yazılımını kısıtlama olmaksızın özgürce kullanabilirsiniz (çalıştır, denetleyin, referans verin), ancak ondan türettiğiniz anda (bir kısmını bilgisayarınıza bağlayarak veya kopyalayarak) dağıtılabilir ürün), viral olur ve yazılımınız da GPL'd olmalıdır.

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.