Hindari pelanggaran GPL dengan memindahkan perpustakaan keluar dari proses


21

Asumsikan ada perpustakaan yang dilisensikan di bawah GPL. Saya ingin menggunakannya adalah proyek sumber tertutup. Saya mengikuti:

  1. Buat aplikasi pembungkus kecil di sekitar perpustakaan GPL yang mendengarkan soket, parsing pesan, dan panggil perpustakaan GPL. Kemudian hasil kembali.
  2. Lepaskan sumbernya (untuk mematuhi GPL)
  3. Buat klien untuk pembungkus ini di aplikasi utama saya dan jangan merilis sumber.

Saya tahu bahwa ini menambah overhead yang besar dibandingkan dengan penghubung statis / dinamis, tetapi saya tertarik dengan cara teoretis.


6
Pembungkus yang Anda tulis akan dilisensikan di bawah GPL. Oleh karena itu program yang menggunakan pembungkus masih akan tunduk pada ketentuan GPL untuk menautkan, dll.
TZHX

4
mengapa tidak menghubungi penulis terlebih dahulu dan lihat apakah Anda dapat melisensikannya di bawah LGPL atau yang serupa.
jk.

8
@ TZHX Saya percaya maksudnya pembungkus akan menjadi aplikasi terpisah yang bertindak sebagai server - kode miliknya akan berada di klien
jk.

juga siapa yang akan didistribusikan aplikasi sumber tertutup juga? dan versi GPL mana yang merupakan lisensi
jk.

2
@jwenting pertanyaannya dengan jelas mengatakan itu kehabisan proses
jk.

Jawaban:


32

Secara hukum , saya akan mengatakan itu tidak apa-apa (tapi saya bukan pengacara - berkonsultasi dengan pengacara untuk nasihat hukum).

Secara moral , ini cukup tercela. Jika Anda tidak menyukai GPL, maka solusi "yang tepat" adalah tidak menggunakan pustaka GPL.

Sunting : Untuk memperjelas, apa pun kedudukan hukum GPL berkenaan dengan apakah penghubung dinamis diizinkan atau tidak, LGPL secara khusus dibuat dengan maksud untuk memungkinkan penautan dinamis dalam kasus perpustakaan. Jadi tampak jelas bagi saya bahwa dengan memilih GPL di atas LGPL, penulis perpustakaan melakukannya secara eksplisit untuk melarang tautan dinamis. Menggunakan cara teknis untuk mengatasi pembatasan hukum yang menyatakan maksud eksplisit penulis untuk kode-nya adalah apa yang patut dicela, menurut pendapat saya.

Sebagai catatan, saya pribadi bukan penggemar GPL (saya lebih suka lisensi yang lebih permisif seperti MIT atau BSD). Namun, saya penggemar berat menghargai karya pengembang lain, dan jika mereka tidak ingin Anda menautkan perpustakaan mereka dengan perangkat lunak sumber tertutup, maka itu adalah hak prerogatif.


12
Saya tidak berpikir ada masalah moral di sini - GPL tampaknya secara eksplisit mengizinkan kasus penggunaannya
jk.

3
@vartec di sini adalah kutipan dari FAQ GPL resmi: "Menghubungkan secara statis atau dinamis dengan modul-modul lain menghasilkan kerja gabungan berdasarkan. Jadi, syarat dan ketentuan Lisensi Publik Umum GNU mencakup seluruh kombinasi." Jika Stallman memiliki visi berbeda tentang apa itu Open Source, itu tidak berarti ia membencinya. Dia adalah salah satu ideolog utama gerakan ini.
Andrey

8
@ vartec: Saya mendapat kesan bahwa Anda tidak mengerti bahwa, ketika Anda menggunakan kode SESEORANG LAIN dalam aplikasi ANDA, ANDA diharuskan mematuhi persyaratan yang DIA pakai untuk menggunakan kode HIS. Tidak suka itu Jangan gunakan kode GPL orang lain. Sesederhana itu.
John R. Strohm

3
Ini saran saya: turunkan kode GPL yang tampaknya sangat Anda andalkan dan lihat bagaimana kasus pengadilan itu terjadi. GPL3 dibuat untuk menyumbat lubang legal di GPL2, jadi mungkin Anda akan lolos begitu saja. Saya ragu orang akan mengadakan parade untuk menghormati Anda karena Anda lolos dengan manuver hukum dan jika Anda cukup efektif, orang akan melisensikan kode mereka dengan lebih banyak persyaratan penggunaan hanya untuk membuat Anda marah. Pada akhirnya, itu mungkin memperbaiki dunia dengan menghindari utas seperti ini.
Godeke

3
SAYA SANGAT tidak setuju dengan klaim bahwa secara moral tercela. Apa yang secara moral tercela adalah untuk memberi tahu orang-orang bahwa mereka tidak memiliki hak untuk melakukan hal-hal yang memungkinkan GPL lakukan. Ketika saya meletakkan sebuah karya di bawah GPL, saya melakukannya karena saya ingin aturan GPL berlaku. Memberitahu orang-orang bahwa mereka tidak boleh menggunakan hak yang diberikan GPL kepada mereka adalah tercela. Ini adalah sesuatu yang memungkinkan GPL. Mereka yang menempatkan pekerjaan di bawah GPL melakukannya karena mereka ingin mengizinkan ini.
David Schwartz

6

IANAL tapi saya yakin Anda baik-baik saja, bagian yang relevan dari GPL3 ada di akhir bagian 5:

Kompilasi pekerjaan tertutup dengan pekerjaan lain yang terpisah dan independen, yang tidak sesuai dengan sifatnya dari pekerjaan yang dibahas, dan yang tidak digabungkan dengan itu seperti membentuk program yang lebih besar, dalam atau pada volume penyimpanan atau distribusi medium, disebut "agregat" jika kompilasi dan hak cipta yang dihasilkannya tidak digunakan untuk membatasi akses atau hak hukum pengguna kompilasi di luar apa yang diizinkan oleh masing-masing karya. Pencantuman suatu karya yang tercakup dalam suatu agregat tidak menyebabkan Lisensi ini berlaku untuk bagian agregat lainnya.

Ini mungkin tergantung pada apa yang 'klien' Anda lakukan, jawaban mouviciel mungkin panduan yang baik tentang bagaimana melakukannya dengan aman

Jika Anda berpikir aplikasi Anda merupakan perpanjangan dari perpustakaan daripada sesuatu yang digabungkan dengan itu maka Anda mungkin benar (Anda harus berada di tempat yang baik untuk mengetahui hal ini) dalam hal ini taruhan terbaik Anda adalah menghubungi penulis dan mencoba untuk mendapatkan lisensi yang berbeda

ini tampaknya mendukung posisi saya bahwa ini secara eksplisit diizinkan oleh GPL, dengan asumsi dilakukan dengan benar.


Saya membacanya, tetapi masalahnya adalah teks GPL ditulis dalam bahasa hukum , bukan dalam pengembangan . Caranya dengan wrapper adalah membuat aplikasi komersial "agregat", bukan "turunan". Tapi saya pikir itu jatuh di bawah "ekstensi alami dari karya yang dibahas".
Andrey

baik untuk bantuan pada bahasa hukum Anda akan memerlukan pengacara. Jika Anda berpikir aplikasi Anda merupakan perpanjangan dari perpustakaan daripada sesuatu yang digabungkan dengan itu maka Anda mungkin benar (Anda harus berada di tempat yang baik untuk mengetahui hal ini) dalam hal ini taruhan terbaik Anda adalah menghubungi penulis dan mencoba untuk mendapatkan lisensi yang berbeda
jk.

1
@ Andrew: Jika "sifat" program Anda secara langsung terkait dengan kode GPL, bagian yang dikutip di atas tidak akan berlaku. Dari pertanyaan Anda, sepertinya itulah masalahnya. Contoh balasan bisa berupa program analisis intrusi jaringan yang kebetulan menggunakan GNU readline melalui mekanisme yang Anda usulkan. (Readline adalah uji kasus yang menarik karena ada alternatif drop-in berlisensi BSD.)
Fred Nurk

Klausa "agregat" adalah untuk memperjelas bahwa berada pada distribusi CD-Rom atau Linux yang sama tidak menciptakan turunan.
Sean McMillan

6

Lihat Saya ingin memasukkan perangkat lunak yang dilindungi GPL dalam sistem hak milik saya. Bisakah saya melakukan ini?

Pertanyaannya adalah, apakah aplikasi pembungkus Anda dapat digunakan sendiri? Jika Anda membuat versi baris perintah dari program Anda yang merupakan GPL, Anda dapat melepaskan GUI di bawah lisensi yang berbeda. Misalnya Anda bisa membuat IDE untuk gcc yang ditutup sumber atau alat visual diff berdasarkan diff.

Namun, jika Anda membungkus pustaka tidak ada gunanya selain digunakan oleh program Anda, dan Anda tidak akan menggunakan pustaka ini tanpa pustaka ini, maka itu adalah karya turunan dan perlu dirilis di bawah GPL.


Pemahaman saya adalah bahwa Anda dapat melisensikan bungkus di bawah MIT dan masih bisa OK
Pemanggang roti

2
Colin, sama sekali tidak. Wrapper secara jelas digabungkan dengan perpustakaan GPL menjadi biner tunggal. Untuk menggunakan kode GPL dalam satu biner, Anda harus GPL kode Anda sendiri untuk mematuhi lisensi.
Concrete Gannet

5

IMO, secara hukum tidak apa-apa. (IANAL) Untuk meningkatkan sisi moral dari masalah ini, jangan menyebutnya "pembungkus FooBar yang membuat FooBar legaly tersedia untuk MyClosedApp", sebut itu server. Jadikan program open source kecil yang "memungkinkan untuk melakukan FooBar melalui internet". Letakkan di SourceForge atau persembahkan situs web untuknya, dengan halaman proyek dan instruksi serta hal-hal lainnya. Lalu biarkan "MyClosedApp" cukup gunakan "server FooBar".


2

Sejauh yang saya mengerti, Anda dapat meninggalkan perangkat lunak Anda sumber tertutup selama ia dapat melakukan tugasnya tanpa pustaka GPL. Lihat perpustakaan GPL sebagai plugin yang ketidakhadirannya tidak membuat perangkat lunak Anda menjadi tidak berguna.


1
itu pasti salah. menggunakannya sebagai plugin (alias tautan dinamis) membuat aplikasi yang dihasilkan "turunan" dan subjek GPL.
Andrey

Saya tidak yakin plugin selalu identik dengan yang terhubung secara dinamis. Dan tentu saja dalam hal ini OP tidak mengusulkan secara dinamis menghubungkan apa pun jadi saya pikir saran mouviciel berlaku
jk.

@ jk yah, jika Anda hanya membuat satu plugin dan didasarkan pada lisensi GPL ini baunya sebagai pelanggaran.
Andrey

4
AGPL tidak akan melarang ini kecuali soketnya melalui jaringan. Ini cukup spesifik. Juga, ini bukan ujian kegunaan, tetapi seberapa dekat GPL dan perangkat lunak berpemilik. Menghubungkan statis pasti terlalu dekat, soket (kecuali untuk kasus AGPL tertentu) pasti OK, menghubungkan dinamis mungkin atau mungkin tidak (saya sudah mendengar argumen yang terdengar legal di setiap sisi, dan belum ada hukum kasus AS).
David Thornley

1
@ Andrew: jadi sekarang Anda mengatakan selama perangkat lunak sumber tertutup seperti Photoshop dapat melakukan tugasnya tanpa komponen GPL, orang dapat mendistribusikannya tanpa membuatnya menjadi GPL. Itulah tepatnya yang dikatakan oleh jawaban ini.
Doc Brown

1
  1. cobalah untuk mencari alternatif Open Source, jika tidak ada, pilihlah yang GPL;
  2. periksa apakah GPLv3 dengan klausa Affero jika ya, tidak ada yang bisa dilakukan;
  3. jika itu GPLv2, Anda dapat melakukan persis seperti yang Anda sarankan;

Ada juga opsi yang agak kontroversial. Di bawah sebagian besar legislatif, tautan dinamis harus dibatasi pada "pekerjaan turunan". Logika di balik ini adalah, bahwa sementara secara dinamis menghubungkan Anda hanya termasuk file header di program Anda. Dalam banyak undang-undang, file header dianggap sebagai definisi API dan secara eksplisit dikecualikan dari hak cipta. Di sisi lain, dengan tautan dinamis, tautan sebenarnya dengan perpustakaan GPL dilakukan pada sistem pengguna akhir. Tapi seperti yang saya katakan, ada banyak kontroversi dengan itu, Stallman sangat menentang FUD ini.


apa perbedaan antara GPL v2 dan v3 yang membuat hack saya tidak mungkin? Apa yang saya lakukan itu tidak menghubungkan dinamis, saya decoupling sebanyak mungkin.
Andrey

Salah satu tujuan GPLv3 adalah mencegah metode 'pengelakan' itu.
vartec

4
Pertama, varian GPL adalah lisensi resmi, yang disetujui OSI, Sumber Terbuka (sama seperti lisensi BSD tanpa klausa iklan adalah lisensi Perangkat Lunak Bebas yang disetujui Stallman). Kedua, tidak ada versi GPL (termasuk Affero) yang membatasi kemampuan Anda untuk memiliki GPL dan perangkat lunak berpemilik berkomunikasi dengan metode komunikasi antar proses standar, seperti soket.
David Thornley

IMO GPLv3 memungkinkan misalnya klausa DRM melanggar poin 6. dari Open Source Definition opensource.org/docs/osd
vartec

1
@artec: DRM bukan "Bidang Usaha". Lihat "Sebagai contoh, itu mungkin tidak membatasi program untuk digunakan dalam [usaha komersial], atau dari digunakan untuk penelitian genetik." OSI tampaknya percaya bahwa GPL3 adalah Open Source dan memenuhi semua poin dari definisi mereka, karena mereka menyetujuinya.
Thomas Edleson

0

Apakah sah bagi Adam Brown untuk menulis sebuah program yang menggunakan pustaka GPL dan bertindak sebagai "server", jika ia merilis semua kode sumber untuk semua yang terkait dengannya, tetapi satu-satunya kode klien yang ia rilis cukup lemah karena itu saja dia menulis sisi klien? Saya tidak melihat dasar untuk berpikir itu tidak akan.

Jika Charles Dover menemukan "server" Adam Brown dan memutuskan untuk menulis program sumber tertutup untuk berkomunikasi dengannya, apakah GPL akan membatasi tindakannya dengan cara apa pun? Saya tidak bisa melihat, karena satu-satunya penggunaan perangkat lunak GPL adalah sebagai binari yang ia terima dari Adam Brown. Jika dia mendistribusikan binari Adam, dia juga harus menyertakan tautan ke sumbernya, tetapi tidak ada hal lain dalam GPL yang akan memengaruhi kode Charles apa pun.

Berkenaan dengan satu orang yang menulis server berlisensi GPL, dan kemudian menggunakan server untuk keperluan sumber tertutupnya sendiri, saya tidak akan berpikir harus ada masalah hukum jika dalam menulis server ia membuat upaya yang bonafid untuk membuatnya berguna bagi orang lain yang mungkin ingin menggunakan kode GPL yang disediakan dengan cara yang sama. Secara khusus, dokumentasi antarmuka yang dirilis secara publik harus cukup untuk memungkinkan programmer yang kompeten baik menulis kode untuk server yang akan diterima oleh program klien seperti aslinya, dan untuk menulis program klien yang akan menggunakan server dengan cara yang sama dengan aplikasi penulis.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.