GPL, Dart gibi diğer dillere derlenen dillerde nasıl çalışır?


11

Google'ın Dart dili, Dartium olarak bilinen özel bir Chromium derlemesi dışında hiçbir Web Tarayıcısı tarafından desteklenmemektedir. Üretim kodu için Dart'ı kullanmak için, onu bir Dart-> JavaScript derleyicisi / çevirmeni aracılığıyla çalıştırmanız ve ardından çıktısı verilen JavaScript'i web uygulamanızda kullanmanız gerekir.

JavaScript yorumlanmış bir dil olduğundan "ikili" (Aka, .js dosyası) alan herkes kaynak kodunu da almıştır.

Şimdi, GNU Genel Kamu Lisansı v3.0 şunları söylüyor:

"Bir iş için" kaynak kodu ", üzerinde değişiklik yapmak için tercih edilen çalışma biçimi anlamına gelir."

Bu, JavaScript koduna ek olarak orijinal Dart kodunun da son kullanıcıya verilmesi gerektiği anlamına gelir. Bu, kaynak kodun bir kopyası zaten okunabilir / yazılabilir / değiştirilebilir bir biçimde sağlanmış olsa bile, Dart'da yazılmış tüm web uygulamalarının, web sitelerinin tüm ziyaretçilerine orijinal Dart kodunu sağlaması gerektiği anlamına mı geliyor?


3
Gerçekten .js dosyasını "kaynak kodu" olarak adlandırılan değil daha fazla gizli js "kaynak kodu". Elbette, hala yorumlanıyor, ancak hiçbir şekilde kaynak kodu değil. Daha çok bir PHP betiğinin HTML çıktısı gibidir. Ancak lisanslama açısından nasıl çalıştığından emin değilim.
Ben Brocka

"Üretim Kodu" derken, "Üretime" mi demek istediniz? Dahili kullanım için kaynak kodu sürümü gerekmez. Kullandığınız Dart kodu, başkasının GPL (veya diğer) lisanslı koduna mı dayanıyor? Yoksa bunların tümü orijinal kod tarafından mı geliştirildi? Cevap gerçekten bu detaylara bağlı
Paul

1
Bir GPL'd uygulaması çalıştırırsanız, ziyaretçilere kaynak kodu sağlamanız gerekmez. Yalnızca eğer kaynak kodunu sağlamak zorunda dağıtmak uygulama. (AGPL'd olsaydı, o zaman kaynak sağlamanız gerekiyordu: gnu.org/licenses/why-affero-gpl.html )
JCasso

1
Uygulamanın halka açık bir web sever üzerinde çalıştığı varsayılarak, kod her ziyaretçiye "dağıtılmıyor" mu? Tarayıcı tarafından yalnızca çalıştırılmadan önce geçici bir konuma indirilmiş olsa bile.
Peter-W

@ Peter-W Argümanın teknik olduğunu ve kesin olmadığını söyleyebilirim. Tarayıcının javascript'i indirmesi, bir tür uygulama detayıdır; çoğu kullanıcı herhangi bir şeyin "dağıtıldığını" bilmez, ancak çoğu kullanıcı CD almayı veya dosya indirmeyi "dağıtım" olarak kabul eder. Bu durumda, uygulama mekanizması tüm tarayıcıyı açıklığa kavuşturan bir dağıtımdır (tarayıcıya ve geçici). EDIT : ayrıca, bir şekilde bir js kodu "bytecode" bir Dart kodlayıcı açısından, değil mi?
Andres F.Ağustos

Yanıtlar:


9

Evet, kod GPL'nin altındaysa ve çıkan JavaScript'i dağıtıyorsanız, orijinal Dart kodunu da sağlamanız gerekir. Bu genellikle sitenizden kaynak kodunu indirmek için bir bağlantı ile yapılır, ancak bunu bir yoruma veya buna benzer bir şeye gömebilirsiniz.

Bu durumda GPL'ye uymanın en kolay yolunun kaynağı dağıtmak için d seçeneğini kullanmak olduğunu düşünüyorum

d) Belirlenen bir yerden (ücretsiz olarak veya bir ücret karşılığında) erişim sunarak nesne kodunu iletin ve aynı yerde aynı şekilde başka bir ücret ödemeden aynı Kaynakla eşdeğer erişim sağlayın. Alıcıların Karşılık gelen Kaynağı nesne koduyla birlikte kopyalamasına gerek yoktur. Nesne kodunun kopyalanacağı yer bir ağ sunucusuysa, karşılık gelen kaynak, nerede veya nerede olduğunu söyleyen nesne kodunun yanında açık yönler sağlamanız koşuluyla, eşdeğer kopyalama olanaklarını destekleyen farklı bir sunucuda (siz veya üçüncü bir tarafça çalıştırılır) olabilir. İlgili Kaynağı bulun. Hangi sunucunun karşılık gelen kaynağı barındırdığından bağımsız olarak, bu gereksinimleri karşılamak için gereken süre boyunca kullanılabilir olmasını sağlamakla yükümlüsünüz.

Esas olarak bunu JS dosyasını sayfanıza eklediğinizde yaparsınız

<script src="file.js" /><!-- source at http://example.com/path/to/modified/source/file.dart -->

2
Lütfen cevabımı okuyun. GPL hakkındaki Orijinal kaynağın serbest bırakılmasını gerektirmeyen açıklamalara dikkat edin, sadece bu durumda oluşturulur. Bu durumda, GPL dağıtmasını gerektirmez, bu nedenle dağıtım mekanizması önemli değildir. Dediğim gibi, diğer lisansların farklı kuralları vardır.
Paul

1
Bence GCC bir örnek. GCC GPL olduğundan ve bir "kapalı kaynak" programı derlemek için kullandığım için, bu orijinal kaynağı serbest bırakmak gerekir? Aynı şey herhangi bir GPL "derleyici" için geçerli olacağını düşünüyorum
Paul

3
Bu cevap yanlış. Dart kodu GPL altında lisanslanmış olsa bile , uygulamayı dağıtmadığınız sürece Dart kaynak kodunu sağlamanız gerekmez . Bir GPL'd uygulamasını sunucuda çalıştırmak, o uygulama için kaynak kodu verilmesini gerektirmez. Bu yüzden AGPL adında başka bir lisans daha var . Bu özel amaç için.
JCasso

2
@JCasso, bu kod sunucuda çalışıyor olsaydı doğru olurdu, ancak Dart söz konusu olduğunda, sonuçta ortaya çıkan nesne kodu, çoğu durumda istemciye dağıtılan JavaScript'tir. Açıkçası, JavaScript sunucu tarafı çalıştırmak gibi gerçekten garip bir şey yapıyorsanız, dağıtım olarak sayılmaz.
Dirk Holsopple

3
@JCasso, yalnızca sunucu tarafı kodu için geçerlidir. Aynı sayfadan: Drupal'ın içerdiği jQuery kopyası da dahil olmak üzere Drupal'ın JavaScript'i de GPL altındadır, bu nedenle tarayıcıda Drupal'ın JavaScript'i ile etkileşime giren tüm Javascriptlerin de GPL veya GPL uyumlu bir lisans altında olması gerekir.
Dirk Holsopple

2

Öncelikle AGPL'den değil GPL'den bahsediyoruz.

Eğer varsa dağıtmak yok uygulama GPL lisanslı bir sunucu üzerinde çalıştırırsanız, kaynak kodunu sağlamak gerekmez . Bunun için AGPL var. GPL tamamen dağıtım ile ilgilidir.

Drupal SSS'den:

Web sitemin kodunu ziyaret eden herkese vermek zorunda mıyım?

Hayır. GPL, bir web sitesini "dağıtma" olarak saymak için görüntülemeyi düşünmediğinden, sunucunuzda çalışan kodu paylaşmanız gerekmez. Http://drupal.org/licensing/faq/#q6

Drupal'ın GPL altında lisanslandığını ve js dosyaları içerdiğini lütfen unutmayın (çok).

GNU'dan:

GNU Affero GPL'nin amacı, sunucularda sıklıkla kullanılan ücretsiz program geliştiricilerini etkileyen bir sorunu önlemektir.

Sıradan GNU GPL kapsamında ücretsiz bir program geliştirdiğinizi ve yayınladığınızı varsayalım. D geliştiricisi programı değiştirir ve yayınlarsa GPL, sürümünü GPL altında da dağıtmasını ister. Bu nedenle, sürümünün bir kopyasını alırsanız, değişikliklerinin bir kısmını veya tamamını kendi sürümünüze dahil etmekte özgürsünüz.

Ancak programın çoğunlukla sunucularda yararlı olduğunu varsayalım. D programı değiştirdiğinde, büyük olasılıkla programı kendi sunucusunda çalıştırabilir ve hiçbir zaman kopya çıkarmayabilir. O zaman asla sürümünün kaynak kodunun bir kopyasını alamazsınız, bu yüzden değişikliklerini sürümünüze dahil etme şansınız olmaz. Bu sonucu beğenmeyebilirsiniz.

GNU Affero GPL kullanmak bu sonucu önler. D sürümünü herkesin kullanabileceği bir sunucuda çalıştırıyorsa, siz de kullanabilirsiniz. Sunucu kullanıcılarının sürümünün kaynak kodunu indirmesine izin vermek için lisans gereksinimini izlediğini varsayarsak, bunu yapabilir ve daha sonra değişikliklerini sürümünüze dahil edebilirsiniz. (Eğer onu takip etmediyse, avukatınızın ona şikayet etmesini sağlayın.) Kaynak: http://www.gnu.org/licenses/why-affero-gpl.html


2
Ancak bunun Javascript'e derlendiği ve daha sonra cilent'teki gibi yürütüldüğü Dart olduğunu görmek geçerli midir?
Winston Ewert

1
GPL bu konuda net. Size bir ubuntu cd verirseniz, size kaynak kodu almak için bir yol sağlamalıdır. Eğer bir dosya sunucusuna ubuntu.iso koyarsanız ben de bir indirme linki (ya da böyle bir şey) sağlamalıdır. Buna dağıtım denir. Dağıtırsanız kaynak kodunu sağlamanız gerekir. Ancak bir çevrimiçi uygulamaya (sunucuda) sahip olmak asla "dağıtım" olarak sayılmaz.
JCasso

3
önemli olan, kodun sunucuda değil tarayıcıda çalışmasıdır. Yanıtınız yalnızca sunucuda çalışan koda baktığımızda anlamlıdır. Ama değiliz. İstemci bilgisayarlarda çalışan koda bakıyoruz. Kod sunucuda yürütülmüş olsaydı, haklısınız, dağıtım değil. Ancak kod tarayıcı tarafından indirilip çalıştırıldığı için dağıtımdır ve cevabınız saygısızdır.
Winston Ewert

2
Aslında, hangi CPU'nun onu işlediğinin önemli olduğunu düşünüyorum. Kodunuzu CPU'mda çalıştırırsam, zorunlu olarak, kodunuzu bana dağıtırsınız. Tüm niyetler ve amaçlar için, bir programı indirip çalıştırdığım gibi. Soru daha önce tartışıldı: stackoverflow.com/questions/1239470/… , programmers.stackexchange.com/questions/62869/… .
Winston Ewert

2
Ayrıca, bağlandığınız AGPL sayfasına bakın. İstemciler üzerinde yürütülen kodu değil, sunucular üzerinde yürütülen kodu açıkça tartışır. Yazar, GPL'nin javascript yürütme kodunuz için geçerli olmadığını düşünürse, tartışmasında bundan bahsederdi.
Winston Ewert

1

Genel olarak, gerçekten lisansa bağlıdır. Sizin durumunuzda, Dart BSD olduğundan kötü bir örnek ve GNU 3.0 sizin bahsettiğiniz vakayı kapsıyor gibi görünüyor. Avukat olmayan biri olarak bu alıntıyı "Oluşturulan kod özel olarak ele alınmıyor" şeklinde yorumluyorum

Dart Ana Sayfa Bunu ifade eder: BSD Lisansı

Yani GPL tartışmalı

Ayrıca: GNU 3.0 Lisansı

Programımın kullanımından insanların çıktısını alabilmem için bir yol var mı? Örneğin, programım donanım tasarımları geliştirmek için kullanılıyorsa, bu tasarımların ücretsiz olmasını gerektirebilir miyim? (#GPLOutput)

Genel olarak bu yasal olarak imkansızdır; telif hakkı yasası, insanların programınızdan yararlanarak verilerinden yaptıkları çıktıların kullanımında herhangi bir söz vermez. Kullanıcı kendi verilerini girmek veya dönüştürmek için programınızı kullanırsa, çıktıdaki telif hakkı size aittir, size değil. Daha genel olarak, bir program girdisini başka bir forma çevirdiğinde,> çıktının telif hakkı durumu üretildiği girdinin mirasını alır.

Bu nedenle, çıktı kullanımında söz sahibi olmanın tek yolu, çıktının önemli kısımlarının programınızdaki metinden kopyalanması (az ya da çok). Örneğin, bu özel durumda bir istisna yapmamış olsaydık, Bison çıktısının bir kısmı (yukarıya bakınız) GNU GPL tarafından karşılanacaktır.

Herhangi bir teknik neden olmasa bile, bir programın belirli metni çıktısına kopyalamasını yapay olarak yapabilirsiniz. Ancak, kopyalanan metin pratik bir amaca hizmet etmezse, kullanıcı bu metni çıktıdan silebilir ve yalnızca geri kalanını kullanabilir. Ardından, kopyalanan metnin yeniden dağıtılmasına ilişkin koşullara uymak zorunda kalmaz.


3
Soru, BTB'nin (BTW'nin program (derleyici) çıktısı ile ilgisi olmayacak) olan bir Dart derleyicisi değil, GPL'li bir Dart programı hakkındadır.

2
@delnan Soruyu senin gibi okumadım. 1) İlk bağlantımı gör, Dart BSD. 2) Dara programı GPL olsaydı soruyu sormazdı. Dart kaynak kodunu da yayınlaması gerekip gerekmediğini bilmek istediği için soruyu okudum. Cevabımı gerçekten okudun mu?
Paul

2
Eh, böyle okuyan tek kişi sizsiniz. OP, söz konusu Dart programının GPL olduğunu açıkça belirtmese de, Dart derleyicisinin GPL olduğunu varsayarken hiçbir şey ima etmez, bu yüzden çok az araştırma yaptığını varsaymaya istekli değilim.

Maalesef bunu uzatın ... Peki ya Dart programı GPL değilse ve Dart BSD değilse (gerçekten, ya da en azından site öyle diyorsa), o zaman soru nedir? "B'yi (GPL değil) serbest bırakmak istediğimde A'yı (GPL'd) dağıtmam gerekiyor mu?" Sorusuyla ilgili, yinelenen bir soru
Paul

2
@Paul Benim varsayımım ve diğer herkesin varsayımı, Dart programının aslında GPL'd.

0

Temel soru şudur:

Web sayfasına javascript eklemek (örn. Bir komut dosyası etiketi aracılığıyla referans vermek) GPLed çalışmasını "Taşıma" olarak sayıyor mu?

Varsa, kodu değiştirmek için kaynağı tercih ettiğiniz biçimde kullanılabilir hale getirmelisiniz, eğer yapmazsanız. Bu durumda tercih edilen form, javascript oluşturmak için kullanılan orijinal Dart kaynak kodudur.

FSF sitesinde bu soruya açık bir cevap bulamıyorum ama Stallman'ın makalesi "Javascript Trap" bunu Taşıma olduğunu düşündüğünü gösteriyor gibi görünüyor ve bu nedenle orijinal Dart kaynak kodunu kullanılabilir yapmak zorunda kalacaksınız. Lisans metnini içermeyen ancak yine de lisans kapsamında olan küçültülmüş sürümlere izin verme hakkındaki notuna bakın.

Şablonların GPL olmadan javascript kullanmasına izin verecek bir istisna için javascript ve şablonlarla ilgili bu SSS'ye de bakın .

Yapmak istediğiniz şeyin lisansla uyumlu olup olmadığını bilmenin en iyi yolu, kodun Telif Hakkı sahibine sormaktır, çünkü yalnızca lisansı uygulama hakkı vardır. Lisansı farklı şekilde yorumlamış olabilirler ve yorumlarını açık hale getirmek için bir istisna eklemeye istekli olabilirler.


Aslında soru bu değil. Soruyu dikkatlice okursanız, OP, javascript'i dağıtmanız gerektiğini varsayar. Sadece bu soruda bu yorumu sorgulayan diğerleri. Soru, Dart kodunu da dağıtması gerekip gerekmediğidir.
Winston Ewert

@WinstonEwert "Kaynak kodu" dediğimde, javascript oluşturmak için kullanılan orijinal Dart kaynak dosyalarını kastediyorum. Bunu netleştirmek için cevabımı güncelleyeceğim.
Craig
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.