Dalam pemahaman saya, GPL melarang tautan statis dari kode non-GPL ke kode GPL, tetapi mengizinkan tautan dinamis dari kode non-GPL ke kode GPL. Jadi yang mana ketika kode tersebut tidak terhubung sama sekali karena kode tersebut ditulis dalam bahasa yang ditafsirkan (misalnya Perl)?
Tampaknya akan terlalu mudah untuk mengeksploitasi aturan jika dianggap sebagai tautan dinamis, tetapi di sisi lain, juga tampaknya tidak mungkin untuk secara legal merujuk kode GPL dari kode non-GPL jika dianggap statis! Bahasa yang dikompilasi setidaknya memiliki perbedaan antara tautan statis dan dinamis, tetapi ketika semua "tautan" hanya menjalankan skrip, mustahil untuk mengetahui maksudnya tanpa lisensi eksplisit!
Atau apakah pemahaman saya tentang masalah ini salah, menjadikan pertanyaan bisa diperdebatkan? Saya juga pernah mendengar "pengecualian classpath" yang melibatkan tautan dinamis; bukankah itu bagian dari GPL melainkan sesuatu yang dapat ditambahkan padanya, jadi penautan dinamis hanya diperbolehkan ketika lisensi menyertakan pengecualian ini?
Jawaban:
Adapun pertanyaan spesifik tentang bahasa yang ditafsirkan, FAQ GPL sangat jelas :
Adapun pertanyaan umum tentang menghubungkan dinamis vs statis. Pertama-tama, pandangan FSF dan Stallman adalah bahwa tidak masalah jika tautannya statis atau dinamis, GPL menginfeksi dengan cara apa pun. Dari FAQ GPL FSF:
dan
Namun, ini dipertanyakan dari sudut pandang hukum. Dalam satu-satunya kasus yang benar-benar pergi ke pengadilan tentang tautan dinamis - Galoob v. Nintendo - Pengadilan Banding memutuskan bahwa karya turunan "harus memasukkan sebagian dari karya berhak cipta dalam beberapa bentuk" . Yang tidak demikian halnya dengan tautan dinamis.
Pokoknya terlepas dari apakah tautan dinamis memang menginfeksi atau tidak, masih ada jalan keluar. Ini digunakan misalnya oleh Nvidia untuk menyediakan driver biner untuk Linux. Anda membuat (L) pembungkus GPL, tetapi sebagai penulis Anda diizinkan menambahkan pengecualian khusus untuk menautkan dengan sumber tertutup tertentu. Vide FSF GPL FAQ .
sumber
Foo()
terhubung secara statis dengan panggilan JoeBar()
, kepada pemegang hak cipta manaCALL
instruksi di antara mereka dikaitkan? Interaksi seperti itu akan cukup untuk membentuk "karya turunan". Namun, jika pekerjaan Joe tetap sepenuhnya dalam satu file dan Bob tetap sepenuhnya dalam yang lain, hanya tampilan file-file itu di direktori yang berbeda pada disk yang sama merupakan agregasi, bukan derivasi.Catatan: ini pertanyaan hukum. Programmers.SE bukan forum hukum, ini adalah forum pemrograman. Sementara orang-orang di sini tahu sedikit tentang pemrograman, mereka tidak tahu apa-apa tentang hukum. Jika Anda ingin mengajukan pertanyaan hukum, Anda harus menanyakannya di forum hukum, di mana ada orang yang benar-benar mengetahui sesuatu tentang masalah tersebut.
GPL tidak mengatakan apa pun tentang tautan statis atau dinamis. Bahkan tidak mengatakan apa pun tentang menghubungkan sama sekali . Setiap pengacara atau hakim yang saya ajak bicara mengatakan bahwa masalah tautan statis dan dinamis sama sekali tidak relevan.
Hak cipta adalah tentang kreativitas. Penghubungan statis vs dinamis adalah detail implementasi teknis. Apakah sesuatu terhubung secara statis atau dinamis bukanlah tindakan kreatif, itu tidak mungkin mengubah status hak cipta suatu karya.
Dalam pertanyaan Anda, Anda berbicara tentang "bahasa yang ditafsirkan". Tetapi istilah itu tidak masuk akal: tidak ada yang namanya bahasa yang ditafsirkan. Bahasa adalah seperangkat aturan dan batasan matematika yang abstrak. Bahasa tidak ditafsirkan atau dikompilasi. Bahasa apa adanya . Istilah "bahasa yang ditafsirkan" tidak hanya salah , tetapi juga tidak masuk akal . Jika bahasa Inggris adalah bahasa yang diketik, itu akan menjadi kesalahan ketik.
Interpretasi dan kompilasi adalah sifat dari penafsir atau kompiler (duh!), Bukan bahasa. Setiap bahasa dapat diimplementasikan dengan penerjemah, dan setiap bahasa dapat diimplementasikan dengan kompiler. Sebagian besar bahasa memiliki keduanya. Sebagian besar implementasi bahasa modern bahkan menggabungkan keduanya dalam satu mesin eksekusi.
Implementasi Rubinius Ruby, misalnya, berisi kompiler statis terdepan yang mengkompilasi kode Ruby ke kode byte Rubinius, seorang juru bahasa yang menginterpretasikan kode byte Rubinius, dan kompilator just-in-time dinamis yang mengkompilasi kode byte Rubinius ke LLVM IR, yang infrastruktur LLVM pada gilirannya mengkompilasi ke kode mesin asli. Implementasi Ruby MacRuby sama sekali tidak mengandung juru bahasa, ia mengkompilasi kode Ruby langsung ke LLVM IR, kemudian lebih jauh ke kode mesin asli.
Di sisi lain, ada juru bahasa untuk C atau C ++.
Semua ini hanyalah detail teknis. Ini sama sekali tidak relevan dengan hak cipta.
Tidak masuk akal bahwa seseorang melanggar hak cipta orang lain atau tidak tergantung pada apakah orang ketiga memilih untuk menjalankan program dengan penerjemah atau mengkompilasinya terlebih dahulu.
Pertanyaannya adalah apakah suatu karya berasal dari karya lain. Ini dapat dihubungkan secara dinamis dan masih diturunkan, dan dapat dihubungkan secara statis dan tidak diturunkan sama sekali.
sumber
Tidak tahu berapa banyak kebenaran dalam hal ini, dan IANAL, dll .; tetapi dalam interpretasi saya, yang penting adalah apakah perpustakaan yang Anda tautkan melawannya ada dalam beberapa bentuk yang termasuk dalam "biner" (di mana "biner", dalam hal bahasa pemrograman dinamis, hanyalah kode sumber yang didistribusikan; ini adalah apa yang saya dapatkan dari definisi FSF tentang "biner" dalam konteks ini).
Jadi jika Anda mereferensi pustaka dari kode Anda tanpa memasukkannya dalam distribusi Anda, saya akan menganggap ini setara dengan "penghubung dinamis", sedangkan jika Anda menggabungkan pustaka dengan produk Anda, atau menyalin-tempel bagian pustaka ke dalam kode Anda sendiri, skenario "tautan statis" akan berlaku. Paling tidak, ini sesuai dengan semangat GPL: Anda dapat dengan bebas menggunakan (menjalankan, memeriksa, referensi) perangkat lunak GPL tanpa batasan, tetapi segera setelah Anda mendapatkannya , dengan menghubungkan atau menyalin bagian-bagiannya ke dalam perangkat Anda. memiliki produk yang dapat didistribusikan), ia menyebar, dan perangkat lunak Anda juga harus GPL.
sumber