Bisakah Anda mengubah kode yang didistribusikan di bawah lisensi MIT, dan mendistribusikannya kembali di bawah lisensi GPL? [Tutup]

57

Apakah mungkin untuk mengubah kode plugin Chili , yang memiliki rilis terbaru pada Juli 2008, dan dilisensikan di bawah lisensi MIT, untuk kemudian dilisensikan di bawah GPL?

Sejauh yang saya bisa lihat, tidak ada batasan tentang kode baru yang dilisensikan di bawah lisensi yang sama. Benarkah demikian, atau adakah jumlah minimum perubahan?

Dalam kasus saya, saya akan mengubah plugin jQuery dalam kode Javascript normal yang dijalankan dalam CMS. Ini pada dasarnya berarti bahwa, antara lain:

  • Kode tidak akan menggunakan namespace "ChiliBook".
  • Fungsi tidak akan dipanggil sebagai $($element).chili(), tetapi sebagai GlobalObject.ChiliHighlighter.process($jquery_element), di mana "GlobalObject" adalah objek JavaScript yang digunakan dari CMS.
  • Kode akan memungkinkan modul lain untuk mengubah GlobalObject.ChiliHighlighterobjek untuk menambahkan fungsi yang secara opsional dipanggil dari GlobalObject.ChiliHighlighter.process()ketika mereka ditentukan.

Sebagai alternatif, karena repositori yang saya gunakan memungkinkan saya untuk memasukkan kode yang tidak dilisensikan di bawah GPL 2 atau lisensi yang lebih tinggi ketika kode tersebut tidak dipertahankan lagi, bisakah plugin dianggap tidak dipertahankan lagi, karena versi terakhirnya dirilis tiga tahun lalu?

kiamlaluno
sumber
2
Jika Anda benar-benar menginginkan jawaban yang berwibawa, Anda harus berkonsultasi dengan pengacara (di yurisdiksi yang relevan, misalnya jawabannya bisa berbeda di Italia daripada di AS)
MarkJ

Jawaban:

59

Secara teknis legal.

Lisensi MIT (Expat) memberi batasan pada Anda. Ini adalah bagian dari lisensi GPL. Oleh karena itu, jika Anda mengubah kode di bawah GPL, dan tetap memperhatikan MIT, maka Anda telah memenuhi ketentuan lisensi MIT dan secara hukum dapat mendistribusikan ulang kode tersebut.

Perhatikan bahwa Anda tidak boleh mengklaim kepemilikan hak cipta; Anda harus mengakui hak cipta asli.

[sunting] Beberapa orang tampaknya tidak memahami bagaimana F / OSS bekerja bersama dengan undang-undang hak cipta dan lisensi. Semuanya dimulai dengan hak cipta, jika hanya karena itulah standarnya. Di bawah doktrin hak cipta, penulis berhak membuat salinan kode sumber. Di bawah lisensi MIT, hak itu diberikan kepada saya, serta hak untuk memberikannya secara rekursif kepada orang lain. Perhatikan bahwa lisensi MIT secara eksplisit mencakup hak sublisensi. Mengutip:"the rights to use, copy, modify, merge, publish,distribute, sublicense, and/or sell"

Ketika saya mensublisensikan kode, saya tidak dapat memberikan hak yang awalnya tidak saya miliki. Dalam kasus GPL, saya secara eksplisit dilarang mensublisensikan hanya beberapa hak. Tetapi baik dalam hukum maupun dalam lisensi MIT saya tidak memiliki kewajiban untuk mensublisensikan semua hak secara keseluruhan.

Oleh karena itu, lisensi MIT memberi saya hak eksplisit untuk hak sublisensi, dan baik hukum maupun lisensi MIT melarang saya untuk mensublisensikan hanya beberapa hak. Juga, tidak ada yang membatasi bentuk yang saya lakukan. Oleh karena itu, saya memiliki hak yang tidak dapat disangkal untuk memberikan sublisensi GPL pada kode itu.

MSalters
sumber
6
@ vartec: Anda tidak mengubah lisensi tempat Anda menerima kode. Anda membuat lisensi baru antara Anda dan penerima baru, dan dapat memiliki ketentuan apa pun yang Anda inginkan. (Penerima baru mungkin mendapatkan hak tambahan di bawah lisensi asli, tetapi itu tidak berpengaruh pada lisensi baru.) Normalnya adalah sublisensi untuk memberikan sebagian kecil dari hak dalam lisensi asli. Sebagai contoh, suatu sublisensi jarang mencakup hak atas sublisensi, yang harus dimasukkan oleh lisensi asli agar ada sublisensi.
David Schwartz
3
@ vartec: Pada dasarnya, Anda berpendapat bahwa lisensi hak cipta yang memberikan hak untuk sublisensi entah bagaimana sebenarnya tidak memberikan hak untuk sublisensi. Saya tidak yakin atas dasar apa Anda membuat argumen ini. Apakah Anda mengutip beberapa otoritas hukum yang relevan? Apakah Anda mengatakan pemegang hak cipta tidak dapat memberi orang lain hak untuk melisensikan karyanya? Atau apakah menurut Anda lisensi MIT gagal melakukan ini atau tidak bermaksud?
David Schwartz
1
@ David: Anda sepertinya tidak mengerti apa artinya "mensublisensikan".
vartec
1
@ vartec: Tautan ke sumber yang menjelaskannya akan bagus, karena saya pikir Anda tidak mengerti apa artinya.
David Schwartz
7
Lisensi MIT memiliki bagian ini: "Pemberitahuan hak cipta di atas dan pemberitahuan izin ini akan dimasukkan dalam semua salinan atau bagian substansial Perangkat Lunak." Itu berarti setiap garpu harus tersedia di bawah lisensi MIT. Perubahan bisa dicantumkan sebagai GPL. Garpu dapat didaftar sebagai GPL + MIT. Tetapi garpu tidak dapat didaftar sebagai GPL saja - itu adalah pelanggaran yang jelas terhadap lisensi MIT.
Jonathan Vanasco
26

Iya. Tetapi efeknya mungkin bukan apa yang Anda pikirkan.

Lisensi MIT mencakup semua hak yang diberikan GPL dan banyak lagi. Dan sementara orang yang menerima distribusi Anda hanya menerima lisensi GPL untuk elemen yang Anda tambahkan, mereka masih menerima lisensi MIT (dari penulis asli, bukan dari Anda) untuk elemen apa pun yang terdapat dalam karya yang ditawarkan penulis di bawah lisensi itu.

Mereka mungkin tidak mengetahui hal ini, dan sejauh yang saya tahu, tidak ada hukum yang mewajibkan Anda untuk memberi tahu mereka. Tetapi jika mereka "melanggar" lisensi GPL sehubungan dengan ekspresi terlindungi yang terkandung dalam karya yang tidak Anda buat (atau yang tidak dikontribusikan oleh orang lain untuk rilis khusus-GPL), mereka tidak melanggar lisensi atau hak cipta Anda. (Sebenarnya, itu seharusnya agak jelas - Anda hanya memegang hak cipta untuk ekspresi yang Anda tulis.)

Jadi, Anda belum mengonversi elemen yang dapat dilindungi hak cipta dari lisensi MIT ke lisensi GPL. Anda cukup menambahkan yang baru yang hanya ditawarkan di bawah lisensi GPL dan merilis elemen dalam karya campuran / gabungan.

David Schwartz
sumber
jadi dalam praktiknya, saya akan melakukan ini: salin proyek MIT, ganti semuanya MIT dengan GPL (jadi tidak ada jejak yang tersisa dari proyek yang menjadi MIT), dan kemudian tautkan ke proyek MIT asli di beberapa tempat penting (tidak setiap file sumber), menyebutkan bahwa proyek-dasar tersedia di bawah MIT. apakah itu boleh / legal (mengingat saya menyimpan pernyataan pemilik hak cipta asli)?
hoijui
1
@hoijui Anda harus membiarkan semua header lisensi MIT dan pemberitahuan izin tetap utuh dan memasukkannya ke proyek baru Anda. Dan kecuali niat Anda untuk menipu, saya tidak melihat mengapa Anda akan mengganti semua menyebutkan "MIT". Itu tidak akan mengubah apa pun, bagian yang Anda ambil masih akan dilisensikan MIT. Cukup tambahkan tajuk lisensi GPL Anda sendiri di bawahnya, itu akan berlaku untuk semua perubahan yang dapat dilindungi hak cipta (yaitu bukan hanya mengubah nama variabel) yang Anda buat ke kode sumber. BTW inilah mengapa sebagian besar proyek memiliki header hak cipta di setiap file.
jmiserez
@ jmiserez ok. jadi mari kita lihat satu file proyek saya kemudian: saya meninggalkan header MIT, membuat beberapa perubahan dan menambahkan header GPL (karena saya ingin perubahan saya hanya tersedia di bawah GPL). sekarang pihak ketiga yang melakukan file saya harus menghormati MIT dan GPL? saya belum pernah melihat file dengan dua header lisensi, dan saya akan berpikir, kebanyakan orang hanya akan memilih lisensi yang mereka suka, karena mereka tidak tahu apa cara yang benar secara hukum. juga, mengapa saya harus memasukkan MIT, jika dengan menghormati GPL, seseorang secara otomatis juga menghormati MIT?
hoijui
@hoijui Semua hak yang Anda miliki di bawah lisensi MIT datang dengan batasan “Pemberitahuan hak cipta di atas dan pemberitahuan izin ini akan dimasukkan dalam semua salinan atau bagian penting Perangkat Lunak.” Tetapi jujur ​​saya tidak yakin apakah Anda perlu menyimpan semua pemberitahuan, atau hanya satu, IANAL. Tapi saya yakin Anda harus menyertakan pemberitahuan di suatu tempat. Jika tidak, Anda tidak akan lagi mematuhi lisensi MIT, yang berarti Anda akan kehilangan semua hak untuk menggunakan kode dalam proyek Anda. FYI kernel Linux memiliki file dengan banyak lisensi, mereka menggunakan header SPDX
jmiserez
1
Betapa menyedihkan bahwa seseorang ingin mencoba kode GPL yang dibangun di atas lisensi MIT. Tampaknya bertentangan dengan semua yang diperjuangkan lisensi MIT.
Andrew T Finnell
8

Tidak ada yang ditambahkan ke penjelasan dalam jawaban yang sudah diberikan, tetapi di sini ada instruksi untuk cara membentuk header file sumber Anda ( sumber ):

2.2 Menambahkan modifikasi GPL ke file berlisensi permisif

Kasus yang lebih rumit terjadi ketika pengembang membuat perubahan yang dapat dilindungi hak cipta ke file berlisensi permisif yang dimasukkan pengembang ke dalam program GPL. Pengembang dalam situasi ini biasanya menerapkan GPL pada modifikasi mereka. (Namun, pengembang dimungkinkan untuk berkontribusi kode baru di bawah persyaratan permisif, seperti lisensi permisif yang mengatur file yang tidak dimodifikasi. Kami membahas kasus itu di § 2.3.)

Meskipun lisensi permisif proyek eksternal memberikan izin hukum untuk memasukkan kode dari proyek tersebut ke proyek GPL, pengembang proyek GPL tetap harus mematuhi persyaratan pelestarian pemberitahuan dalam lisensi permisif. Dalam proyek yang menggunakan metode file per file, pengembang yang membuat modifikasi yang dapat hak cipta untuk file berlisensi permisif harus menempatkan pemberitahuan hak cipta baru dan pemberitahuan izin di atas yang sudah ada dan harus menjelaskan bahwa pengembang telah memodifikasi file. Bagian atas file kemudian akan muncul sebagai berikut:

/*  
 * Copyright (c) 2007  GPL Project Developer Who Made Changes   
 *  
 *  This file is free software: you may copy, redistribute and/or modify it  
 *  under the terms of the GNU General Public License as published by the  
 *  Free Software Foundation, either version 2 of the License, or (at your  
 *  option) any later version.  
 *  
 *  This file is distributed in the hope that it will be useful, but  
 *  WITHOUT ANY WARRANTY; without even the implied warranty of  
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  
 *  General Public License for more details.  
 *  
 *  You should have received a copy of the GNU General Public License  
 *  along with this program.  If not, see .  
 *  
 * This file incorporates work covered by the following copyright and  
 * permission notice:  
 *  
 *     Copyright (c) YEARS_LIST, Permissive Contributor1   
 *     Copyright (c) YEARS_LIST, Permissive Contributor2   
 *  
 *     Permission to use, copy, modify, and/or distribute this software  
 *     for any purpose with or without fee is hereby granted, provided  
 *     that the above copyright notice and this permission notice appear  
 *     in all copies.  
 *  
 *     THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL  
 *     WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED  
 *     WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE  
 *     AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR  
 *     CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS  
 *     OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,  
 *     NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN  
 *     CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.  
 */

Sangat penting bahwa pengembang menjaga seluruh pemberitahuan hak cipta, pemberitahuan izin, dan penafian garansi seperti yang muncul dalam kode asli, seperti yang disyaratkan oleh lisensi permisif. Kami kadang-kadang melihat pemberitahuan GPL dicampur dengan pemberitahuan lisensi permisif — praktik membingungkan yang mengaburkan asal-usul kode dan izin yang diberikan oleh berbagai pemegang hak cipta yang tercantum dalam pemberitahuan. Ketika pemegang hak cipta yang berbeda telah merilis kontribusi mereka di bawah ketentuan yang berbeda, persyaratan yang masing-masing telah ditempatkan pada kontribusi khususnya harus ditentukan. Kami menyarankan untuk membuat pemisahan yang jelas dan menggunakan lekukan, seperti pada contoh di atas.

Cara pengorganisasian pemberitahuan dalam file ini membuatnya nyaman bagi pengembang untuk memilih apakah akan berkontribusi di bawah persyaratan yang diizinkan atau berdasarkan GPL. Jika mereka ingin membuat kontribusi mereka tersedia di bawah persyaratan yang diperbolehkan, mereka dapat menambahkan pemberitahuan hak cipta mereka ke grup yang lebih rendah. Jika mereka ingin berkontribusi di bawah GPL, mereka dapat menambahkan pemberitahuan hak cipta mereka di bagian atas. Perhatikan, bagaimanapun, bahwa dalam file sumber tunggal biasanya sangat sulit, dan seringkali sama sekali tidak layak, untuk menentukan bagian mana dari file seperti itu yang dicakup oleh ketentuan yang diperbolehkan. Jika tujuannya adalah untuk membuat kode tambahan hanya tersedia di bawah syarat permisif, metode yang dijelaskan dalam § 2.3 harus digunakan.

hoijui
sumber