หลีกเลี่ยงการละเมิด GPL ด้วยการย้ายไลบรารี่ออกจากกระบวนการ


21

สมมติว่ามีไลบรารีที่ได้รับอนุญาตภายใต้ GPL ฉันต้องการที่จะใช้มันเป็นโครงการที่มาปิด ฉันทำตาม:

  1. สร้างแอปพลิเคชั่น wrapper ขนาดเล็กรอบ ๆ ไลบรารี GPL ที่ฟังซ็อกเก็ตแยกวิเคราะห์ข้อความและเรียกไลบรารี GPL จากนั้นส่งคืนผลลัพธ์กลับคืน
  2. ปล่อยแหล่งที่มา (เพื่อให้สอดคล้องกับ GPL)
  3. สร้างไคลเอนต์สำหรับ wrapper นี้ในแอปพลิเคชันหลักของฉันและอย่าปล่อยแหล่งที่มา

ฉันรู้ว่านี่เป็นการเพิ่มค่าใช้จ่ายจำนวนมากเมื่อเทียบกับการเชื่อมโยงแบบสแตติก / ไดนามิก แต่ฉันสนใจในทางทฤษฎี


6
เสื้อคลุมที่คุณเขียนจะได้รับอนุญาตภายใต้ GPL ดังนั้นโปรแกรมที่ใช้ wrapper จะยังคงเป็นไปตามข้อกำหนดของ GPL สำหรับการเชื่อมโยงและอื่น ๆ
TZHX

4
ทำไมไม่ติดต่อผู้เขียนก่อนและดูว่าคุณสามารถอนุญาตภายใต้ LGPL หรือคล้ายกันแทน
jk

8
@ TZHX ฉันเชื่อว่าเขาหมายถึง wrapper จะเป็นแอปพลิเคชันแยกต่างหากที่ทำหน้าที่เป็นเซิร์ฟเวอร์ - รหัสที่เป็นกรรมสิทธิ์ของเขาจะอยู่ในไคลเอนต์
jk

แอปที่เป็นแหล่งข้อมูลปิดจะมีการเผยแพร่ด้วยเช่นกัน และ GPL รุ่นใดเป็นใบอนุญาต
jk

2
@ jwenting คำถามที่ชัดเจนบอกว่ามันหมดกระบวนการ
jk

คำตอบ:


32

ถูกต้องตามกฎหมายฉันจะบอกว่ามันจะตกลง (แต่ฉันไม่ใช่ทนายความ - ปรึกษาทนายความเพื่อขอคำแนะนำทางกฎหมาย)

ศีลธรรมมันน่ารังเกียจ หากคุณไม่ชอบ GPL แสดงว่าโซลูชันที่ "เหมาะสม" ไม่ควรใช้ไลบรารี GPL

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

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


12
ฉันไม่คิดว่าจะมีปัญหาทางศีลธรรมที่นี่ - GPL ดูเหมือนจะอนุญาตกรณีการใช้งานของเขา
jk

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

8
@vartec: ฉันรู้สึกว่าคุณไม่เข้าใจว่าเมื่อคุณใช้รหัสของคนอื่นในแอปพลิเคชันของคุณคุณจะต้องปฏิบัติตามข้อกำหนดที่เขาใช้ในการใช้รหัส HIS ไม่ชอบหรือ อย่าใช้รหัส GPL'ed ของคนอื่น ง่าย ๆ
John R. Strohm

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

3
ฉันไม่เห็นด้วยอย่างยิ่งกับการกล่าวอ้างว่าเป็นสิ่งที่เลวทรามทางศีลธรรม สิ่งที่เลวทรามทางศีลธรรมคือการบอกคนที่พวกเขาไม่มีสิทธิ์ที่จะทำสิ่งต่าง ๆ ที่ GPL อนุญาตให้พวกเขาทำ เมื่อฉันทำงานภายใต้ GPL ฉันทำเช่นนั้นเพราะฉันต้องการให้กฎของ GPL ใช้ การบอกผู้คนว่าพวกเขาไม่ควรใช้สิทธิ์ที่ GPL ให้ไว้เป็นสิ่งที่น่ารังเกียจ นี่คือสิ่งที่ GPL อนุญาต ผู้ที่ทำงานภายใต้ GPL ทำเช่นนั้นเพราะพวกเขาต้องการอนุญาต
David Schwartz

6

IANAL แต่ฉันเชื่อว่าคุณโอเคส่วนที่เกี่ยวข้องของ GPL3 นั้นอยู่ท้ายบทที่ 5:

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

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

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

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


ฉันอ่านมัน แต่ปัญหาคือว่าข้อความ GPL ถูกเขียนในทางกฎหมายภาษาไม่ได้อยู่ในการพัฒนา เคล็ดลับที่มี wrapper คือการสร้างแอพเชิงพาณิชย์ "รวม" ไม่ใช่ "อนุพันธ์" แต่ฉันคิดว่ามันตกอยู่ภายใต้ "ธรรมชาติส่วนขยายของงานที่ครอบคลุม"
Andrey

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

1
@Andrey: หาก "ธรรมชาติ" ของโปรแกรมของคุณเชื่อมโยงโดยตรงกับรหัส GPL ส่วนที่ยกมาจะไม่สามารถใช้ได้ จากคำถามของคุณดูเหมือนว่าจะเป็นอย่างนั้น ตัวอย่างตัวนับอาจเป็นโปรแกรมวิเคราะห์การบุกรุกเครือข่ายซึ่งเพิ่งเกิดขึ้นเมื่อใช้ GNU readline ผ่านกลไกที่คุณเสนอ (Readline เป็นกรณีทดสอบที่น่าสนใจเนื่องจากมีตัวเลือกดร
อปดาวน์

ประโยค "รวม" คือการทำให้ชัดเจนว่าการกระจาย CD-Rom หรือ Linux เดียวกันนั้นไม่ได้สร้างอนุพันธ์
Sean McMillan

6

ดูว่าฉันต้องการรวมซอฟต์แวร์ที่มี GPL ในระบบกรรมสิทธิ์ของฉัน ฉันจะทำสิ่งนี้ได้ไหม

คำถามคือแอปพลิเคชั่น wrapper ของคุณมีการใช้งานด้วยตัวเองหรือไม่? หากคุณสร้างเวอร์ชันบรรทัดคำสั่งของโปรแกรมของคุณที่เป็น GPL คุณสามารถปล่อย GUI ภายใต้ใบอนุญาตอื่น ตัวอย่างเช่นคุณสามารถสร้าง IDE สำหรับ gcc ที่เป็นแหล่งข้อมูลปิดหรือเครื่องมือแสดงภาพแบบอิง diff

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


ความเข้าใจของฉันคือคุณสามารถให้สิทธิ์ใช้งาน wrapper ภายใต้ MIT และยังคงใช้ได้
เครื่องปิ้งขนมปัง

2
โคลินไม่อย่างแน่นอน wrapper นั้นรวมกันอย่างไม่น่าเชื่อกับ GPL ไลบรารี่เป็นไบนารี่เดียว ในการใช้รหัส GPL ภายในหนึ่งไบนารีคุณต้อง GPL รหัสของคุณเองเพื่อให้สอดคล้องกับใบอนุญาต
Concrete Gannet

5

IMO ถูกต้องตามกฎหมาย (IANAL) เพื่อปรับปรุงด้านศีลธรรมของปัญหาอย่าเรียกมันว่า "FooBar wrapper ที่ทำให้ FooBar legaly ใช้งานได้กับ MyClosedApp" เรียกมันว่าเซิร์ฟเวอร์ ทำให้มันเป็นโปรแกรมโอเพนซอร์ซเล็ก ๆ น้อย ๆ ที่ "อนุญาตให้ทำ FooBar ผ่านเน็ต" วางไว้บน SourceForge หรืออุทิศเว็บไซต์ให้กับหน้าโครงการและคำแนะนำและสิ่งต่าง ๆ จากนั้นให้ "MyClosedApp" ใช้ "เซิร์ฟเวอร์ FooBar"


2

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


1
มันผิดอย่างแน่นอน การใช้มันเป็นปลั๊กอิน (การเชื่อมโยงแบบไดนามิก) ทำให้แอปพลิเคชัน "อนุพันธ์" และผลลัพธ์ของ GPL เป็นผล
Andrey

ฉันไม่แน่ใจว่าปลั๊กอินตรงกันเสมอกับการเชื่อมโยงแบบไดนามิก และแน่นอนในกรณีนี้ OP ไม่ได้เสนอการเชื่อมโยงอะไรแบบไดนามิกดังนั้นฉันคิดว่าคำแนะนำของ mouviciel คือคำย่อ
jk

@jk ดีถ้าคุณสร้างเพียงหนึ่งปลั๊กอินและมันขึ้นอยู่กับใบอนุญาต GPL กลิ่นนี้เป็นการละเมิด
Andrey

4
AGPL จะไม่ห้ามสิ่งนี้หากซ็อกเก็ตอยู่บนเครือข่าย มันค่อนข้างเฉพาะเจาะจง นอกจากนี้ยังไม่ได้ทดสอบความมีประโยชน์ แต่เป็นความใกล้เคียงกับซอฟต์แวร์ GPLed และกรรมสิทธิ์ การเชื่อมโยงแบบสแตติกอยู่ใกล้เกินไปแน่นอนซ็อกเก็ต (ยกเว้นกรณี AGPL ที่เฉพาะเจาะจง) ก็โอเคแน่นอนการเชื่อมโยงแบบไดนามิกอาจจะใช่หรือไม่ก็ได้
David Thornley

1
@Andrey: ดังนั้นตอนนี้คุณกำลังพูดว่าตราบใดที่ซอฟต์แวร์โอเพนซอร์สเช่น Photoshop สามารถทำงานได้โดยไม่ต้องมีส่วนประกอบ GPL คุณสามารถแจกจ่ายได้โดยไม่ต้องใช้ GPL นั่นคือว่าสิ่งที่บอกคำตอบนี้
Doc Brown เมื่อ

1
  1. พยายามหาทางเลือกโอเพนซอร์ซถ้าไม่มีเลยไปหา GPL
  2. ตรวจสอบว่าเป็นGPLv3 ที่มี Affero clauseหากเป็นอยู่ไม่มีสิ่งใดที่ต้องทำ
  3. ถ้าเป็น GPLv2 คุณสามารถทำตามที่แนะนำ

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


อะไรคือความแตกต่างระหว่าง GPL v2 และ v3 ที่ทำให้แฮกของฉันเป็นไปไม่ได้ สิ่งที่ฉันทำไม่ใช่การเชื่อมโยงแบบไดนามิกฉัน decoupling พวกเขาให้มากที่สุด
Andrey

หนึ่งในเป้าหมายของ GPLv3 คือการป้องกันวิธีการ 'หลบเลี่ยง'
vartec

4
ขั้นแรกรูปแบบของ GPL นั้นเป็นทางการใบอนุญาต Open Source ที่ได้รับการรับรองจาก OSI (เหมือนกับใบอนุญาต BSD ที่ไม่มีข้อโฆษณาคือใบอนุญาตซอฟต์แวร์ฟรีที่ได้รับการรับรองจาก Stallman) ประการที่สองไม่มีรุ่น GPL (รวมถึง Affero) จำกัดความสามารถของคุณในการสื่อสารซอฟต์แวร์ GPLed และเป็นกรรมสิทธิ์ด้วยวิธีการสื่อสารระหว่างกระบวนการมาตรฐานเช่นซ็อกเก็ต
David Thornley

IMO GPLv3 การอนุญาตตัวอย่างประโยค DRM ละเมิดข้อ 6 ของ Open Source Definition opensource.org/docs/osd
vartec

1
@vartec: DRM ไม่ใช่ "Field of Endeavour" ดูที่ "ตัวอย่างเช่นอาจไม่ จำกัด โปรแกรมที่จะถูกใช้ใน [กิจการเพื่อการพาณิชย์] หรือจากการใช้สำหรับการวิจัยทางพันธุกรรม" เห็นได้ชัดว่า OSI เชื่อว่า GPL3 เป็นโอเพ่นซอร์สและเป็นไปตามจุดทั้งหมดของคำนิยามเพราะพวกเขาอนุมัติ
Thomas Edleson

0

จะเป็นเรื่องถูกกฎหมายหรือไม่ที่ Adam Brown จะเขียนโปรแกรมที่ใช้ไลบรารี GPL และทำหน้าที่เป็น "เซิร์ฟเวอร์" ถ้าเขาปล่อยซอร์สโค้ดทั้งหมดไปยังทุกสิ่งที่เกี่ยวข้อง แต่รหัสลูกค้าเดียวที่เขาปล่อยออกมานั้นค่อนข้างอ่อนแอเพราะนั่นคือทั้งหมด เขาต้องการเขียนด้านลูกค้าหรือไม่ ฉันไม่เห็นพื้นฐานใด ๆ สำหรับการคิดว่ามันจะไม่

หาก Charles Dover พบ "เซิร์ฟเวอร์" ของ Adam Brown และตัดสินใจที่จะเขียนโปรแกรมโอเพนซอร์สเพื่อสื่อสารกับมัน GPL จะ จำกัด การกระทำของเขาในทางใดทางหนึ่งหรือไม่? ไม่ว่าฉันจะเห็นได้เนื่องจากการใช้งานซอฟต์แวร์ GPL'ed เพียงอย่างเดียวของเขาจะเหมือนกับไบนารีที่เขาได้รับจาก Adam Brown ถ้าเขาแจกจ่ายไบนารีของอดัมเขาจะต้องรวมลิงค์ไปยังแหล่งด้วย แต่ไม่มีอะไรใน GPL ที่จะส่งผลกระทบต่อรหัสของ Charles

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

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