โทรซอฟต์แวร์ GPL จากซอฟต์แวร์ที่ไม่ใช่ GPL


30

ฉัน (ตามกฎหมาย) ใช้โปรแกรมที่เผยแพร่ภายใต้ GPL จากโปรแกรมอื่นที่ฉันกำลังเขียนอยู่หรือไม่และไม่ต้องเคารพ GPL (สำหรับโปรแกรมที่ฉันเขียน)

ตัวอย่างเช่นฉันมี GUI ที่ใช้โปรแกรม (ซึ่งอยู่ภายใต้ GPL) ฉันสามารถซ่อนรหัสใน GUI และขายได้หรือไม่

คำตอบ:


30

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

ในตัวอย่างที่ให้ไว้ในคำถามซึ่งคุณได้เขียนตัวห่อ GUI รอบโปรแกรมบรรทัดคำสั่งที่มีอยู่ GUI ของคุณไม่ผูกพันตามข้อกำหนดของ GPL โดยมีเงื่อนไขว่าเป็นโปรแกรมแยกต่างหากที่รันโปรแกรม GPLed ใน แยกกระบวนการและสื่อสารกับมันผ่านทางอินเตอร์เฟสที่มีอยู่เท่านั้นเช่นผ่านบรรทัดคำสั่งและ / หรือผ่าน stdin / stdout

บิตที่เกี่ยวข้องจากคำถามที่พบบ่อยของ GPL :

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

หากโมดูลนั้นรวมอยู่ในไฟล์เรียกทำงานไฟล์เดียวกันพวกมันจะรวมกันอย่างแน่นอนในโปรแกรมเดียว หากโมดูลได้รับการออกแบบให้รันการเชื่อมโยงเข้าด้วยกันในพื้นที่ที่อยู่ที่ใช้ร่วมกันนั่นหมายถึงการรวมเข้าไว้ในโปรแกรมเดียว

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


ฉันสามารถปล่อยโปรแกรมที่ไม่มีการออกแบบมาเพื่อโหลดปลั๊กอินที่มี GPL ได้หรือไม่

ขึ้นอยู่กับว่าโปรแกรมจะเรียกใช้ปลั๊กอินอย่างไร ตัวอย่างเช่นหากโปรแกรมใช้ส้อมแบบง่าย ๆ เท่านั้นและ exec เพื่อเรียกใช้และสื่อสารกับปลั๊กอินปลั๊กอินนั้นเป็นโปรแกรมแยกต่างหากดังนั้นลิขสิทธิ์ของปลั๊กอินจึงไม่ต้องการข้อกำหนดเกี่ยวกับโปรแกรมหลัก

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

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

โปรดทราบว่า GPL ใช้กับโปรแกรมบรรทัดคำสั่งพื้นฐานไม่ว่าในกรณีใด ๆ - หากคุณแจกจ่าย (เมื่อเทียบกับการให้ผู้ใช้ได้รับจากแหล่งอื่น) คุณต้องรับผิดชอบในการจัดหาสำเนาของ GPL ให้กับผู้ใช้ ชัดเจนสำหรับพวกเขาว่าโปรแกรมบรรทัดคำสั่งอยู่ภายใต้ GPL (แม้ว่าจะไม่มีตัวห่อ GUI) และทำให้ซอร์สโค้ดของโปรแกรมบรรทัดคำสั่งพร้อมใช้งานตามคำขอ จากคำถามที่พบบ่อยของ GPL อีกครั้ง:

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

ข้อจำกัดความรับผิดชอบมาตรฐาน: ฉันไม่ใช่ทนายความและแม้ว่าฉันเป็นทนายความฉันไม่ใช่ทนายความของคุณ หากคุณต้องการคำตอบที่ชัดเจนปรึกษาผู้เชี่ยวชาญด้านกฎหมายที่เหมาะสมซึ่งได้รับใบอนุญาตให้ฝึกในเขตอำนาจศาลของคุณ


1
ควรสังเกตว่าตำแหน่งของ FSF ในการเชื่อมโยงนั้นเป็นตำแหน่งของชนกลุ่มน้อย (และ IMO มันไม่สมเหตุสมผลเลยกระบวนการอัตโนมัติไม่สามารถสร้างงานใหม่ได้)
David Schwartz

1
อย่างไรก็ตาม FSF เขียน GPL สิ่งนี้ทำให้ความคิดเห็นของพวกเขามีความเกี่ยวข้องมากยิ่งขึ้น "เมื่อเราพูด X เราหมายถึง {... }" เป็นที่ยอมรับกันโดยทั่วไปในศาล "เมื่อคุณพูด X คุณหมายถึง {... }" ไม่ใช่อย่างนั้น
MSalters

"ใช้ส้อมแบบง่าย ๆ เท่านั้นและผู้บริหารเพื่อเรียกใช้" หมายความว่าอย่างไร - ใครบางคนสามารถอธิบายสิ่งนี้ได้?
Krunal

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

@Cerin - GPL ใช้กับรหัสที่คุณเผยแพร่เท่านั้น ดังนั้นในขณะที่คุณสามารถเขียนโปรแกรมที่เชื่อมโยงกับทั้งใบอนุญาต GPLed และไม่เข้ากันได้กับ GPL คุณไม่สามารถแจกจ่ายโปรแกรมนั้นไปยังบุคคลที่สามได้เนื่องจากมันจะเรียกใช้รหัสที่เข้ากันได้กับ GPLed และไม่ใช่ GPL ในกระบวนการเดียวกัน ("ไม่ใช้การแจกจ่ายซ้ำ" ถูกมองว่าเป็นช่องโหว่ใน GPL เนื่องจากหมายถึงบริการเว็บและสิ่งที่คล้ายกันสามารถก้าวเท้าเลี่ยง GPL ได้อย่างสิ้นเชิงเพราะพวกเขาเรียกใช้ซอฟต์แวร์เองแทนที่จะให้ผู้ใช้เรียกใช้ GNU AGPL เป็น พยายามแก้ไขปัญหานี้)
Dave Sherohman

0

ขึ้นอยู่กับว่าคุณหมายถึงอะไรโดยใช้มัน?

  • รวบรวมมันเป็นรหัสของคุณ
  • ใช้ห้องสมุดสาธารณะ
  • เรียกใช้ปฏิบัติการ

นอกจากนี้ยังขึ้นอยู่กับรุ่น / ตัวแปรของ GPL ที่รหัสอื่นอยู่ภายใต้

  • จีพี
  • แอลจี
  • AGPL
  • คนอื่น ๆ น่าจะเป็น

ข้อจำกัดความรับผิดชอบทางกฎหมาย: ฉันไม่ใช่ทนายความ


-2

ขึ้นอยู่กับว่าโปรแกรมของคุณ "ใช้" โปรแกรม GPL อย่างไร คำถามที่พบบ่อย GPL มีคำอธิบายที่ค่อนข้างยาวแต่ก็ยังเปิดให้ตีความได้มากมาย:

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

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


ไม่พวกเขาไม่ "สร้างโปรแกรมเดียวอย่างชัดเจน" ตราบใดที่โปรแกรมบรรทัดคำสั่งพื้นฐานยังคงสามารถทำงานได้ในกรณีที่ไม่มีการซ้อนทับ GUI พวกเขาจะรวมกันโดย "การรวมเพียง" และไม่ใช่ "โปรแกรมเดียวที่มีประสิทธิภาพ" สังเกตตัวอย่างในข้อความที่คุณยกมา - คอมไพเลอร์ตั้งอยู่ที่ด้านบนของเคอร์เนลและจะไม่ทำงานหากไม่มี แต่เคอร์เนลจะทำงานอย่างมีความสุขในกรณีที่ไม่มีคอมไพเลอร์
Dave Sherohman

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

ลองแทนหนึ่งในตัวอย่างจากส่วนที่คุณยกมาและดูว่าวิธีการที่ถือ "... แต่คำถามเกี่ยวกับคอมไพเลอร์ซึ่งไม่มีประโยชน์อย่างสมบูรณ์หากไม่มีเคอร์เนลและดังนั้นจึงเป็นเรื่องจริงโดยไม่ต้องสงสัยเลยว่าพวกเขาเป็นโปรแกรมเดียว" ยกเว้นแน่นอนว่าข้อความที่คุณยกมาระบุอย่างชัดเจนว่า "คุณสามารถปฏิบัติต่อพวกเขาเป็นสองโปรแกรมแยกกัน" หากเป็นเพียงเรื่องของการพึ่งพาคุณก็ไม่สามารถรันซอฟต์แวร์ที่ปิดใน Linux ได้เพราะซอฟต์แวร์นั้นจะ "ไร้ประโยชน์อย่างสมบูรณ์" โดยไม่มีเคอร์เนล (GPLed)
Dave Sherohman

@Dave: ยกเว้นแน่นอนว่าคอมไพเลอร์และซอฟต์แวร์ปิดทุกประเภทจะไม่ไร้ประโยชน์หากไม่มีเคอร์เนลลินุกซ์เนื่องจากพวกมันสามารถทำงานได้ทุกอย่างที่ใช้มาตรฐานไลบรารี POSIX และ / หรือ C และให้การทำงานที่สำคัญของพวกเขาเอง . แตกต่างอย่างสิ้นเชิงจาก GUI wrapper ที่มีอยู่เพียงเพื่อขับเคลื่อนโปรแกรมบรรทัดคำสั่งหนึ่งโปรแกรมเท่านั้น
Michael Borgwardt

3
คุณคิดผิดในส่วน GUI wrapper GUI เดียวกันนั้นจะทำงานร่วมกับโปรแกรม CLI อื่น ๆ โดยเฉพาะในเวอร์ชันที่ใหม่กว่าของต้นฉบับ ที่เกี่ยวข้องในบริบทนี้เพราะหมายถึงสิทธิ์ GPL ดั้งเดิมของโปรแกรมที่สามารถใช้งานได้ หากฉันรวบรวมใหม่ให้เร็วขึ้น 10% CLI จะไม่ขัดขวางฉัน
MSalters

-3

เลขที่

รหัส GPL สามารถใช้ได้กับรหัส GPL อื่นเท่านั้น

อ้างถึงบรรทัดแรกของบทความGPLของวิกิพีเดีย:

GPL เป็นใบอนุญาต copyleft แรกสำหรับการใช้งานทั่วไปซึ่งหมายความว่างานที่ได้รับสามารถเผยแพร่ภายใต้เงื่อนไขใบอนุญาตเดียวกัน

นอกเหนือจากนั้น GPL นั้นยาวหลายหน้าและมีอยู่ในหลายรุ่น


คำเตือนพูดจาโผงผางล่วงหน้า!

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

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

ใช่แล้วมันเป็นตั๋วแบบเที่ยวเดียวด้วย GPL สามารถใช้รหัส / ไลเซนส์จากไลเซนส์ส่วนใหญ่ แต่ไลบรารี่ / รหัสเหล่านี้ไม่สามารถใช้โค้ด GPL ได้


มันบอกว่า "ผลงานที่ได้รับ" นั่นรวมถึงซอฟต์แวร์ที่เชื่อมโยงกับรหัส GPL แบบไดนามิกหรือไม่
rightfold

@WTP: ใช่แน่นอน - จุดทั้งหมดของ LGPL คือการได้รับใบอนุญาตที่ต่างออกไป
Michael Borgwardt

3
เชลล์ GUI ที่ล้อมรอบโปรแกรมบรรทัดคำสั่งไม่ใช่ "งานที่ได้รับ" ตามที่กำหนดไว้สำหรับวัตถุประสงค์ด้านลิขสิทธิ์
Dave Sherohman

1
@Dave Sherohman - ดูไม่ชัดเจน คำตอบที่ได้รับการยอมรับสำหรับคำถามนี้กล่าวว่า: "IMHO โดยสรุปแล้วเสื้อคลุมแท้ๆที่แสดงให้เห็นถึงการทำงานของโปรแกรม GPL ควรเป็น GPL" ไม่ใช่เพียงแค่มุมมองด้านเทคนิคของวิธีการสื่อสาร แต่เป็นความตั้งใจ ตัวอย่างเช่นการแปลหนังสือกำลังสร้างผลงานที่ได้รับ การแปลงเป็นรูปแบบ Kindle จะเป็นงานที่ได้รับมา ฉันสามารถเห็นผู้พิพากษาตัดสินว่าการเพิ่ม GUI กำลังสร้างผลงานที่ได้รับ ระวัง.
Scott Whitlock
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.