Prototipleme için GPL kütüphanelerini geçici olarak kullanabilir miyim ve gelecekteki kodu kapalı kaynak yapabilir miyim?


23

(En azından başlangıçta) kapalı kaynak olacak bir yazılım sistemi için bir prototip üzerinde çalışıyorum.

Zaman kazanmak için GPLv3 lisansına sahip bir kütüphaneyi kullanmayı (yani statik olarak bağlamayı) düşünüyorum , böylece tasarımımı hızlı bir şekilde test edebiliyorum. Yazılımı bu aşamada dağıtırsam, kaynak kodunu birlikte dağıtmak zorunda kalırdım.

Ya yapmazsam, ancak sistemimin çalıştığını ve sonra da dağıtmadan önce GPL kitaplığını kendi kodumla değiştirirsem kendimi tatmin edersem? Sonuç GPL tarafından "kirlenir" mi?

GPL kitaplığını Git geçmişimde tutmanın ya da fark yaratmayacağına dair bir his var .


16
"GPL tarafından kirlenmiş" ifadesini beğendim.
Arseni Mourzenko

7
lisansın viral doğası ile iyi gidiyor :)
Laurent S

5
Yanlış yaparsam düzelt, ancak aynı anda git halindeyken kodunu barındırırken kapalı kaynaklı bir sistemi serbest bırakmak istiyor musunuz? (ve aksi neden tarihinin GPL lib konusunda endişe gibi bu git, başkaları tarafından okunabilir tahmin?)
user2813274

3
@ user2813274, özel bir Git havuzunuz olabilir.
Arturo Torres Sánchez

Yanıtlar:


20

GPL yazıyor :

Bu koşulların tamamını da yerine getirmeniz şartıyla, Bölüm 4 uyarınca kaynak kodu biçiminde Programa veya Programdan elde edilecek değişikliklere dayalı bir çalışmayı iletebilirsiniz:

Bu nedenle, bu koşul yalnızca çalışmanız, lisansın aşağıdaki şekilde tanımladığı kütüphaneyi "temel alıyorsa" geçerlidir:

Bir eseri “değiştirmek”, eserin tamamını veya bir kısmını, tam bir kopya yapmaktan başka, telif hakkı izni gerektiren bir şekilde kopyalamak veya uyarlamak anlamına gelir. Ortaya çıkan çalışmaya, önceki çalışmanın “değiştirilmiş versiyonu” ya da önceki çalışmaya “dayalı” bir çalışma denir.

Yani, programınız sadece ve sadece telif hakkı yasasına göre türetilmiş bir çalışma olması halinde kütüphaneye dayanır . Bu terimin yasal tanımı, yargı bölgeleri arasında bir miktar değişiklik gösterir ve genellikle doğrudan yazılımı ele almaz. Örneğin, ABD Telif Hakkı Yasası yazıyor:

Bir "türev çalışma", çeviri, müzikal düzenleme, dramatizasyon, kurgulama, sinema filmi versiyonu, ses kaydı, sanat eseri, kısaltma, yoğuşma veya bir eserin olduğu diğer herhangi bir form gibi önceden var olan eserlere dayanan bir çalışmadır. yeniden biçilmiş, dönüştürülmüş veya uyarlanmış olabilir. Editöryal revizyonlardan, ek açıklamalardan, detaylandırmalardan veya bir bütün olarak orijinal bir yazarlık çalışmasını temsil eden diğer değişikliklerden oluşan bir çalışma, “türev çalışma” dır.

Bunun yazılım için ne anlama geldiği, benzer kararlar temelinde mahkemeler tarafından yorumlanmalıdır. Bir mahkemenin davanıza nasıl karar vereceğini kesin olarak söyleyebilmek için, bulunduğunuz bölgedeki ilgili dava yasasına yeterince aşina değilim. Biri "GPL kitaplığını kendi koduyla değiştirmenin", özellikle de kodunuz GPL uygulamasından büyük ölçüde ilham alıyorsa bir çeviri eylemi olduğunu iddia edebilir. GPL kitaplığının API'sini yeniden kullanmak bile sizi sıcak suya indirebilir (bkz. Oracle vs. Google ).

Cevap sizin için önemliyse, yabancılara internette sormak yerine, yetkili yasal tavsiye almanızı öneririm.


1
Tamam, bu ilginç, bir API paylaşmanın bir türev çalışma olarak kabul edilebileceğini bilmiyordum.
Laurent S

Bu cevap, aşağıda cevabımı vermeye çalıştığım noktaya değiniyor, ama çok daha net bir şekilde. +1
Michael Shaw

23

GPL'd kitaplıklarına bağlanırken yazılımı hiç kimseye bırakmadığınız sürece, güvende olursunuz. GPL'in viral yönü sadece yazılımınızı dağıtırsanız devreye girer.

Elbette, LGPL veya APL2 veya MIT gibi daha izin verilen bir lisansa sahip bir kütüphane bulabilirseniz daha iyi olurdu.


Açıkça, izin verilen bir lisansla başka bir kütüphane bulmaya çalışacağım. Ancak, başarısız olursanız, git geçmişinde eski GPL koduna sahip olabilirim ve kodun gelecekteki durumunu dağıtarak koşullarını ihlal etmeyeceğim gibi geliyor.
Laurent S

5
Bu cevap, kütüphanenin yeni versiyonunu uygularken türetilmiş bir eser yaratma riskini göz önünde bulundurmamaktadır.
Michael Shaw

4
@Ptolemy Git geçmişiniz yayınlandıysa, eski sürümü yayımladığınızı unutmayın. Saymak için ikili biçimde olmak zorunda değildir.
piojo

2
@piojo Diğer taraftan, bu eski sürümü GPL lisansına lisanslamanızı (ve bunun için kaynak dağıtmayı) zorunlu kılar; Bir noktada kodun telif hakkı ile kendinizi bulursanız, gelecekteki tüm sürümleri kapalı kaynak yapabilirsiniz (eski sürümler GPL altında kalmaya devam etse de). Eski sürümde ne kadar özel mülk olduğuna bağlı olarak, bir sorununuz olabilir veya olmayabilir.
cpast

1
Laurent S, GPL’nin yanındaki diğer tüm kodların yazarı ve telif hakkı sahibi olduğu sürece, o da güvendedir. O can ve izin sonucun daha sonra bu olabilir ihtimale GPL3 şartları çerçevesinde tüm işleri bırakın. Bu istenmeyen olabilir, ancak OP açıkça her durumda güvenlidir (eğer telif hakkı varsa).
hakre

8

Sorunun aslında GPL ile ilgili olduğunu sanmıyorum. Prototiple ilgili ve gelecekte dağıtılabilir yazılım sisteminin temeli olarak kullanılıp kullanılmayacağı.

Atılabilir bir prototip yapıyorsanız ve teslim sisteminizdeki herhangi bir kodu tekrar kullanmayacaksanız, devam edin ve bir GPL kitaplığı kullanın.

Alabileceğiniz Üç Yaklaşım

Bununla birlikte, prototipi geliştirecekseniz (çok sayıda yönetici için zorlanan bir şey!) Yapabileceğiniz üç yaklaşımınız vardır:

  1. Çekirdek olmayan parçaları, çekirdeğinizle JSON veya bir REST API veya başka bir İşlemler Arası İletişim dili / kütüphanesi üzerinden iletişim kuran ayrı uygulamalara taşıyın. Çekirdek olmayan bölümleriniz de GPL olabilir ve içindeki GPL kütüphanelerini kullanabilirsiniz.
  2. Kodunuzu, kütüphaneleri yerinden çıkarabilecek şekilde tasarlayın. Bu , uygulama ayrıntılarını gizleyen bir cephe oluşturmak anlamına gelir . Özel bir kütüphaneye veya MIT / BSD kütüphanesine geçmeye hazır olduğunuzda.
  3. GPL kodunu hiç kullanmayın.

İlk yaklaşıma geçmenizi öneriyorum çünkü gelecekte profesyonel portföyünüzün bir parçası olarak kullanabileceğiniz açık kaynak kodlu bir çalışmaya sahipsiniz.

İkinci yaklaşım nasıl, çünkü o da iyidir gerektiğini kesin işlevleri oluşturarak, yine sen gerekmez / sınıfları sistemini tasarlama ve onları dışarı stubbing olmak Kitaplık veya özel kod buna sahip kadar bu işlevselliği doldurur.


2
GPL kodunu başka bir işleme koymak, programın artık bir parçası olmadığı ve dolayısıyla geri kalanını lisanslamakla ilgili olmadığı anlamına gelmez. Onları yeterince iyi ayırmaya yardımcı olabilir.
Deduplicator

1
@Deduplicator, yeterli olmayan ayrı uygulamalarsa, ayrı bir kod tabanı olarak değerlendirilmeleri gerekir, haklısınız. Twitter'ın Bootstrap ile yaptığı ve Facebook'un tüm kütüphaneleri ile yaptığı gibi. Çekirdek tescilli kodu olan çekirdek dışı açık kaynak.
Rudolf Olah

@omouse, gömülü yazılım olduğu için 1 yapamam. 2 benim ilk düşüncemdi, ama Ptolemy ve meriton'un ne dediğini görünce, türev çalışmalar yapıyormuşum gibi geliyor, bu yüzden 3 muhtemelen gitmenin yolu.
Laurent S

1
Re: "Sorunuzun aslında GPL ile ilgili olduğunu sanmıyorum": Ben katılmıyorum. Bir yazılım lisansı kesinlikle olabilir kullanımı bu tür yasaklar. Sorunun "GPL" kısmını göz ardı eden ve sadece kısıtlayıcı terimleri ve viral davranışları olan açık kaynak lisansı hakkında genel bir soru olarak kabul eden bir cevap, lisansın şartlarını okumak için ".
ruakh

Eğer bir türev çalışma yaratıp onu atıyorsanız, hala bir türev çalışma yarattınız ve bunu sadece orijinal telif hakkı sahibinin izni / lisansı ile yapabilirsiniz. GPL ile bu lisansa sahipsiniz (türev çalışmasını atmadan önce asla dağıtmazsanız). Diğer lisansla, izniniz olmayabilir. Sizi tazminattan dava etmek zor olabilir.
gnasher729

5

Yaklaşımınızla ilgili olarak iki hususu düşünebilirim. Birincisi , GPL altında yayınlanan kodu kullanırken , projenizi dağıtmama veya (veya GPLv3 olduğu gibi , halka açık kullanım için uygun hale getirerek) basittir; kodunuzu nasıl dağıtmanız gerektiğini görmek zordur. GPL lisansı altında da yeniden dağıtım şartları altında.

İkinci yön muhtemelen sizin için daha önemli. GPL kitaplığını değiştirmek için kendi uygulamanızı oluştururken, bir türev çalışma oluşturmamaya dikkat etmeniz gerekir. Kaynak kodunu doğrudan kopyalamama konusunda iyi niyetlerinizin olduğundan emin olduğumdan emin olsanız da, kütüphane API'sinin önemli bölümlerini kopyalamayacaksınız.

Eğer bu ticari bir ürün ise, bu riskin GPLv3 lisansı ile dikkatlice okunması ve şüpheli olduğu durumlarda profesyonel bir yasal görüş istemek suretiyle değerlendirilmesi ve değerlendirilmesi gerekir.


4

GPL kodunu değiştirmek için kendi kodunuzu yazmayı planlıyorsanız, kodu temiz oda ortamına yazmadığınız için olası bir sorun yaşayacaksınız. Gerçekten GPL koduna hiç bakmamış birisinin yeni kütüphaneyi yazmasını istersiniz. Öte yandan, başka bir lisansa sahip olan daha önce yayınlanmış bir kitaplık için bir GPL kitaplığını değiştirmek istiyorsanız, o zaman bu bir sorun değildir, diğer kitaplık muhtemelen temiz oda ortamında yazılmıştır.


2

GPL'd kodunu kullanarak revizyonlara erişim sağlarsanız, bunlar tamamen GPL'd olacaktır. Ama istemezsin, bu kapalı kaynak olmazdı ...

Artık herhangi bir GPL kodu kullanmayan daha sonraki durumlar için, GPL kodunu daha önce kullanmış olmanız basit değildir.


2

GPL yalnızca dağıtımda tetiklenir ... değiştirilmiş bir sürüm veya türev çalışma yayınlamazsanız, istediğiniz her şeyi yapabilirsiniz.

GPL kitaplığını Git geçmişimde tutmanın ya da fark yaratmayacağına dair bir his var.

Kaynağınızı GitHub gibi bir kamu havuzunda yayınlamak istiyorsanız , o zaman evet, bir sorun olabilir. Sadece git kullanmak özel ise önemsizdir.

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.