ใบอนุญาต MIT เทียบกับ GPL [ปิด]


122

ใบอนุญาต MIT เข้ากันได้กับ GPL ใบอนุญาต GPL เข้ากันได้กับ MIT หรือไม่ กล่าวคือฉันสามารถใส่รหัสที่ได้รับอนุญาตจาก MIT ในผลิตภัณฑ์ที่ได้รับใบอนุญาต GPL แต่ฉันสามารถใส่รหัสที่ได้รับอนุญาต GPL ในผลิตภัณฑ์ที่ได้รับอนุญาตจาก MIT ได้หรือไม่

สำหรับฉันแล้วความแตกต่างที่สำคัญระหว่างใบอนุญาต MIT และ GPL คือ MIT ไม่จำเป็นต้องมีการแก้ไขแบบโอเพ่นซอร์สในขณะที่ GPL ทำ ถูกต้องหรือไม่ GPL มีข้อ จำกัด มากกว่าใบอนุญาต MIT หรือไม่?


1
en.wikipedia.org/wiki/MIT_License ใบอนุญาตยังรองรับ GPL ซึ่งหมายความว่า ...
Michael Petrotta

คำตอบ:


76

สำหรับฉันแล้วความแตกต่างที่สำคัญระหว่างใบอนุญาต MIT และ GPL คือ MIT ไม่จำเป็นต้องมีการแก้ไขแบบโอเพ่นซอร์สในขณะที่ GPL ทำ

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

ความแตกต่างกับ MIT ก็คือแม้ว่าคุณจะแจกจ่ายรหัสที่เป็นกรรมสิทธิ์ของคุณซึ่งใช้รหัสที่ได้รับอนุญาตจาก MIT แต่คุณไม่จำเป็นต้องสร้างรหัสแบบโอเพนซอร์ส คุณสามารถแจกจ่ายเป็นแอปปิดที่มีการเข้ารหัสรหัสหรือเป็นไบนารี รวมถึงรหัสที่ได้รับอนุญาตจาก MIT สามารถเข้ารหัสได้ตราบเท่าที่มีการแจ้งเตือนใบอนุญาตของ MIT

GPL มีข้อ จำกัด มากกว่าใบอนุญาต MIT หรือไม่?

ใช่มากดังนั้น


16
โปรดทราบว่า GPL ไม่ได้สร้างซอฟต์แวร์ "โอเพนซอร์ส" ซอฟต์แวร์ภายใต้ GPL กลายเป็นฟรี (เช่นเดียวกับการปกป้องเสรีภาพของผู้ใช้) ซอฟต์แวร์เสรีเป็นการเคลื่อนไหวที่เก่าแก่และมีความหมายมากกว่าสิ่งที่เปิดกว้าง ต่อไปนี้เป็นบทความเกี่ยวกับความแตกต่าง: gnu.org/philosophy/open-source-misses-the-point.html ขอบคุณ
Jorge Orpinel

11
ด้วยเหตุผลเดียวกันเราอาจโต้แย้งว่า MIT มีข้อ จำกัด มากกว่าเนื่องจากไม่ได้ปกป้องเสรีภาพทั้งหมดของผู้ใช้และอาจนำไปสู่การแปรรูปซอฟต์แวร์ (= การ จำกัด และการสูญเสียการควบคุมโดยผู้ใช้) ขอบคุณอีกครั้ง
Jorge Orpinel

3
@tcurdt ทำไมที่นี่ไม่เป็น "สถานที่ที่เหมาะสม" ในการพูดถึงเสรีภาพ? ทำไมต้องเซ็นเซอร์ตัวเอง? และไม่น่าเสียดายที่นั่นไม่ใช่สิ่งที่ 'ฟรี' หมายถึง ไม่ได้ 'เปิด' หมายความว่า เพียงเพื่อชี้แจงว่าทั้งใบอนุญาต MIT หรือ GPL ไม่อนุญาตให้คุณทำ "อะไรกับมัน" ได้ เฉพาะรหัสที่ไม่มีใบอนุญาตเท่านั้นที่สามารถอยู่ในหมวดหมู่นั้นได้ Cheers
Jorge Orpinel

3
ผิดครั้งนี้เป็นสิ่งที่ StackOverflow ควรจะเป็นสำหรับstackoverflow.com/help/on-topic มีคนคิดว่าเรื่องนี้นอกประเด็นไม่ได้ทำให้เป็นเช่นนั้น ไม่ว่าฉันจะมีเสรีภาพในการแสดงออกและนี่ก็เป็นพื้นที่สาธารณะดังนั้น ... ใช่ คุณไม่สามารถจัดการกับความผิด ในความเป็นจริงฉันพยายามช่วยคุณและผู้อ่านคนอื่น ๆ ถ้าทำได้ อย่างไรก็ตามขอให้โชคดี
Jorge Orpinel

8
@JorgeOrpinel "เฉพาะรหัสที่ไม่มีใบอนุญาตเท่านั้นที่สามารถอยู่ในหมวดหมู่นั้นได้" นั่นผิดมากรหัสที่ไม่มีใบอนุญาตคือ PROPRIETARY / "สงวนลิขสิทธิ์" หากคุณไปรอบ ๆ และแจกจ่ายรหัสที่คนอื่นสร้างขึ้นโดยไม่มีใบอนุญาตคุณจะเสี่ยงต่อปัญหาทางกฎหมายมากมาย คุณบอกว่าคุณกำลังพยายาม "ช่วยคุณและผู้อ่านคนอื่น ๆ " แต่การที่ผู้อ่านถูกฟ้องร้องนั้นไม่เป็นประโยชน์อย่างแท้จริง แค่ FYI
อัฒภาค

45

ฉันสามารถใส่รหัสลิขสิทธิ์ GPL ในผลิตภัณฑ์ลิขสิทธิ์ของ MIT ได้หรือไม่

คุณสามารถ. GPL เป็นซอฟต์แวร์ฟรีเช่นเดียวกับ MIT คือใบอนุญาตทั้งสองไม่ได้ จำกัด ให้คุณนำรหัสมารวมกันโดยที่ "รวม" เป็นแบบสองทางเสมอ

ในลิขสิทธิ์สำหรับงานรวมกัน (ซึ่งเป็นผลงานตั้งแต่สองชิ้นขึ้นไปรวมกันเป็นผลงาน) จะไม่สร้างความแตกต่างมากนักหากผลงานชิ้นนั้น "ใหญ่" กว่างานอื่นหรือไม่

ดังนั้นหากคุณใส่รหัสลิขสิทธิ์ GPL ในผลิตภัณฑ์ที่ได้รับอนุญาตจาก MIT คุณจะต้องรวมผลิตภัณฑ์ที่ได้รับอนุญาตของ MIT ไว้ในรหัสลิขสิทธิ์ GPL ด้วย

ตามความเห็นที่สองOSI ระบุเกณฑ์ต่อไปนี้ (โดยละเอียดเพิ่มเติม)สำหรับทั้งใบอนุญาต (MIT และ GPL):

  1. แจกจ่ายฟรี
  2. รหัสแหล่งที่มา
  3. ผลงานที่ได้รับ
  4. ความสมบูรณ์ของซอร์สโค้ดของผู้แต่ง
  5. ไม่มีการเลือกปฏิบัติต่อบุคคลหรือกลุ่ม
  6. ไม่มีการเลือกปฏิบัติต่อเขตของความพยายาม
  7. การแจกจ่ายใบอนุญาต
  8. ใบอนุญาตต้องไม่เฉพาะเจาะจงกับผลิตภัณฑ์
  9. ใบอนุญาตต้องไม่ จำกัด ซอฟต์แวร์อื่น ๆ
  10. ใบอนุญาตต้องเป็นเทคโนโลยีที่เป็นกลาง

ทั้งสองอย่างอนุญาตให้สร้างผลงานรวมกันซึ่งเป็นสิ่งที่คุณร้องขอ

หากรวมผลงานทั้งสองเข้าด้วยกันจะถือว่าเป็นอนุพันธ์ก็จะไม่ถูก จำกัด โดยใบอนุญาตทั้งสอง

และใบอนุญาตทั้งสองไม่ จำกัด เฉพาะการเผยแพร่ซอฟต์แวร์

สำหรับฉันแล้วความแตกต่างที่สำคัญระหว่างใบอนุญาต MIT และ GPL คือ MIT ไม่จำเป็นต้องมีการแก้ไขแบบโอเพ่นซอร์สในขณะที่ GPL ทำ

GPL ไม่ต้องการให้คุณปล่อยการปรับเปลี่ยนของคุณเพียงเพราะคุณทำขึ้น นั่นไม่แม่นยำ

คุณอาจผสมสิ่งนี้กับการจัดจำหน่ายซอฟต์แวร์ภายใต้ GPL ซึ่งไม่ใช่สิ่งที่คุณถามโดยตรง

ถูกต้อง - GPL มีข้อ จำกัด มากกว่าใบอนุญาต MIT หรือไม่?

นี่คือวิธีที่ฉันเข้าใจ:

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

"จำกัด " หรือ "เข้มงวดกว่า" / "จำกัด น้อยกว่า" มากขึ้นอยู่กับมุมมอง สำหรับผู้ใช้ซอฟต์แวร์ MIT อาจส่งผลให้ซอฟต์แวร์มีข้อ จำกัด มากกว่าซอฟต์แวร์ที่มีอยู่ภายใต้ GPL แม้บางคนเรียกว่า GPL มีข้อ จำกัด มากกว่าในปัจจุบัน ผู้ใช้รายนั้นจะเรียก MIT ที่เข้มงวดกว่า เป็นเพียงเรื่องส่วนตัวที่จะพูดและคนอื่นจะให้คำตอบที่แตกต่างกัน

เนื่องจากเป็นเพียงเรื่องส่วนตัวที่จะพูดถึงข้อ จำกัด ของใบอนุญาตที่แตกต่างกันคุณควรคิดถึงสิ่งที่คุณต้องการจะบรรลุแทน:

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

ตราบใดที่คุณเป็นผู้เขียนคุณก็สามารถตัดสินใจได้

ดังนั้นบุคคลที่เข้มงวดที่สุดเท่าที่เคยมีมาคือผู้เขียนไม่ว่าใครก็ตามจะเลือกใช้ใบอนุญาตใด;)


1
"รหัส MIT ภายในแพ็กเกจจะยังคงมีอยู่ภายใต้ MIT" ฉันไม่แน่ใจอย่างสมบูรณ์ โครงการ GPL + MIT ควรเปิดในโครงการโอเพ่นซอร์สรวมถึงส่วน MIT สำหรับเรื่องอื่น ๆ LGPL จะรบกวนน้อยกว่าสำหรับทั้งโครงการ
magallanes

13
แม้ว่าคุณจะชี้แจงในคำตอบของคุณในภายหลัง แต่ก็เป็นเรื่องที่ทำให้เข้าใจผิดอย่างมากที่จะเริ่มต้นด้วยการบอกว่า "คุณสามารถ" รวมรหัสที่ได้รับอนุญาต GPL ในโครงการที่ได้รับอนุญาตจาก MIT โครงการที่ได้รับใบอนุญาตจาก MIT เดิมไม่สามารถแจกจ่ายโดยรวมภายใต้ใบอนุญาต MIT ได้อีกต่อไปเมื่อมีรหัสที่ใช้ได้เฉพาะภายใต้ GPL
antinome

3
นอกจากนี้ยังทำให้เข้าใจผิดที่อ้างว่าการ จำกัด เป็นเรื่องส่วนตัว เป็นคำถามที่สมเหตุสมผลและไม่เกี่ยวกับอัตนัยที่จะถามว่า "ฉันจะดำเนินการอย่างไรกับไฟล์เหล่านี้ที่ฉันได้รับ" ภายใต้ GPL ชุดของการกระทำนั้นเป็นส่วนย่อยที่เหมาะสมของสิ่งที่การกระทำเหล่านั้นจะอยู่ภายใต้ MIT
antinome

1
@hakra: การรวมรหัสที่ได้รับอนุญาต GPL ในโครงการที่ได้รับอนุญาตจาก MIT เป็นไปไม่ได้เนื่องจากผลลัพธ์ทั้งหมดไม่ได้รับอนุญาตจาก MIT อีกต่อไปแม้ว่าคุณจะไม่ได้แจกจ่ายก็ตาม (ถ้าเป็นเช่นนั้นเงื่อนไขของใบอนุญาต MIT จะอนุญาตให้คุณแจกจ่ายได้!)
antinome

9
tl; dr: แอปที่ได้รับอนุญาตจาก MIT สามารถใส่รหัส GPL ได้ แต่แอปที่ได้นั้นไม่ได้รับอนุญาตจาก MIT
antinome

16

คุณถูกต้องที่ GPL มีข้อ จำกัด มากกว่าใบอนุญาต MIT

คุณไม่สามารถใส่รหัส GPL ในผลิตภัณฑ์ที่ได้รับอนุญาตจาก MIT หากคุณแจกจ่ายงานรวมที่รวมรหัส GPL และ MIT (ยกเว้นในบางสถานการณ์เช่น 'การรวมเพียง') การแจกจ่ายนั้นจะต้องสอดคล้องกับ GPL

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

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


3
เว้นแต่โครงการจะอยู่ภายใต้ใบอนุญาตคู่ตัวอย่างเช่น jquery
buggedcom

7
@buggedcom - คุณสามารถใช้ใบอนุญาตแบบคู่กับชิ้นส่วนที่อยู่ภายใต้ใบอนุญาต MIT ได้ แต่คุณไม่สามารถใช้ไลบรารี MIT / GPL แบบรวมกันได้ - ต้องได้รับอนุญาตภายใต้ GPL เท่านั้น (คุณไม่สามารถนำชิ้นส่วนที่ได้รับใบอนุญาต GPL และออกใบอนุญาตใหม่ภายใต้ใบอนุญาต MIT ได้เนื่องจากขัดต่อข้อกำหนด GPL) ในกรณีของ jQuery เจ้าของลิขสิทธิ์ของโค้ดได้เผยแพร่โค้ดดังกล่าวภายใต้ใบอนุญาตคู่ดังนั้นจึงไม่ใช่ปัญหา แต่ถ้าพวกเขา "ยืม" รหัส GPL บางส่วนจากที่อื่นพวกเขาจะไม่สามารถให้ใบอนุญาต MIT ทำงานร่วมกันได้อีกต่อไป .
Mark H

AFAIK นั่นไม่จริงเลย ตาม FSF GPL เข้ากันได้กับใบอนุญาต MIT [1] น่าเสียดายที่ไม่ได้เปลี่ยนความจริงที่ว่าโครงการนี้ไม่ได้รับการคุ้มครองอย่างสมบูรณ์ภายใต้ใบอนุญาต MIT อีกต่อไป ... ซึ่งเป็นสิ่งที่ผู้คนมักจะคาดหวัง คุณจะไม่สามารถใช้โปรเจ็กต์โดยรวมในบริบทเชิงพาณิชย์ได้อีกต่อไปโดยไม่ต้องปล่อยโค้ด เพื่อหลีกเลี่ยงความสับสนนี้จะเป็นการดีกว่าที่จะไม่รวมรหัส GPL ในโครงการที่ได้รับอนุญาตจาก MIT ที่คุณทำไม่ได้ถือว่าผิด [1] gnu.org/licenses/license-list.html#SoftwareLicenses
tcurdt

... แต่ฉันเดาว่ามันขึ้นอยู่กับสิ่งที่คุณกำหนดว่าเป็น "ผลิตภัณฑ์"
tcurdt

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

5

IANAL แต่อย่างที่เห็น ....

ในขณะที่คุณสามารถรวมรหัส GPL และ MIT ได้ แต่ GPL ก็กำลังจาง ซึ่งหมายความว่าแพคเกจโดยรวมได้รับข้อ จำกัด ของ GPL เนื่องจากมีข้อ จำกัด มากขึ้นคุณจึงไม่สามารถใช้ในซอฟต์แวร์เชิงพาณิชย์ (หรือแหล่งปิด) ได้อีกต่อไป ซึ่งหมายความว่าหากคุณมีโครงการ MIT / BSD / ASL คุณจะไม่ต้องการเพิ่มการอ้างอิงให้กับรหัส GPL

การเพิ่มการพึ่งพา GPL ไม่ได้เปลี่ยนใบอนุญาตของรหัสของคุณ แต่จะ จำกัด สิ่งที่ผู้คนสามารถทำกับ Artifact ของโครงการของคุณได้ นี่คือสาเหตุที่ ASF ไม่อนุญาตให้อ้างอิงกับรหัส GPL สำหรับโครงการของตน

http://www.apache.org/licenses/GPL-compatibility.html


1
+1 ในความเป็นจริง Microsoft ระบุปัญหานี้ได้อย่างสมบูรณ์ GPL เป็นไวรัสเพราะเปลี่ยนทุกโครงการให้เป็นโอเพ่นซอร์ส
magallanes

10
มันไม่ได้เป็นปัญหา GPL เป็นไวรัสจากการออกแบบ มีวัตถุประสงค์เพื่อใช้โดยผู้ที่ต้องการให้รหัสของตนฟรีเพื่อให้ผู้อื่นใช้ตามที่ต้องการ แต่ยังกำหนดให้บุคคลอื่นที่เผยแพร่สำเนาของซอฟต์แวร์นั้นหรืออนุพันธ์เคารพผู้ใช้ในลักษณะเดียวกัน จีพีเป็นเรื่องของผู้ใช้ ไม่ได้เกี่ยวกับ บริษัท ที่เพิ่มผลกำไรสูงสุดผ่านการผูกขาดของรัฐดังนั้นความจริงที่ว่าการเกิดซ้ำนั้นแท้จริงแล้วคือความสวยงามและความแข็งแกร่งไม่ใช่ 'ปัญหา' ที่ Microsoft สามารถ 'ระบุได้อย่างสมบูรณ์แบบ' ไม่ต้องใช้ความเข้าใจเป็นพิเศษในการรับรู้ว่า GPL เป็นไวรัส ~ Wikipedia ก็เพียงพอแล้ว
Carl Smith
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.