Menulis ulang kode GPL untuk mengubah lisensi

23

Saya telah menemukan perpustakaan GPL (tidak ada lisensi ganda), yang melakukan persis apa yang saya butuhkan. Sayangnya, lisensi GPL di perpustakaan tidak sesuai dengan lisensi dari perpustakaan lain yang saya gunakan. Karena itu saya telah memutuskan untuk menulis ulang perpustakaan GPL, sehingga lisensi dapat diubah.

Pertanyaan saya adalah: Seberapa luas perubahan yang perlu dilakukan ke perpustakaan agar dapat mengubah lisensi? Dengan kata lain, apa cara termurah untuk melakukan ini?

I_like_traffic_lights
sumber
3
Mungkin lebih murah untuk membayar penulis perpustakaan GPL untuk merilisnya kepada Anda di bawah lisensi yang berbeda.
quant_dev
3
Daripada bertanya apa cara TERMURAH, mengapa tidak memberi tahu kami kisah lengkapnya dan bertanya, "Apa hal yang benar untuk dilakukan?"
John R. Strohm
4
Jika perpustakaan lain tidak kompatibel dengan GPL, mungkin itu perpustakaan yang perlu Anda ubah.
Paul Butcher
1
Lisensi apa yang dimiliki perpustakaan lain?
Andres F.

Jawaban:

34

Saya bukan pengacara, tetapi AFAIK jika Anda telah melihat kode perpustakaan GPL perpustakaan emulasi apa pun yang Anda tulis akan ternoda dan dapat dinyatakan sebagai karya turunan oleh hakim jika penghargaannya terlalu mirip.

Jadi prosesnya adalah untuk menulis spesifikasi fungsional dan memiliki seseorang yang belum melihat kode GPL menulis perpustakaan.

Sunting: Perhatikan bahwa dengan cara Anda merumuskan pertanyaan Anda, "Seberapa luas perubahan yang perlu dilakukan ke perpustakaan agar dapat mengubah lisensi?" jawabannya adalah AFAIK jelas: apa pun yang Anda lakukan, jika Anda hanya memodifikasi perpustakaan Anda harus menghormati ketentuan lisensi yang membuat Anda dapat memodifikasinya.

Pemrogram
sumber
3
Masalah pencemaran mungkin bukan masalah yang serius dalam praktik. Dalam kasus di mana Anda merekayasa balik kode entitas komersial, maka firewall antara pembaca dan pelaksana diperlukan untuk gugatan pelanggaran (yang pada dasarnya tidak terhindarkan), sehingga Anda dapat menunjukkan bahwa tidak ada kemungkinan menyalin kode dari versi lain. . Dalam kasus sebagian besar kode GPL, kecuali jika Anda secara terang - terangan melanggar tidak ada yang akan menuntut Anda, karena itu bukan kepentingan mereka untuk melakukannya.
Mark Bessey
1
Anda mungkin menyukai roulette Rusia, itu pilihan Anda. Jika karena alasan apa pun - persaingan mewarisi kode dengan cara atau yang lain, atau hanya kompetisi yang memutuskan untuk membiayai gugatan - Anda dituntut dan dihukum, itu adalah sesuatu yang dapat menenggelamkan perusahaan Anda. Bahkan jika Anda tidak dituntut, jika diketahui reputasi yang buruk mungkin menjadi masalah.
Pemrogram
2
Saya pikir masalah "tercemar" sebagian besar berlaku untuk NDA. Untuk masalah hak cipta, rasanya tidak masuk akal. Pertimbangkan bahwa hak cipta juga berlaku untuk buku, surat kabar, film dll. George Lucas mungkin melihat serial Star Trek di TV sebelum membuat Star Wars, apakah itu membuat Star Wars karya turunan? Jika seorang wartawan surat kabar mendengar tentang sesuatu di radio, apakah itu mencegahnya menulis tentang acara yang sama?
user281377
6
Pendekatan kamar bersih hanyalah cara untuk membuktikan bahwa Anda belum melanggar undang-undang hak cipta. Seperti yang saya pahami - dan lagi-lagi saya bukan pengacara - hal-hal yang dikembangkan tanpa sepengetahuan karya asli mungkin tidak melanggar hak cipta (tetapi dapat melanggar paten). Hal-hal yang dikembangkan dengan pengetahuan itu mungkin atau mungkin tidak melanggar hak cipta - hanya sulit untuk membuktikan bahwa kesamaan disebabkan oleh peristiwa acak atau sifat masalah yang membuat pendekatan menjadi alami.
Pemrogram
1
@ammoQ: Di AS, ada gugatan pelanggaran salinan sejak lama (paket perangkat lunak statistik?) di mana sebuah perusahaan dianggap telah melanggar meskipun setiap baris kode telah ditulis ulang. Perhatikan bahwa Star Wars tidak terlalu mirip dengan Star Trek, dan bahwa reporter surat kabar tidak akan menulis cerita hanya dari apa yang dia dengar di radio.
David Thornley
21

Cara biasa mengatasi masalah ini adalah dengan terlebih dahulu menghubungi pemilik perpustakaan dan bertanya apakah mereka akan merilisnya kepada Anda di bawah lisensi yang berbeda.

Jika Anda bekerja pada proyek open source di mana GPL tidak kompatibel, maka ada kemungkinan besar mereka akan melakukan ini, beberapa proyek berakhir dengan lisensi GPL hanya karena itu sepertinya pilihan terbaik.

Tentu saja, ini berlaku untuk kedua perpustakaan. Mendapatkan lisensi dua-lisensi permisif di bawah yang kurang permisif seharusnya tidak menjadi masalah.

Jika Anda bekerja dengan produk komersial, maka banyak penulis perpustakaan akan memberi Anda rilis di bawah lisensi yang berbeda, jika Anda menggantinya dengan tepat.

gbjbaanb
sumber
8
Layak dicoba, tetapi ini tidak berfungsi jika pemilik perpustakaan telah menerima atau memanfaatkan kontribusi GPL, yang merupakan kasus bagi banyak perpustakaan.
Brian
^ Kecuali mereka memiliki perjanjian "kontributor" yang mengalihkan hak cipta kembali ke penulis aslinya: softwareengineering.stackexchange.com/a/225577/93511
Jonathan
17

Pemahaman saya adalah bahwa jika Anda mulai dengan sebuah karya dan memodifikasinya, tidak peduli seberapa luas modifikasi, hasil akhirnya adalah karya turunan dari aslinya. Anda harus menulis perpustakaan dari awal. Jika Anda menulis pustaka dari awal, tetapi telah melihat kode, maka jika terlalu mirip Anda dapat kembali dituntut karena pelanggaran hak cipta.

Aturan-aturan ini tidak spesifik untuk perangkat lunak, mereka berlaku untuk semua jenis hak cipta.

Saya bukan pengacara, dan ini bukan nasihat hukum. Saya juga sangat mungkin tidak di yurisdiksi Anda, dan Anda harus selalu meragukan nasihat hukum yang ditawarkan di Internet. Jika Anda ingin memiliki nasihat hukum yang andal, Anda harus membayar pengacara.

btilly
sumber
4

IANAL, tetapi saya tahu bahwa di AS, tidak ada derajat modifikasi yang akan menghasilkan karya non-turunan. Jika memiliki kode yang disalin dari perpustakaan lama atau memiliki kesamaan internal yang cukup yang akan membuat Anda kesulitan untuk plagiarisim di kelas Universitas, maka Anda tidak berada di dekat karya baru. Mengubah beberapa nama fungsi atau variabel tidak akan melakukan apa-apa, tidak juga akan memindahkan potongan kode di dalam sumber. Anda harus membuatnya kembali secara mandiri untuk mendapat peluang. TKI, Anda hanya perlu melihat antarmuka yang disediakannya, dan memutuskan bagaimana menyediakan fungsionalitas itu dan membuatnya kembali seperti itu untuk mendapat peluang. Bahkan saat itu Anda masih mungkin tidak keluar dari hutan jika seseorang benar-benar peduli dan marah.

Pada akhirnya, taruhan terbaik Anda adalah menghubungi penulis perpustakaan dan berharap bahwa Anda dapat menemukan pengaturan untuk lisensi perpustakaan yang lebih permisif.

ddeflyer
sumber
1

Jika segala sesuatu yang disarankan di sini (meminta lisensi ganda, menulis ulang) tidak dapat diterima, harap diingat bahwa ini masih bukan kasus yang jelas apakah menghubungkan dinamis dengan program / perpustakaan eksklusif dianggap sebagai karya turunan. FSF mengatakan itu, tetapi banyak pengacara (termasuk Lawrence Rosen) telah mempertanyakan ini.

Jadi, Anda dapat menautkan perangkat lunak Anda dengan pustaka GPL, kemudian memastikan kode sumber untuk itu didistribusikan dengan setiap salinan perangkat lunak Anda. Jika ada yang menuntut Anda, mereka harus membuktikan, bahwa pemahaman mereka tentang aspek GPL yang rumit dan suram ini benar. Seperti yang terlihat (mis. Galoob vs Nintendo) Anda tidak dapat sepenuhnya yakin apa yang membuat pekerjaan turunan dan apa yang tidak.

Jacek Prucia
sumber
atau setidaknya tanyakan apakah lib dapat berupa LGPL juga.
Johan
2
Masalah tautan dinamis adalah masalah yang sulit, tetapi jangan mengandalkan hakim yang menentukan jalan Anda. Hakim mungkin memutuskan bahwa Anda menerima definisi Gnu jika Anda menggunakan lisensi Gnu, dan Anda mungkin tidak ingin mendasarkan produk perangkat lunak Anda pada hasil dari kasus pengadilan yang belum terjadi.
David Thornley
1

Satu-satunya cara itu tidak akan diturunkan bekerja, akan jika Anda akan menulis ulang seluruh kode sendiri tanpa menggunakan salah satu kode asli. Yang mungkin tidak layak.

Ada banyak cara yang lebih mudah di sekitar GPL:

  • di tempat yang jelas: jadikan layanan, akses melalui soket. Socket adalah batas untuk lisensi GPL (kecuali jika GPLv3 terkenal dengan klausa Affero );
  • di zona abu-abu: tautkan secara dinamis. Ada banyak kontroversi jika tautan dinamis adalah atau tidak terbatas pada karya turunan. Beberapa sudut pandang di sini . Ini mungkin juga tergantung pada yurisdiksi tempat Anda berada.

Perhatikan juga, bahwa GPL adalah lisensi distribusi , jadi Anda hanya perlu melisensikan pekerjaan Anda jika Anda mendistribusikan binari ke pihak ketiga. Dan Anda hanya berkewajiban untuk melepaskan sumber kepada mereka, tidak ada kewajiban untuk melepaskannya ke masyarakat umum, kecuali jika Anda melepaskan binari ke masyarakat umum. Jika Anda menggunakan kode Anda misalnya hanya di server Anda, Anda tidak memiliki kewajiban untuk melepaskan kode apa pun. Ini adalah bagaimana misalnya Google melakukannya dengan kernel Linux tweak mereka.

vartec
sumber
Saya jauh dari yakin bahwa soket adalah penghalang. Menurut pengacara kami, para insinyur terlalu fokus pada tindakan teknis sementara efek globalnya adalah apa yang diperiksa oleh hukum. Menerbitkan antarmuka socket dan memberikan contoh penggunaan di emacs lisp adalah OK untuk mereka. Tetapi memberikan kemungkinan untuk menginstal emacs secara otomatis bersama dengan program kami tidak. Anda tepat untuk distribusi. Tetapi perhatikan bahwa Anda tidak dapat mencegah orang yang Anda bagikan untuk mendistribusikan lebih lanjut.
Pemrogram
@AProgrammer: bahkan FSF mengatakan, bahwa jika ini adalah proses yang terpisah, maka ini adalah program yang terpisah, sehingga bukan merupakan pekerjaan turunan. FAQ tentang plugin, tetapi logikanya masih berlaku: gnu.org/licenses/gpl-faq.html#NFUseGPLPlugins
vartec
Pertanyaannya adalah tentang plug-in dan plug-in yang sifatnya tidak diperlukan. Saya tidak akan bertaruh perusahaan saya bahwa penataan program dalam dua proses, satu GPL karena itu menggunakan perpustakaan GPL yang lain bukan karena kami ingin menjaga sumber pribadi itu sah. Terutama ketika keduanya didistribusikan bersama. Tapi itu panggilanmu.
Pemrogram
1
@ A: distribusi dengan program lain adalah "agregasi", dan secara eksplisit diizinkan oleh GPL. Dan tidak, itu bukan panggilan saya. Secara pribadi, saya tidak akan menyentuh perpustakaan GPL bahkan dengan tongkat sepanjang 10 kaki.
vartec
1

IANAL dan, dalam hal apapun, ini mungkin tidak berarti apa-apa secara hukum, tetapi, saya percaya bahwa dalam buku Steven Levy "Hacker", ia menggambarkan bagaimana, pada satu titik, RMS menulis kode * nix untuk uang pada siang hari dan pada malam hari menulis hal yang sama barang-barang di rumah sehingga bisa menjadi bagian dari ... GNU? ... ini sebelum Linux ... beberapa jenis sistem Unix gratis. Saya percaya bahwa dia harus membuat kode-rumah berbeda dari kode-hari, tetapi dia pada dasarnya melakukan persis apa yang Anda sarankan.

Ini mungkin tidak masalah secara hukum, baik tetapi ... Saya tidak yakin apakah Apple dan / atau Microsoft mendapat izin / lisensi atau sesuatu, tetapi lab bell tidak menemukan antarmuka desktop / ikon / mouse, yang digunakan untuk Mac (atau Lisa?) yang kemudian digunakan oleh Microsoft.

Brian Marshall
sumber
Itu akan menjadi Xerox PARC, bukan Bell Labs.
Marnen Laibow-Koser
Dan Jobs membuat perjanjian dengan Xerox yang memungkinkan Apple untuk pergi melihat lab di Palo Alto. Tidak ada seorang pun di Xerox yang peduli dengan teknologi itu saat itu.
aledalgrande
0

Tidak ada jawaban untuk ini kecuali untuk persidangan di hadapan hakim di yurisdiksi khusus Anda. Tetapi apakah Anda ingin mengambil risiko itu? Atau cobalah menulis ulang perpustakaan GPL, tes, dll. Apakah Anda yakin perpustakaan lain tidak kompatibel dengan GPL? Ini sebenarnya sangat tidak biasa, kecuali jika Anda ingin mendistribusikan kedua pustaka di bawah ketentuan pustaka non-GPL.

Neil Butterworth
sumber
Anda bisa mendapatkan daftar lisensi Gnu di gnu.org/licenses/license-list.html dan Anda akan melihat bahwa itu dibagi menjadi lisensi yang kompatibel dengan GPL gratis, lisensi yang tidak kompatibel dengan GPL gratis, dan lisensi yang tidak bebas. GPL memiliki beberapa persyaratan khusus yang sering tidak dipenuhi oleh lisensi lain, dan salah satu tujuan GPLv3 adalah untuk membuat kompatibilitas lebih mudah.
David Thornley
0

Seberapa luas perubahan yang perlu dilakukan ke perpustakaan agar dapat mengubah lisensi?

Di sebagian besar dunia Anda harus mulai dari awal dan tidak memotong dan melewati apa pun. Anda memerlukan nama baru untuk fungsi / kelas / variabel dll, dan strukturnya harus berbeda. Maka Anda aman.

Di sisi lain, jika alat-diff tidak dapat menemukan kesamaan maka ...

Johan
sumber
2
Jika alat diff tidak dapat menemukan kesamaan maka itu mungkin merupakan pelanggaran hak cipta. Lihatlah dari sudut pandang non-pemrograman: Saya menulis buku, Anda menerjemahkannya ke dalam bahasa Swedia, dan oleh undang-undang hak cipta AS (dan kemungkinan Swedia), Anda membuat karya turunan.
David Thornley
@ David Thornley Ya, Anda benar tentang karya turunan.
Johan