Panggil perangkat lunak GPL dari perangkat lunak non-GPL

30

Bisakah saya (secara hukum) menggunakan program yang dirilis di bawah GPL dari program lain yang saya tulis dan tidak harus menghormati GPL (untuk program yang saya tulis)?

Misalnya, saya memiliki GUI yang menggunakan program (yang berada di bawah GPL), dapatkah saya menyembunyikan kode di GUI dan bahkan menjualnya?

Valmond
sumber

Jawaban:

30

Anda dapat menggunakan program GPL dari program Anda sendiri tanpa program Anda dipengaruhi oleh GPL, tetapi Anda tidak dapat menautkan kode GPL ke program Anda sendiri tanpa program Anda tunduk pada ketentuan GPL.

Dalam contoh yang disediakan dalam pertanyaan, di mana Anda telah menulis pembungkus GUI di sekitar program baris perintah yang ada, GUI Anda tidak terikat oleh ketentuan GPL, asalkan itu adalah program terpisah yang menjalankan program GPL dalam pisahkan proses dan berkomunikasi dengannya hanya melalui antarmuka yang ada - misalnya, melalui baris perintah dan / atau melalui stdin / stdout.

Beberapa bit yang relevan dari FAQ GPL :

Di mana garis antara dua program yang terpisah, dan satu program dengan dua bagian? Ini adalah pertanyaan hukum, yang akhirnya akan diputuskan oleh hakim. Kami percaya bahwa kriteria yang tepat tergantung pada mekanisme komunikasi (eksekutif, pipa, rpc, pemanggilan fungsi dalam ruang alamat bersama, dll.) Dan semantik komunikasi (jenis informasi apa yang dipertukarkan).

Jika modul termasuk dalam file yang dapat dieksekusi yang sama, mereka pasti digabungkan dalam satu program. Jika modul dirancang untuk dijalankan tertaut bersama dalam ruang alamat bersama, itu hampir pasti berarti menggabungkannya menjadi satu program.

Sebaliknya, pipa, soket dan argumen baris perintah adalah mekanisme komunikasi yang biasanya digunakan antara dua program yang terpisah. Jadi ketika mereka digunakan untuk komunikasi, modul biasanya adalah program yang terpisah. Tetapi jika semantik komunikasi cukup intim, bertukar struktur data internal yang kompleks, itu juga bisa menjadi dasar untuk mempertimbangkan dua bagian sebagai digabungkan ke dalam program yang lebih besar.


Dapatkah saya merilis program tidak bebas yang dirancang untuk memuat plug-in yang tertutup GPL?

Itu tergantung pada bagaimana program memanggil plug-in-nya. Misalnya, jika program hanya menggunakan garpu dan exec sederhana untuk memanggil dan berkomunikasi dengan plug-in, maka plug-in adalah program yang terpisah, sehingga lisensi plug-in tidak membuat persyaratan tentang program utama.

Jika program secara dinamis menautkan plug-in, dan mereka membuat panggilan fungsi satu sama lain dan berbagi struktur data, kami percaya mereka membentuk program tunggal, yang harus diperlakukan sebagai perpanjangan dari program utama dan plug-in. Untuk menggunakan plug-in yang dicakup GPL, program utama harus dirilis di bawah GPL atau lisensi perangkat lunak bebas yang kompatibel dengan GPL, dan bahwa persyaratan GPL harus diikuti ketika program utama didistribusikan untuk digunakan dengan ini plug-in.

Jika program secara dinamis menautkan plug-in, tetapi komunikasi di antara mereka terbatas untuk menjalankan fungsi 'utama' dari plug-in dengan beberapa opsi dan menunggu untuk kembali, itu adalah kasus batas.

Perhatikan bahwa GPL berlaku sepenuhnya untuk program baris perintah yang mendasari dalam hal apa pun - jika Anda mendistribusikannya (sebagai lawan meminta pengguna memperolehnya dari sumber lain), Anda bertanggung jawab untuk menyediakan salinan GPL kepada pengguna, membuatnya jelaskan kepada mereka bahwa program baris perintah ada di bawah GPL (bahkan jika pembungkus GUI tidak), dan membuat kode sumber program baris perintah tersedia untuk mereka berdasarkan permintaan. Dari FAQ GPL lagi:

Jika orang-orang mendistribusikan perangkat lunak yang dilindungi GPL menyebutnya “bagian dari” sistem yang diketahui sebagian pengguna adalah hak milik, pengguna mungkin tidak yakin akan hak mereka terkait perangkat lunak yang dilindungi GPL. Tetapi jika mereka tahu bahwa apa yang telah mereka terima adalah program gratis plus program lain, berdampingan, hak-hak mereka akan jelas.

Penafian standar: Saya bukan pengacara dan, bahkan jika saya pengacara, saya bukan pengacara Anda . Jika Anda membutuhkan jawaban yang pasti, berkonsultasilah dengan profesional hukum yang sesuai yang memiliki izin praktik di yurisdiksi Anda.

Dave Sherohman
sumber
1
Perlu dicatat bahwa posisi FSF dalam menghubungkan adalah posisi minoritas. (Dan, IMO, tidak masuk akal sama sekali. Proses otomatis tidak dapat menciptakan karya baru.)
David Schwartz
1
Namun, FSF memang menulis GPL. Ini membuat pendapat mereka jauh lebih relevan. "Ketika kami mengatakan X, maksud kami {...}" secara umum diterima di pengadilan. "Ketika kamu mengatakan X, maksudmu {...}", tidak begitu.
MSalters
Apa yang dimaksud dengan "hanya menggunakan garpu dan exec sederhana untuk memanggil" - dapatkah seseorang mengklarifikasi hal ini?
Krunal
Jadi, maka GPL dapat dengan mudah dilewati dengan hanya menulis bungkus pipa untuk menjalankan kode GPL dalam proses terpisah? Itu tampaknya membuat GPL tidak relevan dan tidak mungkin untuk ditegakkan. Bagaimana jika saya menulis perpustakaan saya sendiri dan menautkannya bersama dengan perpustakaan GPL. Apakah pustaka mandiri saya yang terpisah kemudian menjadi GPL juga? Bagaimana jika saya menautkan ke perpustakaan orang lain saat menggunakan kode GPL? Apakah perpustakaan mereka menjadi GPL? Jika Anda menjawab tidak untuk semua pertanyaan ini, itu akan membuka celah besar untuk dengan mudah melewati GPL. Jika Anda menjawab ya, maka Anda melanggar hukum hak cipta.
Cerin 3-15
@Cerin - GPL hanya benar-benar berlaku untuk kode yang Anda distribusikan. Jadi, saat Anda dapat menulis program yang menautkan ke lisensi yang kompatibel dengan GPL dan tidak kompatibel dengan GPL, Anda tidak dapat mendistribusikan program itu kepada pihak ketiga, karena program tersebut akan menjalankan kode yang kompatibel dengan GPL dan non-GPL dalam proses yang sama. ("Penggunaan tanpa redistribusi" dipandang oleh banyak orang sebagai celah dalam GPL, karena itu berarti layanan web dan sejenisnya dapat menghindari GPL sepenuhnya karena mereka menjalankan perangkat lunak itu sendiri daripada memberikannya kepada pengguna untuk dijalankan. GNU AGPL adalah mencoba untuk mengatasi masalah ini.)
Dave Sherohman
0

Tergantung apa yang Anda maksud dengan menggunakannya?

  • kompilasi ke dalam kode Anda
  • gunakan perpustakaan bersama
  • jalankan executable

Ini juga tergantung pada versi / varian GPL yang mana kode lainnya berada.

  • GPL
  • LGPL
  • AGPL
  • Mungkin orang lain

Penafian hukum: Saya bukan pengacara.

Martin York
sumber
-2

Itu tergantung pada seberapa tepatnya program Anda "menggunakan" program GPL. FAQ GPL memiliki penjelasan yang agak panjang , tetapi masih banyak terbuka untuk interpretasi:

Anda tidak dapat memasukkan perangkat lunak yang dilindungi GPL dalam sistem berpemilik. (...) Namun, dalam banyak kasus Anda dapat mendistribusikan perangkat lunak yang dilindungi GPL di samping sistem milik Anda. Untuk melakukan hal ini secara sah, Anda harus memastikan bahwa program yang bebas dan tidak bebas berkomunikasi dengan tangan terbuka, bahwa mereka tidak digabungkan dengan cara yang akan membuat mereka secara efektif menjadi satu program. (...) jika kedua program digabungkan sehingga keduanya menjadi dua bagian dari satu program secara efektif, maka Anda tidak dapat memperlakukannya sebagai dua program yang terpisah. Jadi GPL harus mencakup semuanya.Jika kedua program tetap terpisah, seperti kompiler dan kernel, atau seperti editor dan shell, maka Anda dapat memperlakukannya sebagai dua program terpisah — tetapi Anda harus melakukannya dengan benar. Masalahnya hanyalah salah satu bentuk: bagaimana Anda menggambarkan apa yang Anda lakukan. Kenapa kita peduli dengan ini? Karena kami ingin memastikan pengguna memahami dengan jelas status bebas dari perangkat lunak yang dicakup GPL dalam koleksi.

Saya pikir dalam contoh Anda tentang GUI yang ada terutama untuk memanggil program baris perintah GPL, keduanya jelas membentuk satu program, jadi Anda harus melepaskan kode Anda di bawah GPL.

Michael Borgwardt
sumber
Tidak, mereka tidak "dengan jelas membentuk satu program". Selama program command-line yang mendasarinya tetap dapat berfungsi tanpa adanya overlay GUI, mereka digabungkan dengan "agregasi belaka" dan tidak "secara efektif satu program". Perhatikan contoh-contoh dalam teks yang Anda kutip - kompiler duduk di atas kernel dan tidak akan berjalan tanpanya, tetapi kernel akan dengan senang hati berjalan tanpa adanya kompiler.
Dave Sherohman
1
@Dave: Apakah program baris perintah yang mendasarinya tetap dapat berfungsi tanpa adanya overlay GUI mungkin relevan jika status lisensi dari program baris perintah tersebut dipertanyakan - tetapi pertanyaannya adalah tentang GUI, yang sama sekali tidak berguna tanpa program baris perintah, dan karenanya benar melampaui bayangan keraguan bahwa mereka membentuk satu program.
Michael Borgwardt
Mari gantikan salah satu contoh dari bagian yang Anda kutip dan lihat bagaimana hasilnya. "... tapi pertanyaannya adalah tentang kompiler, yang sama sekali tidak berguna tanpa kernel, dan karena itu benar di luar bayangan keraguan bahwa mereka membentuk satu program." Kecuali, tentu saja, teks yang Anda kutip secara eksplisit menyatakan "Anda dapat memperlakukannya sebagai dua program yang terpisah". Jika itu hanya masalah ketergantungan, maka Anda tidak akan pernah bisa menjalankan perangkat lunak tertutup di Linux karena perangkat lunak itu akan "sama sekali tidak berguna" tanpa kernel (GPLed).
Dave Sherohman
@Dave: Kecuali, tentu saja, bahwa kompiler dan semua jenis perangkat lunak tertutup TIDAK tidak berguna tanpa kernel Linux, karena mereka dapat dan menjalankan apa pun yang mengimplementasikan standar perpustakaan POSIX dan / atau C, dan menyediakan fungsionalitas signifikan sendiri . Sama sekali berbeda dari pembungkus GUI yang ada hanya untuk mendorong satu program baris perintah tertentu.
Michael Borgwardt
3
Anda salah pada bagian GUI. Pembungkus GUI yang sama akan bekerja dengan program CLI lainnya, khususnya versi asli yang asli. Itu relevan dalam konteks ini, karena itu berarti hak GPL asli pada program yang mendasarinya masih dapat dilaksanakan. Jika saya kompilasi ulang menjadi 10% lebih cepat, CLI tidak menghalangi saya.
MSalters
-3

Tidak.

Kode GPL hanya dapat digunakan oleh kode GPL lainnya.

Mengutip baris pertama artikel GPL wikipedia :

GPL adalah lisensi copyleft pertama untuk penggunaan umum, yang berarti bahwa karya turunan hanya dapat didistribusikan dengan ketentuan lisensi yang sama.

Selain itu, GPL memiliki beberapa halaman dan ada dalam beberapa versi.


Peringatan, kata-kata kasar pribadi di depan!

Saya pribadi sangat tidak menyukai lisensi GPL karena sifatnya yang sangat membatasi dan seperti virus. Mereka menyebutnya "gratis" tetapi sebenarnya justru sebaliknya, kode GPL tidak dapat digunakan oleh apa pun kecuali kode GPL lainnya. Dengan demikian memaksa proyek lain ke GPL atau dipaksa untuk menulis ulang seluruh pustaka, apakah proyek Anda saat ini adalah open source atau tidak. Ada proyek-proyek open-source besar, seperti freeBSD misalnya yang dipaksa untuk menulis ulang ratusan ribu baris kode linux karena lisensi mereka tidak kompatibel, itu terlalu "gratis" dalam arti "melakukan apa pun yang Anda inginkan", yang jelas tidak kompatibel dengan GPL.

Jika Anda ingin lisensi yang benar-benar "bebas" dalam arti "melakukan apa pun yang Anda inginkan", saya sarankan lisensi BSD atau MIT ... sebenarnya, sebagian besar lisensi lainnya OK. Hanya GPL yang benar-benar bermasalah karena seberapa ketatnya itu dan bagaimana memaksa orang lain ke dalamnya. Terakhir, ini terlalu rumit.

Ah, ya, itu juga tiket satu arah. GPL dapat menggunakan kode / pustaka yang dilisensikan dari sebagian besar lisensi, tetapi pustaka / kode ini tidak dapat menggunakan kode GPL secara bergantian.

dagnelies
sumber
Dikatakan "turunan karya". Apakah itu termasuk perangkat lunak yang secara dinamis terhubung ke kode GPL?
rightfold
@ IPT: pasti ya - inti dari LGPL adalah memiliki lisensi berbeda yang memungkinkan ini.
Michael Borgwardt
3
Cangkang GUI yang melingkari program command-line bukanlah "pekerjaan turunan" sebagaimana didefinisikan untuk tujuan hak cipta.
Dave Sherohman
1
@Dave Sherohman - itu tidak tampak jelas. Jawaban yang diterima untuk pertanyaan ini mengatakan: "IMHO, dalam semangat, pembungkus murni yang hanya memperlihatkan fungsi program GPL haruslah GPL." Bukan hanya aspek teknis tentang bagaimana mereka berkomunikasi, tetapi juga tujuannya. Misalnya, menerjemahkan buku berarti menciptakan karya turunan. Mengubahnya ke format Kindle akan menjadi karya turunan. Saya bisa melihat hakim memutuskan bahwa menambahkan GUI adalah menciptakan karya turunan. Waspadalah.
Scott Whitlock