ใส่ใบอนุญาตในแต่ละไฟล์รหัส? [ปิด]


96

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



1
คุณต้องยกเว้นการรับประกันในไฟล์ต้นฉบับแต่ละไฟล์มิฉะนั้นคุณอาจถูกจับได้ (โปรดทราบว่าตัวแก้ไขที่เหมาะสมเช่น Vim สามารถกำหนดค่าได้อย่างง่ายดายเพื่อพับต้นแบบการยกเว้นการรับประกันสำหรับคุณโดยอัตโนมัติ)
Evgeni Sergeev

คำตอบ:


78

คนเดียวนอกรหัสโปรด! ฉันไม่รู้เกี่ยวกับคนอื่น ๆ แต่ฉันเกลียดการเห็นสิ่งเดียวกันบนทุกไฟล์

ฉันคิดว่าฉันได้อ่านมันสองสามครั้งเพียงแค่ page_down-ing ผ่านมัน


10
ฉันไม่เห็นด้วยกับ Zifre ใบอนุญาตซ้ำ ๆ ที่ด้านบนเป็นเรื่องที่น่ารำคาญสำหรับฉัน
strager

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

14
ฉันเพิ่งอัปเดตส่วนหัวของไฟล์ในโปรเจ็กต์ของฉันให้มีเพียงสามบรรทัดเท่านั้น: ลิขสิทธิ์ชื่อใบอนุญาตและ URL ไปยังข้อความใบอนุญาต มันทำให้ส่วนหัวของฉันสั้นลงจาก 26 บรรทัด (BSD) เหลือ 3 บรรทัด :)
Esko Luontola

3
@Esko: คุณช่วยโพสต์ตัวอย่างได้ไหม? ผมไม่รู้ว่าคุณเขียนลิขสิทธิ์อะไร ขอบคุณ.
Joan Venge

6
คำตอบนี้ถูกทำเครื่องหมายเป็นวิธีการแก้ปัญหา แต่ใน oppinion evidence for the legal situationของฉันเป็นคำถามที่ยังคงเปิดให้บริการตามระยะเวลาที่เราไม่มี Perhaps a lawyer can add a link to a court decision.
Jonas Stein

25

EULA เป็นคำที่ไม่ถูกต้องในที่นี้เนื่องจากคนที่ดูซอร์สโค้ดมักไม่ใช่ผู้ใช้ปลายทาง

ตามกฎหมายก็ไม่มีความแตกต่างเช่นกัน ลิขสิทธิ์ไม่จำเป็นต้องประกาศอย่างชัดเจน

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

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


1
ลิขสิทธิ์อาจไม่จำเป็นต้องชัดเจน แต่สำเนาซ้ายล่ะ?
Kekoa

1
@kekoav: copyleft มีข้อ จำกัด น้อยกว่าลิขสิทธิ์ โดยค่าเริ่มต้นคุณไม่สามารถสร้างผลงานลอกเลียนแบบได้
Zifre

3
ในข้อพิพาทนั่นไม่ใช่ข้อโต้แย้งที่ถูกต้อง หากได้รับแจ้งว่ามีใบอนุญาตและวิธีการเรียกคืนคุณจะไม่สามารถระบุอุปสรรคทางเทคนิคที่เป็นความผิดของคุณที่ทำให้คุณไม่เห็นใบอนุญาต
Lasse V.Karlsen

1
"Copyleft" เป็นคำแสลงสำหรับแนวคิดพื้นฐานของ GPL ในการ "ล้มล้าง" ข้อ จำกัด ด้านลิขสิทธิ์จากภายในกล่าวคือการใช้สิทธิ์ของคุณในฐานะผู้ถือลิขสิทธิ์เพื่อให้ใบอนุญาตแก่ทุกคนในการใช้รหัสของคุณได้อย่างอิสระ แต่บังคับให้ปล่อยรหัส THEIR ซึ่งเป็น ขึ้นอยู่กับคุณภายใต้ใบอนุญาตเดียวกัน
Michael Borgwardt

2
แก้ไข; แต่ในบริบทนี้ดังที่ Zifre กล่าวไว้มันไม่สำคัญ หากคุณไม่ทราบใบอนุญาตภายใต้การเผยแพร่รหัสชิ้นใดชิ้นหนึ่งคุณต้องถือว่าคุณไม่ได้รับอนุญาตให้ใช้เลย ดังนั้นในฐานะผู้จัดพิมพ์คุณจึงไม่จำเป็นต้องใช้ความยาวเพิ่มเพื่อให้คนอ่านใบอนุญาต
Michael Borgwardt

14

ไม่คุณไม่ต้องใส่ใบอนุญาตในไฟล์ซอร์สโค้ดแต่ละไฟล์

หากคุณมองใกล้ ๆ แอปพลิเคชัน FOSS ส่วนใหญ่ก็ไม่ทำเช่นนั้น พวกเขาใส่คำชี้แจงลิขสิทธิ์ไว้ที่ด้านบนของแต่ละไฟล์และมีประโยคสั้น ๆ ที่บอกคุณว่าไฟล์นั้นอยู่ภายใต้ใบอนุญาตใดและคุณจะพบข้อความทั้งหมดของใบอนุญาตได้ที่ไหน พวกเขามักจะชี้ให้คุณเห็นไฟล์ COPYING หรือ LICENSE ที่มีข้อความเต็มของใบอนุญาตและ / หรือไปยังเว็บไซต์ที่มีข้อความเต็ม (ในกรณีที่ไม่มีไฟล์ COPYING อีกต่อไป)

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


1
นี้. ประกาศเกี่ยวกับลิขสิทธิ์ควรมีการอ้างอิงถึงชื่อใบอนุญาต (หากเป็นแบบมาตรฐาน) และคำอธิบายวิธีค้นหาไฟล์ใบอนุญาตในโครงสร้างต้นทาง
jmucchiello

13

อาจขึ้นอยู่กับใบอนุญาต GPL แตกต่างระหว่างpreamblelicenseและ ชัดเจนว่าคำนำหน้า (น่ารำคาญ) ต้องเป็นส่วนหนึ่งของรหัส :

ฉันสามารถละเว้นคำนำหน้าของ GPL หรือคำแนะนำสำหรับวิธีใช้ในโปรแกรมของคุณเองเพื่อประหยัดเนื้อที่ได้หรือไม่?

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

ที่มา: 1) http://www.gnu.org/licenses/gpl-faq.html#GPLOmitPreamble

โปรดดูhttp://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html

ebook ฟรีจาก ifrOSSอธิบายและความคิดเห็นจีพี 2 ในภาษาเยอรมัน มีอีกอันสำหรับ GPL 3

สำหรับคำตอบที่เป็นที่ยอมรับคุณควรขอคำแนะนำทางกฎหมายซึ่งไม่มีใน sx ถ้าคุณไม่สามารถหาทนายความสำหรับ (ที่มาเปิด) โครงการของคุณมีลักษณะที่เป็นเครือข่ายทางกฎหมาย FSFE


7
คำนำและคำแนะนำเป็นส่วนหนึ่งของสัญญาอนุญาตฉบับสมบูรณ์แต่ไม่มีอะไรบอกว่าคุณต้องใส่ใบอนุญาตแบบเต็มในทุกไฟล์ [...] attach the following notices to the program.- ประกาศต่อไปนี้เป็นเพียงส่วนเล็ก ๆ ของใบอนุญาตฉบับสมบูรณ์ safest to attach them to the start of each source file- ปลอดภัยที่สุดแต่ไม่จำเป็น each file should have at least the "copyright" line and a pointer to where the full notice is found. - ข้อกำหนดเพียงอย่างเดียวคือบรรทัดลิขสิทธิ์ที่มีตัวชี้ไปที่ส่วนที่เหลือ คุณสามารถใส่ใบอนุญาตฉบับสมบูรณ์ในไฟล์แยกต่างหากไฟล์เดียวได้
toxalot

3
และฉันเถียงว่าควร ! = ต้อง
toxalot

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

7

ฉันคิดว่าเหตุผลที่อยู่เบื้องหลังการใส่ลงในแต่ละไฟล์นั้นถูกต้องตามกฎหมาย หากข้อตกลงอยู่ในแต่ละไฟล์จะไม่มีโอกาสที่จะมีคนสะดุดโค้ดส่วนหนึ่งโดยไม่ได้รับใบอนุญาต

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

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


1
ในกรณีนั้นให้ชี้ในแต่ละไฟล์ว่าเมื่อดำเนินการต่อแสดงว่าคุณยอมรับใบอนุญาตในไฟล์ licence.txt แต่อย่าคัดลอก / วางข้อความเดียวกันในแต่ละไฟล์ บางครั้งฉันพบไฟล์ที่มีรหัสสั้นกว่าใบอนุญาต
Rook

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

3

เอียน

สมมติว่าคุณกำลังพูดถึงการออกใบอนุญาตไม่ใช่ EULA คุณสามารถวางใบอนุญาตไว้ภายนอกได้ สิ่งนี้ทำได้เกือบตลอดเวลาด้วยใบอนุญาตที่ยาวจริงๆเช่น GPL การใส่ใบอนุญาต GPL ทั้งหมดในทุกไฟล์จะเป็นเรื่องโง่ โดยปกติคุณจะมีประกาศบางประเภทที่บอกว่าคุณสามารถหาใบอนุญาตจริงได้ที่ไหน นี่เป็นสิ่งที่ถูกกฎหมายอย่างสมบูรณ์ อย่างไรก็ตามด้วยใบอนุญาตที่สั้นจริงๆเช่น BSD / Apache / MIT / อะไรก็ตามการรวมสิทธิ์การใช้งานในทุกไฟล์นั้นง่ายกว่าเนื่องจากการแจ้งว่าจะหาใบอนุญาตได้ที่ไหนจะยาวพอ ๆ กับใบอนุญาต


2

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

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


1

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


ขอบคุณ. มันจะเป็นโอเพ่นซอร์ส
Joan Venge

คุณสามารถสร้างสตริงแบบฮาร์ดโค้ดเพื่อให้มีใบอนุญาตดังนั้นมันจะปรากฏบนไบนารี แต่นั่นอาจมากเกินไป :)
Liran Orevi

1

คุณไม่จำเป็นต้องใช้มันสำหรับใบอนุญาตไฟล์ภายนอกไฟล์เดียวจะทำได้ตราบเท่าที่ชัดเจนว่าครอบคลุมไฟล์ใด

อย่างไรก็ตามสำหรับลิขสิทธิ์คุณควรมีประกาศเกี่ยวกับลิขสิทธิ์ในทุกส่วนของข้อความ


ขอบคุณลิขสิทธิ์จึงแตกต่างกัน?
Joan Venge

INAL แต่ใบอนุญาตเป็นสัญญาระหว่างคุณกับผู้ใช้ / ลูกค้า ลิขสิทธิ์คือการยืนยันความเป็นเจ้าของงานเขียนชิ้นหนึ่ง อาจมีคนหยิบโค้ดส่วนหนึ่งของคุณและอ้างว่าไม่มีลิขสิทธิ์เนื่องจากไม่มีการแจ้งเตือน ไม่ต้องกังวลว่า "ลิขสิทธิ์ Joe Soap (Cleansoft Inc. )" คือสิ่งที่คุณต้องการ
James Anderson

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

1

สิ่งที่ฉันทำคือใส่ความคิดเห็นสองบรรทัดที่ด้านบนของไฟล์โดยระบุชื่อ บริษัท ของฉันวันที่แก้ไขล่าสุดและชื่อใบอนุญาตที่ไฟล์ต้นฉบับมีจากนั้นที่ด้านล่างสุดของไฟล์จะมีเวอร์ชันสั้น ๆ ของ ใบอนุญาต.

แน่นอนว่าสิทธิ์การใช้งานแบบเต็ม (ทั้งหมดในกรณีที่มีหลายไลเซนส์) จะอยู่ในไฟล์ต้นฉบับและไดเร็กทอรีรีลีสเสมอ


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