ฉันสามารถใช้ไลบรารี GPL ชั่วคราวเพื่อสร้างต้นแบบและสร้างรหัสที่มาปิดในอนาคตได้หรือไม่


23

ฉันกำลังทำงานกับต้นแบบสำหรับระบบซอฟต์แวร์ซึ่ง (อย่างน้อยตอนเริ่มต้น) จะถูกปิดแหล่งที่มา

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

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

ฉันมีความรู้สึกว่าการเก็บไลบรารี GPL ในประวัติGitของฉันหรือไม่อาจสร้างความแตกต่าง


16
ฉันชอบคำว่า "ปนเปื้อนด้วย GPL"
Arseni Mourzenko

7
มันจะไปได้ดีกับธรรมชาติของไวรัสใบอนุญาต :)
Laurent S

5
ถูกต้องฉันถ้าฉันผิด แต่คุณต้องการที่จะปล่อยระบบปิดแหล่งที่มาในขณะที่โฮสติ้งรหัสในคอมไพล์? (และฉันคิดว่าคอมไพล์นี้สามารถอ่านได้โดยคนอื่นเป็นอย่างอื่นทำไมคุณต้องกังวลเกี่ยวกับการมี lib GPL ในประวัติศาสตร์?)
2813274

3
@ user2813274 คุณสามารถมีที่เก็บ Git ส่วนตัวได้
Arturo Torres Sánchez

5
เมื่อคุณพบว่าคำถามนี้น่าสนใจคุณอาจสนใจข้อเสนอสำหรับOpen Source Stackexchangeใหม่
Philipp

คำตอบ:


20

GPL เขียน :

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

ดังนั้นเงื่อนไขนี้จะใช้เฉพาะในกรณีที่งานของคุณเป็น "ตาม" ห้องสมุดซึ่งใบอนุญาตกำหนดดังต่อไปนี้:

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

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

“ งานดัดแปลง” คืองานที่อิงจากงานก่อนหน้าหนึ่งงานหรือมากกว่าเช่นงานแปลการจัดดนตรีการเขียนบทละครการสวมบทละครภาพยนตร์เวอร์ชั่นการบันทึกเสียงการทำซ้ำศิลปะการย่อตัวหรือการรวมตัวอื่น ๆ อาจแต่งใหม่ปรับเปลี่ยนหรือดัดแปลง งานที่ประกอบด้วยการแก้ไข, การเพิ่มความคิดเห็น, การบรรจง, หรือการดัดแปลงอื่น ๆ ซึ่งโดยรวมแล้วเป็นตัวแทนของผลงานต้นฉบับของการประพันธ์

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

หากคำตอบมีความสำคัญกับคุณฉันขอแนะนำให้ค้นหาคำแนะนำทางกฎหมายที่มีความสามารถมากกว่าการถามคนแปลกหน้าบนอินเทอร์เน็ต


1
ตกลงสิ่งนี้เป็นสิ่งที่น่าสนใจฉันไม่ได้ตระหนักว่าการใช้ API อาจถือได้ว่าเป็นงานดัดแปลง
Laurent S

คำตอบนี้ทำให้เป็นจุดเดียวกันที่ฉันพยายามทำในคำตอบของฉันด้านล่าง แต่ในทางที่ชัดเจนมากขึ้น +1
Michael Shaw

23

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

มันจะดีกว่าถ้าคุณสามารถหาไลบรารี่ที่มีใบอนุญาตที่อนุญาตได้มากกว่าเช่น LGPL หรือ APL2 หรือ MIT


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

5
คำตอบนี้ไม่ได้คำนึงถึงความเสี่ยงของการสร้างงานที่ได้รับเมื่อนำไลบรารี่เวอร์ชันใหม่มาใช้
Michael Shaw

4
@Poley โปรดทราบว่าหากประวัติ git ของคุณถูกเผยแพร่คุณได้เปิดตัวเวอร์ชันเก่า ไม่จำเป็นต้องอยู่ในรูปแบบไบนารีเพื่อนับ
piojo

2
@piojo ในทางกลับกันว่าอย่างมากที่สุดบังคับให้คุณอนุญาตรุ่นเก่าภายใต้ GPL (และแจกจ่ายแหล่งที่มาสำหรับมัน); หากถึงจุดหนึ่งคุณพบว่าตัวเองมีลิขสิทธิ์ แต่เพียงผู้เดียวกับรหัสคุณสามารถทำให้รุ่นอนาคตปิดทั้งหมด (แม้ว่ารุ่นเก่ายังคงอยู่ภายใต้ GPL) คุณอาจมีหรือไม่มีปัญหาทั้งนี้ขึ้นอยู่กับว่าเนื้อหาที่เป็นกรรมสิทธิ์มีอยู่ในรุ่นเก่าหรือไม่
cpast

1
ตราบใดที่ Laurent S เป็นผู้แต่งและเจ้าของลิขสิทธิ์ของรหัสอื่น ๆ ถัดจาก GPL เขาก็จะปลอดภัยเช่นกัน เขาสามารถและได้รับอนุญาตให้เผยแพร่งานทั้งหมดภายใต้เงื่อนไขของ GPL3 ในกรณีที่อาจเป็นผลลัพธ์ในภายหลัง สิ่งนี้อาจไม่เป็นที่ต้องการ แต่ OP ชัดเจนว่าปลอดภัยในทุกกรณี (หากเป็นเจ้าของลิขสิทธิ์)
hakre

8

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

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

สามแนวทางที่คุณทำได้

อย่างไรก็ตามหากคุณจะพัฒนาต้นแบบ (มีผู้จัดการจำนวนมากผลักดันให้!) คุณมีสามวิธีที่คุณสามารถทำได้:

  1. ย้ายส่วนที่ไม่ใช่ส่วนหลักไปยังแอปพลิเคชันแยกต่างหากที่สื่อสารกับแกนหลักของคุณผ่าน JSON หรือ REST API หรือภาษา / ไลบรารีการสื่อสารระหว่างกระบวนการอื่น ๆ ส่วนที่ไม่ใช่คอร์ของคุณจึงสามารถเป็น GPL ได้เช่นกันและคุณสามารถใช้ไลบรารี GPL ในส่วนนั้นได้
  2. ออกแบบรหัสของคุณเพื่อให้คุณสามารถสลับไลบรารีออก ซึ่งหมายถึงการสร้างซุ้มที่ซ่อนรายละเอียดการใช้งาน เมื่อคุณพร้อมที่จะเปลี่ยนเป็นไลบรารี่หรือ MIT / BSD
  3. อย่าใช้รหัส GPL แต่อย่างใด

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

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


2
การใส่รหัส GPL ในกระบวนการอื่นไม่ได้หมายความว่ามันไม่ได้เป็นส่วนหนึ่งของโปรแกรมอีกต่อไปดังนั้นจึงไม่เกี่ยวข้องกับการให้สิทธิ์ใช้งานส่วนที่เหลืออีกต่อไป มันสามารถช่วยแยกพวกเขาได้ดีพอ
Deduplicator

1
@Dupuplicator หากพวกเขาแยกแอปพลิเคชันที่ไม่เพียงพอพวกเขาจะต้องถือว่าเป็นฐานรหัสแยกต่างหากคุณถูกต้อง ค่อนข้างเป็นอย่างที่ Twitter ทำกับ Bootstrap และ Facebook ทำอะไรกับไลบรารีทั้งหมด โอเพนซอร์สที่ไม่ใช่คอร์พร้อมด้วยรหัสกรรมสิทธิ์หลัก
Rudolf Olah

@ บ้านฉันไม่สามารถทำได้ 1 เนื่องจากเป็นซอฟต์แวร์ฝังตัว 2 เป็นความคิดแรกของฉัน แต่เห็นสิ่งที่ปโตเลมีและ Meriton พูดถึงมันดูเหมือนว่าฉันจะทำผลงานอนุพันธ์ดังนั้น 3 อาจเป็นวิธีที่จะไป
Laurent S

1
Re: "ฉันไม่คิดว่าคำถามของคุณเกี่ยวกับ GPL": ฉันไม่เห็นด้วย ใบอนุญาตซอฟต์แวร์อย่างแน่นอนสามารถห้ามการใช้งานประเภทนี้ คำตอบที่เพิกเฉยต่อส่วน "GPL" ของคำถามและเพิ่งนำมาเป็นคำถามทั่วไปเกี่ยวกับสิทธิ์ใช้งานโอเพ่นซอร์สที่มีข้อกำหนดที่เข้มงวดและพฤติกรรมของไวรัสจะต้องใช้วิธี "เราไม่รู้คุณจะต้อง เพื่ออ่านเงื่อนไขของใบอนุญาต "
ruakh

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

5

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

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

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


4

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


2

หากคุณให้สิทธิ์การเข้าถึงการแก้ไขโดยใช้รหัส GPL'd พวกเขาจะเป็น GPL อย่างสมบูรณ์ แต่คุณไม่ต้องการเพราะจะไม่ปิดแหล่งที่มา ...

สำหรับสถานะใด ๆ ในภายหลังซึ่งไม่ได้ใช้รหัส GPL'd ใด ๆ อีกต่อไปว่าคุณใช้รหัส GPL บางครั้งก่อนหน้านี้ไม่เกี่ยวข้องเลย


2

GPL จะเริ่มทำงานเมื่อมีการแจกจ่ายเท่านั้น... คุณสามารถทำทุกอย่างที่คุณต้องการหากคุณไม่ปล่อยรุ่นดัดแปลงหรืองานดัดแปลง

ฉันมีความรู้สึกว่าการเก็บไลบรารี GPL ในประวัติ Git ของฉันหรือไม่อาจสร้างความแตกต่าง

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

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