ประกาศใบอนุญาตหลายใบในโครงการ GitHub


28

เป็นเวลาหลายปีที่ฉันเป็นแฟนตัวยงของการให้สิทธิ์ใช้งานในสิ่งที่แบ่งปันทางออนไลน์เพื่อให้ผู้อื่นสามารถระบุได้ง่ายขึ้นว่าพวกเขาสามารถนำสิ่งต่าง ๆ กลับมาใช้ใหม่ได้อย่างไร ก่อนที่ GitHub จะเริ่ม 'กด' ผู้ใช้อย่างเบา ๆ เพื่อรวมไฟล์ LICENSE กับ repos ของพวกเขาฉันไม่รู้จริง ๆ ว่าจะทำอย่างไรดีที่สุดด้วยรหัส - โดยเฉพาะอย่างยิ่งรหัสที่แชร์กับ GitHub! - แต่ฉันพยายามใช้ไฟล์ LICENSE ให้เป็นประโยชน์

ตอนนี้ฉันอยู่ในสถานการณ์ที่ฉันได้ทำงานในโครงการเล็ก ๆ กับคนอื่น ๆ ซึ่งต้องการใบอนุญาตหลายใบ (เนื่องจากรหัส & ไลบรารีของบุคคลที่สามรวมถึงไฟล์ที่ไม่ใช่รหัส) ในขณะที่คู่ของฉันไปเกี่ยวกับปัญหาค่อนข้าง 'สะเพร่า' - มันแนะนำให้ฉันเพียงแค่ใส่รหัสออนไลน์ตามที่เป็นอยู่ไม่มีใครจะดูแล '- ฉันอยากทำอย่างถูกต้อง ปัญหาคือ: ฉันไม่รู้ว่าควรจะกล่าวถึงใบอนุญาตหลายใบ (ต่างกัน) ใน GitHub อย่างไร

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

  1. สร้างไฟล์ LICENSE ไฟล์เดียวและใส่รายละเอียดของไลเซนส์ต่าง ๆ ทั้งหมดไว้ในนั้น ( คำถาม : พวกเขาควรจะเรียงตามลำดับที่เฉพาะเจาะจงหรือไม่ฉันจะเริ่มต้นไฟล์ด้วยการพูดถึงชื่อของใบอนุญาตทั้งหมดที่มีอยู่ภายในเพื่อภาพรวมที่ดีขึ้น)
  2. สร้างไฟล์หนึ่งใบอนุญาตต่อใบอนุญาตใช้ชื่อพวกเขาLICENSE.md, LICENSE.LibNameA.md, LICENSE.AssetsB.mdฯลฯ ตามที่แนะนำในคำตอบที่เชื่อมโยง ( คำถาม : การตั้งชื่อจะเป็นไปตามชื่อโครงการหรือไม่ไม่ใช่ชื่อใบอนุญาตหากฉันใช้ใบอนุญาตมากกว่าหนึ่งใบสำหรับวัสดุที่มีส่วนร่วมฉันจะพูดถึงพวกเขาทั้งหมดใน 'หลัก' LICENSE.mdหรือไม่ถ้าไม่ใช่ฉันจะทำอะไรแทน)
  3. สร้างไฟล์ LICENSE สองไฟล์ : หนึ่งรายการที่มีใบอนุญาตสำหรับเนื้อหา 'หลัก' เช่นรหัส / สินทรัพย์ทั้งหมดได้สร้างขึ้นเอง หนึ่งรายการสำหรับวัสดุของบุคคลที่สามทั้งหมด ( คำถามข้างต้น : มีรูปแบบการตั้งชื่อแบบใดแบบหนึ่งที่จะใช้และเรียงลำดับตามลำดับที่จะแสดงรายการวัสดุของบุคคลที่สามหรือไม่)

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


2
ดังนั้นให้มีไฟล์ README และหนึ่งไฟล์หรือมากกว่านั้น นี่ไม่ใช่วิทยาศาสตร์จรวด
Robert Harvey

4
เกี่ยวกับหน้าเชื่อมโยง: มันไม่มีส่วนเกี่ยวข้องกับการแจกจ่ายไฟล์ลิขสิทธิ์มันต้องเกี่ยวข้องกับ API การอนุญาต API ของ GitHub ซึ่งเป็นตัวกำหนด / รายงานกลับไปยังใบอนุญาตของ repo ขณะที่ฉันถามเกี่ยวกับการอนุญาตให้ใช้สิทธิ / การใช้ไฟล์ LICENSE ใน GitHub โดยเฉพาะไม่ใช่โอเพ่นซอร์สหรือ git โดยทั่วไปวิธีที่โครงการโอเพนซอร์สคือ 'การแสดงภาพ' ที่จะให้สิทธิ์ใช้งานในนั้นก็มีความเกี่ยวข้องเช่นกัน 'นี่ไม่ใช่วิทยาศาสตร์จรวด' ไม่มีประโยชน์อย่างยิ่ง btw., esp. ไม่ได้อยู่ในบริบทของคำถาม GitHub ที่เน้นของฉัน
Kay

2
ฉันอาจแนะนำให้ README ของคุณมีส่วนเกี่ยวกับการออกใบอนุญาตเพียงแค่ระบุว่ามีใบอนุญาตหลายใบและแจ้งให้ทราบถึงใบอนุญาตแต่ละใบชื่อไฟล์ LICENSE ที่อยู่ในนั้นคืออะไร?
Erik Eidt

3
@immibis ฉันรู้แล้วและมันก็ไม่ได้เป็นอย่างที่คำถามของฉันเป็น ฉันถามคำถามโดยเฉพาะเกี่ยวกับ 'วิธีใดที่เหมาะสมกับมนุษย์มากที่สุด' (บน: GitHub)
Kay

3
@immibis: "ไม่มีคอมไพเลอร์จะอ่าน" - ปัญหาคือการพูดอย่างเคร่งครัดนี้ไม่เป็นความจริงสำหรับ Github Github ใช้เครื่องมืออัตโนมัติในการพิจารณาใบอนุญาต "the" ที่ใช้กับเนื้อหาของที่เก็บ ชื่อของใบอนุญาตที่ได้รับการพิจารณาแล้วจะปรากฏในแถบชื่อเรื่องของพื้นที่เก็บข้อมูลพร้อมกับข้อมูลทั่วไปเพิ่มเติมที่ให้ผู้เข้าชมมีความประทับใจพื้นฐานของโครงการ (เช่นจำนวนผู้มีส่วนร่วมและการเผยแพร่)
OR Mapper

คำตอบ:


15

คุณสามารถใช้กลไกใด ๆ เพื่อรวมใบอนุญาตเหล่านั้นที่คุณต้องการตราบใดที่มันชัดเจนสำหรับผู้เข้าชมโครงการของคุณว่าใบอนุญาตใดสามารถใช้ได้กับส่วนใดของโครงการ

การตั้งค่าของฉันจะเป็น:

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

1
คุณจะจัดการไฟล์ LICENSE ของคุณเองอย่างไรในกรณีที่มีการให้สิทธิ์ใช้งานแบบคู่สำหรับเนื้อหาของตัวเองในสถานการณ์นี้ เช่นถ้าคุณใช้ใบอนุญาตที่แตกต่างกันสำหรับส่วนต่าง ๆ ของโครงการ (รหัสเทียบกับไฟล์สื่อ) หรือถ้าคุณต้องการแจกจ่ายรหัสของคุณภายใต้ใบอนุญาตซอฟต์แวร์ที่แตกต่างกันสองใบ (หรือมากกว่า)? การใส่ข้อมูลเพิ่มเติมลงใน README นั้นสมเหตุสมผลและเป็นสิ่งที่ฉันก็ทำเช่นกัน แต่ฉันก็สนใจเป็นพิเศษในการจัดการไฟล์ LICENSE ใน GitHub (ซึ่งในสายตาของฉันได้รับการสนับสนุนให้ผู้เยี่ยมชม / ผู้ชมของ โครงการภาพรวมอย่างรวดเร็ว)
Kay

1
หาก (บางส่วน) ของรหัสของฉันเป็นแบบลิขสิทธิ์สองแบบฉันจะเพิ่มไฟล์ลิขสิทธิ์สองใบ (หรือมากกว่า) ลงในโครงการหนึ่งใบสำหรับแต่ละใบอนุญาตและทำให้ชัดเจนในไฟล์ readme ซึ่งสิทธิ์ใช้งานจะใช้ในกรณีใด
Bart van Ingen Schenau

1
Bart ขอบคุณสำหรับการแบ่งปันว่าคุณทำได้อย่างไร - มีประโยชน์มากกว่าความคิดเห็นที่ฉันได้รับ :) ในขณะเดียวกันฉันก็ได้ติดต่อ GitHub เกี่ยวกับเรื่องนี้และจะเปิดคำถามนี้ไว้ในกรณีที่มีสิ่งใดเกิดขึ้น
Kay

2
เมื่อคุณได้รับคำตอบจาก Github โปรดโพสต์ข้อมูลนั้นเป็นคำตอบด้วยตนเองสำหรับคำถามนี้
Bart van Ingen Schenau

1
ฉันจะแน่นอนถ้ามันโอเคกับพวกเขาเพราะมันน่าสนใจที่จะรู้สำหรับคนอื่นเช่นกัน!
Kay

12

ในการนำเสนอของผู้สร้างSPDX ( สไลด์ 12 ) มีความชัดเจนมาก:

เนื้อหาของLICENSE:

Apache-2.0 OR GPL-2.0-or-later

คุณสามารถเพิ่มสองไฟล์ใบอนุญาตเพิ่มเติมแล้ว: และLICENSE.Apache-2.0LICENSE.GPL-2.0-or-later

ในทุกกรณีREADME.mdควรมีตัวระบุใบอนุญาตaa SPDX :

SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later

คุณสามารถทำได้เช่นนั้น:

## License

This work is dual-licensed under Apache 2.0 and GPL 2.0 (or any later version).
You can choose between one of them if you use this work.

`SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later`

โปรดสังเกตว่าApache-2.0 OR GPL-2.0-or-laterและApache-2.0 AND GPL-2.0-or-laterสร้างความแตกต่างอย่างมาก อดีตหมายความว่าผู้ใช้สามารถเลือกระหว่างทั้งสอง (ซึ่งเป็นกรณีปกติ!) และครั้งที่สองหมายถึงผู้ใช้จะต้องปฏิบัติตามใบอนุญาตทั้งสอง ดูการออกใบอนุญาตหลายรายการใน Wikipedia

โปรดทราบว่าฉันกำลังใช้รายการใบอนุญาต SPDX ใหม่ (ณ2017-12-28 ) 3.0 ที่นี่ รุ่น 2017 มีGPL-2.0ตัวระบุสำหรับ GPL 2.0 แต่ไม่ชัดเจนว่านั่นหมายความว่า "GPL 2.0 เท่านั้น" หรือ "GPL 2.0 หรือรุ่นที่ใหม่กว่า"


4

ในที่สุดฉันก็ติดต่อฝ่ายสนับสนุนของ GitHub โดยตรงเกี่ยวกับคำถามของฉันและพวกเขาบอกว่ามันก็โอเคที่จะพูดพวกเขาหากฉันทำคำตอบที่ชัดเจนว่าพวกเขามีความหมายเพียงแค่เป็นข้อเสนอแนะไม่ใช่คำแนะนำ

ทีมงานของเรายังไม่มีคำแนะนำใด ๆ ที่จะเสนอในขณะนี้ แต่เราจะตรวจสอบให้แน่ใจและขอให้คุณอัปเดตหากเรามีสิ่งอื่นที่จะแบ่งปัน!

คำตอบเดิมของพวกเขามีดังต่อไปนี้ให้:

หนึ่งข้อเสนอแนะคือการมีไฟล์ LICENSE หนึ่งไฟล์สำหรับรหัสส่วนใหญ่ของคุณและเพิ่มข้อความของใบอนุญาตสำหรับวัสดุอื่น ๆ ที่เหลือในไฟล์ README ของคุณ

อีกวิธีคือสำหรับแต่ละพา ธ ที่จะมีไฟล์ไลเซนส์ของตัวเองเมื่อมันสมเหตุสมผล ตัวอย่างเช่นถ้าที่เก็บของคุณมีเส้นทางต่อไปนี้: libs / awesome-lib-v2 / คุณสามารถมี libs / Awesome-lib-v2 / LICENSE

ในกรณีหลังคุณอาจต้องการพูดถึงว่าในไฟล์ README และ / หรือไฟล์ LICENSE ในรูทของคุณ

คุณอาจพิจารณาใช้ไฟล์ LICENSE เพียงไฟล์เดียวในรูทของที่เก็บข้อมูลของคุณและเพิ่มส่วนย่อยสำหรับวัสดุของบุคคลที่สามรหัสและอื่น ๆ

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