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


15

ฉันเข้าใจกฎของ GPL ระบุว่าถ้าผมแจกจ่ายซอฟต์แวร์ใด ๆ ที่ใช้รหัส GPL แล้วว่ารหัสจะต้องได้รับใบอนุญาตภายใต้จีพี

อย่างไรก็ตามฉันสงสัยว่ากฎนี้มีอะไรบ้าง: ฉันกำลังสร้างบริการที่ฉันจะขายและจำหน่ายซอฟต์แวร์ด้านลูกค้า

ซอฟต์แวร์ฝั่งไคลเอ็นต์ไม่มีรหัส GPL ในนั้น มันเป็นรหัสของฉันเอง 100%

อย่างไรก็ตามซอฟต์แวร์ไคลเอ็นต์จะเชื่อมต่อกับเซิร์ฟเวอร์ของฉันซึ่งใช้รหัส GPL ภายใน

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

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

คำตอบ:


12

นี่ไม่ใช่ปัญหาที่ชัดเจน พิจารณาสองปลายสุดของสเปกตรัม:

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

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

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

คำถามที่พบบ่อย GPL มีสิ่งนี้จะพูดเกี่ยวกับโปรแกรมที่ทำงานร่วมกันได้ใบอนุญาตแยกต่างหาก :

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

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

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

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

...

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

ดังนั้นการสื่อสารผ่านเครือข่ายจะผ่านการทดสอบ "กลไกการสื่อสาร" แต่ไม่ชัดเจนว่าคู่ของลูกค้า / เซิร์ฟเวอร์ของคุณตรงกับการทดสอบ "ความหมายของการสื่อสาร"


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

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

4

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

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

GNU Affero GPL เป็นใบอนุญาตที่คล้ายกับ GPL โดยมี verbage เพิ่มเติมที่ออกแบบมาเพื่อปิดช่องโหว่ที่คุณต้องการใช้ (ดู: http://www.gnu.org/licenses/why-affero-gpl.htmlและดูเพิ่มเติมที่: http://en.wikipedia.org/wiki/Affero_General_Public_License#Examples_of_web_applications_under_GNU_AGPL )

คำเตือน: ฉันเป็นนักพัฒนาไม่ใช่ทนายความ


3
เพียงแค่ทราบคำเตือน: หากลูกค้าได้รับการออกแบบมาโดยเฉพาะเพื่อสื่อสารกับนี้ซอฟต์แวร์เซิร์ฟเวอร์แล้วมันเป็นไปได้ว่าทั้ง FSF ไม่พิจารณาเซิร์ฟเวอร์และไคลเอ็นต์ซอฟต์แวร์เป็นหนึ่งในผลิตภัณฑ์ ดูได้ที่นี่ในคำถามที่พบบ่อย GPL
Bart van Ingen Schenau

ในทางกลับกันหากบุคคลที่สามเขียนซอฟต์แวร์ไคลเอ็นต์เพื่อสื่อสารกับเซิร์ฟเวอร์ของคุณโดยที่ไม่เคยเห็นซอฟต์แวร์เซิร์ฟเวอร์หรือสิทธิ์ใช้งานมาก่อนอาร์กิวเมนต์นั้นดูไร้สาระ และนั่นหมายความว่า Microsoft สามารถฟ้องร้องผู้ที่เขียนซอฟต์แวร์ที่เชื่อมต่อกับเซิร์ฟเวอร์ Outlook ได้
gnasher729

2

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

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


ฉันจะทำผิดด้านความระมัดระวังและไม่ใช้รหัส GPL ในเซิร์ฟเวอร์ของฉันแล้ว
Steven Jeffries

2
@StevenJeffries คำตอบนี้ทำงานกับทั้งการปฏิบัติในปัจจุบันและข้อกำหนดของ GPL ตราบใดที่ฉันไม่แจกจ่ายซอฟต์แวร์หรืองานที่ได้รับฉันมีอิสระที่จะใช้ซอฟต์แวร์ GPL'ed บนเซิร์ฟเวอร์เช่น Linux หรือ GCC หรือ WordPress การใช้ซอฟต์แวร์เพียงอย่างเดียวไม่ได้สร้างผลงานที่ได้รับมา ในกรณีของ GPL จะถือว่าใช้ได้เมื่อมีการแยกระดับกระบวนการอย่างน้อยเกี่ยวข้อง (ไม่มีหน่วยความจำที่ใช้ร่วมกันไม่มีโครงสร้างข้อมูลที่ใช้ร่วมกัน) ดูคำตอบของ J. Lenthe สำหรับวิธีแก้ไขปัญหาที่ถูกต้องและสำหรับการอ้างอิง
amon

@ มอน: หากคุณไม่ได้แชร์โครงสร้างข้อมูลระหว่างเซิร์ฟเวอร์กับลูกค้าแสดงว่าคุณพูดถูก ฉันสงสัยว่าเป็นกรณี ความแตกต่างที่ฉันวาด (เป็นซอฟต์แวร์ไคลเอ็นต์ที่ขึ้นอยู่กับซอฟต์แวร์เซิร์ฟเวอร์สำหรับการดำเนินการที่เหมาะสม) ไม่ได้เป็นไปตามใจชอบ เป็นหนึ่งในสองข้อกำหนดที่จำเป็นสำหรับสิ่งที่ FSF พิจารณาว่าไม่ใช่ "งานที่ได้มา" อื่น ๆ คือ "การสื่อสารความยาวแขน" อย่าใช้คำพูดของฉันมัน; อ่านด้วยตัวคุณเองบนเว็บไซต์ FSF
Robert Harvey

@amon: คุณสามารถอ่านข้อมูลเพิ่มเติมเกี่ยวกับที่นี่
Robert Harvey

@amon รายการคำถามที่พบบ่อย GPL ที่เกี่ยวข้องมาก (เช่นเดียวกับการติดตามหลังจากอ่านลิงก์ของ Robert) คือสิ่งนี้โดยเฉพาะในสามย่อหน้าสุดท้าย: gnu.org/licenses/gpl-faq.html#MereAggregation
apsillers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.