มีใบอนุญาต LGPL ที่แก้ไขแล้วซึ่งอนุญาตให้มีการเชื่อมโยงแบบสแตติก


21

LGPLต้องการให้ใช้หากโปรแกรมใช้ไลบรารี LGPL-ed ผู้ใช้จะต้องสามารถเชื่อมโยงโปรแกรมกับไลบรารีเวอร์ชันอื่น:

...

d) ทำสิ่งใดสิ่งหนึ่งต่อไปนี้:

0) สื่อความหมายแหล่งที่มาที่น้อยที่สุดภายใต้เงื่อนไขของใบอนุญาตนี้และรหัสแอปพลิเคชันที่สอดคล้องกันในรูปแบบที่เหมาะสมสำหรับและภายใต้ข้อกำหนดที่อนุญาตให้ผู้ใช้สามารถรวมกันอีกครั้งหรือเชื่อมโยงแอปพลิเคชัน Combined Work ในลักษณะที่ระบุไว้ในส่วนที่ 6 ของ GNU GPL สำหรับถ่ายทอดแหล่งที่เกี่ยวข้อง

1) ใช้กลไกไลบรารีแบบแบ่งใช้ที่เหมาะสมสำหรับการลิงก์กับไลบรารี กลไกที่เหมาะสมคือกลไกหนึ่งที่ (a) ใช้งาน ณ เวลาที่สำเนาของ Library มีอยู่แล้วในระบบคอมพิวเตอร์ของผู้ใช้และ (b) จะทำงานอย่างถูกต้องกับ Library รุ่นที่แก้ไขซึ่งสามารถใช้งานร่วมกับรุ่นที่เชื่อมโยงได้

...

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

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

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

ดังนั้นฉันกำลังมองหาใบอนุญาตเหมือน LGPL แบบมาตรฐานซึ่งไม่ต้องการความเป็นไปได้ในการเชื่อมโยงอีกครั้ง (และฉันเข้าใจว่าการลบเสรีภาพเล็กน้อยที่มอบให้แก่ผู้ใช้) บางโครงการใช้การปรับเปลี่ยนของตัวเองของแอลจีเช่นwxWidgets แต่ฉันควรใช้ใบอนุญาตมาตรฐานที่ค่อนข้างเป็นทางการมากกว่านั้นอาจตรวจสอบโดยผู้เชี่ยวชาญด้านกฎหมายบางคนและ (L) GPL ที่เข้ากันได้ มีบางอย่างเช่นนั้น?

(และฉันสนใจที่จะทราบว่าจะมีผลกระทบที่คาดไม่ถึงจากการดัดแปลง LGPL หรือไม่)


คุณไม่สามารถลิงก์ภายนอกห้องสมุดใน Haskell ได้หรือไม่ ที่จะต้องสาปแช่งไม่สะดวก
Robert Harvey

2
หากโครงการทั้งหมดของคุณเป็น FOSS แสดงว่าอาจไม่มีปัญหา ชี้ไปที่แหล่งที่มาและปล่อยให้พวกเขาเรียงลำดับ! :-)
Peter Rowell

2
สิ่งที่จะแยกความแตกต่างใบอนุญาตนั้นจากใบอนุญาตที่ไม่ใช่ลิขสิทธิ์?

2
@delnan มีสิ่งอื่น ๆ อีกมากมายใน LGPL ที่มักเป็นที่ต้องการ ยกตัวอย่างเช่นมันต้องใด ๆการปรับเปลี่ยนจะเป็น (L) GPL หรือห้ามtivoization
Petr Pudlák

ใบอนุญาต wxWindows เป็นเรื่องเกี่ยวกับอย่างเป็นทางการตามที่ได้รับระบุว่ามันได้รับอนุมัติจาก OSI
Joachim Sauer

คำตอบ:



12

wxwidgetsได้รับอนุญาตภายใต้การเชื่อมโยง = LGPL + แบบคงที่

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

wxWidgets ได้รับการรับรองผู้เข้าร่วมซอฟต์แวร์โอเพ่นซอร์สในการอภิปรายที่นำไปสู่การตัดสินใจนี้รวมถึงชาวบ้านจากAbisource , Robert Roebling, Julian Smart, Markus Fleck, Karsten Ballueder และคำแนะนำบางอย่างจาก Richard Stallman Richard ยืนยันว่าใบอนุญาตใหม่สามารถใช้งานได้กับแอปพลิเคชันของ GPL อย่างไรก็ตามไม่มีข้อ จำกัด อย่างมีนัยสำคัญเกี่ยวกับการใช้งานที่เป็นกรรมสิทธิ์

ใบอนุญาต wxWindows ได้รับการอนุมัติจากOpen Source Initiativeและคุณสามารถหาใบอนุญาตได้บนเว็บไซต์ของพวกเขาที่นี่ ...


0mqได้รับอนุญาตภายใต้ LGPL พร้อมข้อยกเว้นการลิงก์แบบสแตติกที่ชัดเจน
เทรเวอร์พาวเวล

4

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

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

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


คุณมีสถานการณ์จริงที่ทำไปแล้วบ้างไหม?
knocte

3

ฉันพบหนึ่งด้วย Google: ใบอนุญาต OpenScales

OpenScales วางจำหน่ายภายใต้ GNU Lesser Public License (LGPL มีให้ที่นี่ ) รุ่น 3 พร้อมด้วย exption ที่เกี่ยวข้องกับข้อยกเว้นการเชื่อมโยงแบบคงที่ (ดูด้านล่าง) ...

นอกเหนือจากข้อความสิทธิ์ใช้งาน LGPL ข้อยกเว้นของเงื่อนไข LGPL จะใช้กับ OpenScales:

เป็นข้อยกเว้นพิเศษสำหรับ GNU Lesser General Public License รุ่น 3 คุณสามารถถ่ายทอดไฟล์ที่สามารถใช้งานได้ให้กับบุคคลที่สามจาก Combined Work ที่เชื่อมโยงส่วนต่าง ๆ ของไลบรารีนี้ในรูปแบบสแตติกหรือแบบไดนามิกในไฟล์ที่ปฏิบัติการได้ โดยไม่จำเป็นต้องถ่ายทอดรหัสแอปพลิเคชันที่สอดคล้องกันภายใต้หัวข้อ 4d0 ของสัญญาอนุญาตสาธารณะทั่วไปของ Lesser GNU ตราบใดที่คุณใช้ไลบรารี่รุ่นที่เผยแพร่ต่อสาธารณะ ข้อยกเว้นนี้ไม่ได้ทำให้เหตุผลอื่น ๆ ที่ทำให้ไฟล์ปฏิบัติการอาจครอบคลุมโดยสัญญาอนุญาตสาธารณะทั่วไปของ Lesser GNU หรือสัญญาอนุญาตสาธารณะทั่วไปของ GNU

มันไม่ได้มาตรฐาน แต่ฉันไม่รู้ว่ามีอยู่จริงหรือเปล่า


1

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


ใช่นั่นเป็นทางออกที่ดีที่สุด แต่ในบางกรณีการเชื่อมโยงแบบไดนามิกเป็นไปไม่ได้ บางภาษาไม่มีความเป็นไปได้นี้ หรือบางแพลตฟอร์มไม่มีความเป็นไปได้นี้
Petr Pudlák

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