LGPLต้องการให้ใช้หากโปรแกรมใช้ไลบรารี LGPL-ed ผู้ใช้จะต้องสามารถเชื่อมโยงโปรแกรมกับไลบรารีเวอร์ชันอื่น:
...
d) ทำสิ่งใดสิ่งหนึ่งต่อไปนี้:
0) สื่อความหมายแหล่งที่มาที่น้อยที่สุดภายใต้เงื่อนไขของใบอนุญาตนี้และรหัสแอปพลิเคชันที่สอดคล้องกันในรูปแบบที่เหมาะสมสำหรับและภายใต้ข้อกำหนดที่อนุญาตให้ผู้ใช้สามารถรวมกันอีกครั้งหรือเชื่อมโยงแอปพลิเคชัน Combined Work ในลักษณะที่ระบุไว้ในส่วนที่ 6 ของ GNU GPL สำหรับถ่ายทอดแหล่งที่เกี่ยวข้อง
1) ใช้กลไกไลบรารีแบบแบ่งใช้ที่เหมาะสมสำหรับการลิงก์กับไลบรารี กลไกที่เหมาะสมคือกลไกหนึ่งที่ (a) ใช้งาน ณ เวลาที่สำเนาของ Library มีอยู่แล้วในระบบคอมพิวเตอร์ของผู้ใช้และ (b) จะทำงานอย่างถูกต้องกับ Library รุ่นที่แก้ไขซึ่งสามารถใช้งานร่วมกับรุ่นที่เชื่อมโยงได้
...
อย่างไรก็ตามในบางกรณีอาจทำให้เกิดปัญหาได้ โดยเฉพาะอย่างยิ่งโปรแกรม Haskell จะถูกรวบรวมแบบคงที่เกือบตลอดเวลา ยิ่งไปกว่านั้นคอมไพเลอร์ทำการปรับข้ามโมดูลให้เหมาะสมดังนั้นจึงเป็นไปไม่ได้ที่จะมีส่วนร่วมของโค้ดและแทนที่ด้วยโค้ดอื่น ดังนั้นจึงเป็นเรื่องยากมากที่จะตอบสนองเงื่อนไขนี้ (ดูลิงค์นี้ที่ Haskell Wiki)
การเชื่อมโยงแบบไดนามิกจะเป็นวิธีแก้ปัญหา แต่ในหลายกรณีไม่สามารถทำได้ ตัวอย่างเช่น:
- บางแพลตฟอร์มอาจไม่มีการเชื่อมโยงแบบไดนามิกเลย
- บางภาษาไม่มีความเป็นไปได้ของการเชื่อมโยงแบบไดนามิก หรือไม่สามารถสร้างโมดูลหลายแพลตฟอร์มได้
- ในบางกรณีการเชื่อมโยงแบบไดนามิกจะป้องกันการเพิ่มประสิทธิภาพที่สำคัญ แม้ว่าฉันจะบอกว่านี่เป็นปัญหาร้ายแรง แต่ในภาษาอย่าง Haskell การสูญเสียประสิทธิภาพอาจมีความสำคัญ
ดังนั้นฉันกำลังมองหาใบอนุญาตเหมือน LGPL แบบมาตรฐานซึ่งไม่ต้องการความเป็นไปได้ในการเชื่อมโยงอีกครั้ง (และฉันเข้าใจว่าการลบเสรีภาพเล็กน้อยที่มอบให้แก่ผู้ใช้) บางโครงการใช้การปรับเปลี่ยนของตัวเองของแอลจีเช่นwxWidgets แต่ฉันควรใช้ใบอนุญาตมาตรฐานที่ค่อนข้างเป็นทางการมากกว่านั้นอาจตรวจสอบโดยผู้เชี่ยวชาญด้านกฎหมายบางคนและ (L) GPL ที่เข้ากันได้ มีบางอย่างเช่นนั้น?
(และฉันสนใจที่จะทราบว่าจะมีผลกระทบที่คาดไม่ถึงจากการดัดแปลง LGPL หรือไม่)