คุณสามารถเปลี่ยนรหัสที่แจกจ่ายภายใต้ใบอนุญาต MIT และแจกจ่ายอีกครั้งภายใต้ใบอนุญาต GPL ได้หรือไม่ [ปิด]


57

เป็นไปได้หรือไม่ที่จะเปลี่ยนรหัสของปลั๊กอิน Chiliซึ่งมีการวางจำหน่ายล่าสุดในเดือนกรกฎาคม 2008 และได้รับใบอนุญาตภายใต้ใบอนุญาต MIT แล้วจะอนุญาตภายใต้ GPL หรือไม่

เท่าที่ฉันเห็นไม่มีข้อ จำกัด เกี่ยวกับรหัสใหม่ที่ได้รับใบอนุญาตภายใต้ใบอนุญาตเดียวกัน เป็นเช่นนั้นจริง ๆ หรือมีการเปลี่ยนแปลงจำนวนน้อยที่สุด

ในกรณีของฉันฉันจะเปลี่ยนปลั๊กอิน jQuery ในรหัส Javascript ปกติที่เรียกใช้ใน CMS สิ่งนี้หมายความว่าเหนือสิ่งอื่นใด:

  • รหัสจะไม่ใช้เนมสเปซ "ChiliBook"
  • ฟังก์ชั่นจะไม่ถูกเรียกใช้เป็น$($element).chili()แต่เป็นGlobalObject.ChiliHighlighter.process($jquery_element)โดยที่ "GlobalObject" เป็นวัตถุ JavaScript ที่ใช้จาก CMS
  • รหัสจะช่วยให้โมดูลอื่น ๆ ในการเปลี่ยนแปลงGlobalObject.ChiliHighlighterวัตถุเพื่อเพิ่มฟังก์ชั่นที่เรียกว่าเป็นทางเลือกจากGlobalObject.ChiliHighlighter.process()เมื่อพวกเขาถูกกำหนดไว้

เป็นทางเลือกเนื่องจากพื้นที่เก็บข้อมูลที่ฉันใช้อนุญาตให้ฉันรวมรหัสที่ไม่ได้รับอนุญาตภายใต้ GPL 2 หรือใบอนุญาตที่สูงกว่าเมื่อไม่ได้รับการบำรุงรักษารหัสอีกต่อไปจึงจะถือว่าปลั๊กอินไม่ได้รับการบำรุงรักษาอีกต่อไป


2
หากคุณต้องการคำตอบที่เชื่อถือได้จริงๆคุณควรปรึกษาทนายความ (ในเขตอำนาจศาลที่เกี่ยวข้องตัวอย่างเช่นคำตอบอาจแตกต่างจากอิตาลีมากกว่าในสหรัฐอเมริกา)
MarkJ

คำตอบ:


59

มันถูกกฎหมายในทางเทคนิค

ใบอนุญาต MIT (ชาวต่างชาติ) มีข้อ จำกัด เล็กน้อยสำหรับคุณ นี่เป็นส่วนย่อยของใบอนุญาต GPL ดังนั้นหากคุณใช้รหัสภายใต้ GPL และเก็บรักษาประกาศ MIT คุณจะต้องปฏิบัติตามเงื่อนไขของใบอนุญาต MIT และอาจแจกจ่ายรหัสนี้อย่างถูกกฎหมาย

โปรดทราบว่าคุณไม่สามารถอ้างสิทธิ์การเป็นเจ้าของลิขสิทธิ์ คุณจะต้องยอมรับลิขสิทธิ์ดั้งเดิม

[แก้ไข] บางคนดูเหมือนจะไม่เข้าใจว่า F / OSS ทำงานร่วมกับกฎหมายลิขสิทธิ์และใบอนุญาตอย่างไร ทุกอย่างเริ่มต้นด้วยลิขสิทธิ์หากเพียงเพราะเป็นค่าเริ่มต้น ภายใต้หลักคำสอนลิขสิทธิ์ผู้เขียนได้รับสิทธิ์ในการทำสำเนาของรหัสที่มา ภายใต้ใบอนุญาตของ MIT สิทธิ์นั้นจะมอบให้ฉันเช่นเดียวกับสิทธิ์ในการให้สิทธิ์แก่ผู้อื่นซ้ำ ๆ โปรดทราบว่าใบอนุญาต MIT ระบุสิทธิ์ในการอนุญาตช่วงอย่างชัดเจน พิเศษ:"the rights to use, copy, modify, merge, publish,distribute, sublicense, and/or sell"

เมื่อฉันรหัสใบอนุญาตฉันไม่สามารถให้สิทธิ์ที่ฉันไม่ได้มีในตอนแรก ในกรณีของจีพีผมอย่างชัดเจนห้ามไม่ให้ใบอนุญาตสิทธิเพียงบางส่วนเท่านั้น แต่ในทางกฎหมายหรือในใบอนุญาต MIT ไม่มีฉันมีภาระผูกพันในการอนุญาตให้ใช้สิทธิ์ทั้งหมดในภาพรวม

ดังนั้นใบอนุญาต MIT ให้สิทธิ์ฉันอย่างชัดแจ้งกับสิทธิ์การใช้งานใบอนุญาตและกฎหมายหรือใบอนุญาต MIT ไม่อนุญาตให้ฉันอนุญาตให้ใช้สิทธิ์ช่วงต่อสิทธิ์บางประการเท่านั้น นอกจากนี้ไม่ จำกัด รูปแบบที่ฉันทำ ดังนั้นฉันมีสิทธิ์ปฏิเสธไม่ได้ที่จะให้สิทธิ์การใช้งานใบอนุญาต GPL ในรหัสนั้น


6
@vartec: คุณไม่ได้เปลี่ยนใบอนุญาตตามที่คุณได้รับรหัส คุณกำลังสร้างใบอนุญาตใหม่ระหว่างคุณและผู้รับใหม่และสามารถมีข้อกำหนดใดก็ได้ที่คุณต้องการ (ผู้รับใหม่อาจได้รับสิทธิ์เพิ่มเติมภายใต้สิทธิ์ใช้งานดั้งเดิม แต่จะไม่มีผลต่อสิทธิ์ใช้งานใหม่) บรรทัดฐานสำหรับผู้ได้รับอนุญาตช่วงจะให้สิทธิ์บางส่วนในสิทธิ์ใช้งานดั้งเดิม ตัวอย่างเช่นใบอนุญาตช่วงไม่ค่อยมีสิทธิ์ในการอนุญาตช่วงซึ่งใบอนุญาตเดิมจะต้องรวมไว้เพื่อให้มีใบอนุญาตช่วง
David Schwartz

3
@vartec: โดยพื้นฐานแล้วคุณกำลังโต้เถียงกันว่าใบอนุญาตลิขสิทธิ์ที่ให้สิทธิ์การอนุญาตช่วงสิทธิ์อย่างใดอย่างหนึ่งจริง ๆ แล้วไม่ให้สิทธิ์การอนุญาตช่วง ฉันไม่แน่ใจว่าคุณกำลังโต้แย้งเรื่องนี้พื้นฐานอะไร คุณมีการอ้างอิงหน่วยงานด้านกฎหมายที่เกี่ยวข้องหรือไม่? คุณกำลังบอกว่าเจ้าของลิขสิทธิ์ไม่สามารถให้สิทธิ์ผู้อื่นในการอนุญาตงานของเขาได้หรือไม่? หรือคุณคิดว่าใบอนุญาต MIT ไม่สามารถทำเช่นนี้หรือไม่ตั้งใจ
David Schwartz

1
@David: คุณดูเหมือนจะไม่เข้าใจความหมายของ "การอนุญาตช่วง"
vartec

1
@vartec: ลิงก์ไปยังแหล่งที่อธิบายได้ดีเพราะฉันคิดว่าคุณไม่เข้าใจความหมาย
David Schwartz

7
สิทธิ์การใช้งานของ MIT มีอยู่ในบิตนี้: "ประกาศลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือบางส่วนที่สำคัญของซอฟต์แวร์" นั่นหมายความว่าจะต้องมีส้อมใด ๆ ภายใต้ใบอนุญาต MIT การเปลี่ยนแปลงอาจถูกระบุว่าเป็น GPL ทางแยกอาจถูกระบุว่าเป็น GPL + MIT แต่ทางแยกไม่สามารถแสดงเป็น GPL เท่านั้น - นั่นเป็นการละเมิดใบอนุญาต MIT อย่างชัดเจน
Jonathan Vanasco

26

ใช่. แต่เอฟเฟกต์อาจไม่ใช่สิ่งที่คุณคิด

สิทธิ์การใช้งาน MIT รวมถึงสิทธิ์ทั้งหมดที่ GPL ให้และอื่น ๆ และในขณะที่ผู้ที่ได้รับการกระจายของคุณจะได้รับใบอนุญาต GPL สำหรับองค์ประกอบที่คุณเพิ่มพวกเขายังคงได้รับใบอนุญาต MIT (จากผู้เขียนต้นฉบับไม่ใช่จากคุณ) ไปยังองค์ประกอบใด ๆ ที่มีอยู่ในงานที่ผู้เขียนเสนอภายใต้ใบอนุญาตนั้น

พวกเขาอาจไม่รู้เรื่องนี้และเท่าที่ฉันรู้ไม่มีกฎหมายบังคับให้คุณต้องบอกพวกเขา แต่หากพวกเขา "ละเมิด" ใบอนุญาต GPL ที่เกี่ยวข้องกับการแสดงออกที่ป้องกันได้ในงานที่คุณไม่ได้เป็นผู้เขียน (หรือผู้อื่นไม่ได้มีส่วนร่วมในการเปิดตัว GPL เท่านั้น) พวกเขาจะไม่ละเมิดใบอนุญาตหรือลิขสิทธิ์ของคุณ (อันที่จริงแล้วควรจะค่อนข้างชัดเจน - คุณถือลิขสิทธิ์ในนิพจน์ที่คุณเขียนเท่านั้น)

ดังนั้นคุณจึงไม่ได้แปลงองค์ประกอบที่มีลิขสิทธิ์จากใบอนุญาต MIT เป็นใบอนุญาต GPL คุณเพิ่งเพิ่มรายการใหม่ซึ่งมีให้ภายใต้สิทธิ์การใช้งาน GPL และเผยแพร่องค์ประกอบในงานผสม / ผสม


ดังนั้นในทางปฏิบัติฉันจะทำสิ่งนี้: คัดลอกโครงการ MIT แทนที่ทุกสิ่ง MIT ด้วย GPL (ดังนั้นจึงไม่มีร่องรอยเหลืออยู่ของโครงการที่เคยเป็น MIT) จากนั้นเชื่อมโยงกับโครงการ MIT ดั้งเดิมในที่สำคัญบางแห่ง (ไม่ใช่ทุก ๆ แม้ว่าซอร์สไฟล์) จะกล่าวถึงว่าโครงการพื้นฐานพร้อมใช้งานภายใต้ MIT จะเป็นสิ่งที่ถูกต้อง / ถูกกฎหมาย (เนื่องจากฉันรักษาข้อความเจ้าของลิขสิทธิ์ดั้งเดิมไว้)
hoijui

1
@hoijui คุณต้องออกจากส่วนหัวใบอนุญาต MIT ทั้งหมดและประกาศการอนุญาตเหมือนเดิมและรวมไว้ในโครงการใหม่ของคุณ และถ้าคุณไม่ตั้งใจจะหลอกลวงฉันไม่เห็นว่าทำไมคุณถึงมาแทนที่คำว่า "MIT" ทั้งหมด มันจะไม่เปลี่ยนแปลงอะไรเลยชิ้นส่วนที่คุณถ่ายจะยังคงได้รับอนุญาตจาก MIT เพียงเพิ่มส่วนหัวของใบอนุญาต GPL ของคุณด้านล่างมันจะถูกต้องสำหรับการเปลี่ยนแปลงลิขสิทธิ์ทั้งหมด (เช่นไม่ใช่แค่การเปลี่ยนชื่อตัวแปร) ที่คุณทำกับซอร์สโค้ด BTW นี่คือเหตุผลที่โครงการส่วนใหญ่มีส่วนหัวลิขสิทธิ์ในทุกไฟล์
jmiserez

@jmiserez ตกลง ดังนั้นให้ดูที่หนึ่งไฟล์ของโครงการของฉันแล้ว: ฉันออกจากส่วนหัว MIT ทำการเปลี่ยนแปลงบางอย่างและเพิ่มส่วนหัว GPL (เพราะฉันต้องการให้การเปลี่ยนแปลงของฉันพร้อมใช้งานภายใต้ GPL เท่านั้น) ตอนนี้บุคคลที่สามที่ส่งไฟล์ของฉันจะต้องให้เกียรติทั้ง MIT และ GPL? ฉันไม่เคยเห็นไฟล์ที่มีสองหัวใบอนุญาตและฉันคิดว่าคนส่วนใหญ่จะเลือกใบอนุญาตที่พวกเขาชอบเพราะพวกเขาไม่รู้ว่าวิธีที่ถูกต้องตามกฎหมายคืออะไร ทำไมฉันต้องใส่ MIT ด้วยถ้าให้เกียรติ GPL คนหนึ่งก็ให้เกียรติ MIT โดยอัตโนมัติด้วย?
hoijui

@hoijui สิทธิ์ใด ๆ ที่คุณมีภายใต้ใบอนุญาต MIT มาพร้อมกับข้อ จำกัด "ประกาศลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือบางส่วนที่สำคัญของซอฟต์แวร์" แต่โดยสุจริตฉันไม่แน่ใจว่าคุณต้องเก็บทั้งหมดหรือไม่ จากประกาศหรือเพียงหนึ่งฉบับ IANAL แต่ฉันแน่ใจว่าคุณต้องมีการแจ้งให้ทราบล่วงหน้า หากคุณไม่ทำเช่นนั้นคุณจะไม่ปฏิบัติตามใบอนุญาต MIT อีกต่อไปซึ่งหมายความว่าคุณสูญเสียสิทธิ์ในการใช้รหัสในโครงการของคุณ FYI เคอร์เนล Linux มีไฟล์ที่มีหลายลิขสิทธิ์พวกเขาใช้ส่วนหัวSPDX
jmiserez

1
มันช่างน่าเศร้าเหลือเกินที่มีคนต้องการลองใช้รหัส GPL ที่สร้างจากใบอนุญาต MIT ดูเหมือนว่าจะขัดกับทุกสิ่งที่ MIT ให้การรับรอง
Andrew T Finnell

8

ไม่มีอะไรเพิ่มให้กับคำอธิบายในคำตอบที่ได้รับไปแล้ว แต่นี่เป็นคำแนะนำสำหรับการกำหนดรูปร่างส่วนหัวของไฟล์ต้นฉบับ ( แหล่งที่มา ):

2.2 การเพิ่มการแก้ไข GPL ในไฟล์ที่ได้รับอนุญาต

กรณีที่ซับซ้อนมากขึ้นเกิดขึ้นเมื่อผู้พัฒนาทำการเปลี่ยนแปลงลิขสิทธิ์ไฟล์ที่ได้รับอนุญาตให้ใช้ลิขสิทธิ์ที่นักพัฒนาซอฟต์แวร์ได้รวมไว้ในโปรแกรม GPL นักพัฒนาในสถานการณ์นี้มักใช้ GPL กับการดัดแปลงของพวกเขา (อย่างไรก็ตามเป็นไปได้สำหรับนักพัฒนาแทนการสนับสนุนรหัสใหม่ภายใต้เงื่อนไขที่อนุญาตเช่นสิทธิ์การใช้งานที่ได้รับอนุญาตซึ่งควบคุมไฟล์ที่ไม่ได้แก้ไขเราจะหารือเกี่ยวกับกรณีนี้ใน§ 2.3)

แม้ว่าใบอนุญาตอนุญาตของโครงการภายนอกให้สิทธิ์ทางกฎหมายในการรวมรหัสจากโครงการนั้นในโครงการ GPL แต่ผู้พัฒนาโครงการ GPL จะต้องปฏิบัติตามข้อกำหนดการเก็บรักษาประกาศในใบอนุญาตที่ได้รับอนุญาต ในโครงการที่ใช้วิธีการแบบไฟล์ต่อไฟล์นักพัฒนาที่ทำการแก้ไขลิขสิทธิ์ไฟล์ที่ได้รับอนุญาตควรมีการแจ้งเตือนลิขสิทธิ์ใหม่และแจ้งให้ทราบลิขสิทธิ์ใหม่ข้างต้นที่มีอยู่และควรชัดเจนว่านักพัฒนาได้แก้ไขไฟล์ ด้านบนของไฟล์จะปรากฏดังนี้:

/*  
 * 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.  
 */

เป็นสิ่งสำคัญมากที่ผู้พัฒนาต้องเก็บรักษาประกาศเกี่ยวกับลิขสิทธิ์ประกาศการอนุญาตและการปฏิเสธความรับผิดชอบตามที่ปรากฏในรหัสดั้งเดิมตามที่กำหนดไว้ในใบอนุญาต บางครั้งเราเห็นการแจ้งเตือน GPL ปะปนกับการอนุญาตให้ใช้สิทธิ์ซึ่งเป็นวิธีปฏิบัติที่ทำให้สับสนซึ่งบดบังทั้งที่มาของรหัสและการอนุญาตที่แม่นยำที่ได้รับจากผู้ถือลิขสิทธิ์ต่างๆที่ระบุไว้ในประกาศ เมื่อผู้ถือลิขสิทธิ์ที่แตกต่างกันออกผลงานของพวกเขาภายใต้เงื่อนไขที่ต่างกันควรระบุข้อกำหนดที่แต่ละคนมีส่วนร่วมไว้ในผลงานของเขา เราขอแนะนำให้ทำการแยกอย่างชัดเจนและใช้การเยื้องในตัวอย่างด้านบน

ลักษณะของการจัดระเบียบประกาศในไฟล์นี้ทำให้ผู้พัฒนาสามารถเลือกได้ว่าจะมีส่วนร่วมภายใต้เงื่อนไขที่อนุญาตหรือภายใต้ GPL หากพวกเขาต้องการให้มีส่วนร่วมของพวกเขาภายใต้เงื่อนไขที่อนุญาตพวกเขาสามารถเพิ่มประกาศลิขสิทธิ์ของพวกเขาไปยังกลุ่มที่ต่ำกว่า หากพวกเขาต้องการมีส่วนร่วมภายใต้ GPL พวกเขาสามารถเพิ่มประกาศลิขสิทธิ์ของพวกเขาที่ด้านบน อย่างไรก็ตามโปรดทราบว่าในไฟล์ต้นฉบับไฟล์เดียวมักจะเป็นเรื่องยากมากและมักจะเป็นไปไม่ได้อย่างสมบูรณ์ในการพิจารณาว่าส่วนใดของไฟล์ดังกล่าวถูกครอบคลุมโดยข้อกำหนดที่อนุญาต หากเป้าหมายคือการทำให้โค้ดเพิ่มเติมพร้อมใช้งานภายใต้ข้อกำหนดที่อนุญาตเท่านั้นควรใช้วิธีที่อธิบายใน§ 2.3

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.