ฉัน (ตามกฎหมาย) ใช้โปรแกรมที่เผยแพร่ภายใต้ GPL จากโปรแกรมอื่นที่ฉันกำลังเขียนอยู่หรือไม่และไม่ต้องเคารพ GPL (สำหรับโปรแกรมที่ฉันเขียน)
ตัวอย่างเช่นฉันมี GUI ที่ใช้โปรแกรม (ซึ่งอยู่ภายใต้ GPL) ฉันสามารถซ่อนรหัสใน GUI และขายได้หรือไม่
ฉัน (ตามกฎหมาย) ใช้โปรแกรมที่เผยแพร่ภายใต้ GPL จากโปรแกรมอื่นที่ฉันกำลังเขียนอยู่หรือไม่และไม่ต้องเคารพ GPL (สำหรับโปรแกรมที่ฉันเขียน)
ตัวอย่างเช่นฉันมี GUI ที่ใช้โปรแกรม (ซึ่งอยู่ภายใต้ GPL) ฉันสามารถซ่อนรหัสใน GUI และขายได้หรือไม่
คำตอบ:
คุณสามารถใช้โปรแกรม 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 แต่หากพวกเขารู้ว่าสิ่งที่พวกเขาได้รับคือโปรแกรมฟรีรวมถึงโปรแกรมอื่น ๆ เคียงข้างสิทธิของพวกเขาจะชัดเจน
ข้อจำกัดความรับผิดชอบมาตรฐาน: ฉันไม่ใช่ทนายความและแม้ว่าฉันเป็นทนายความฉันไม่ใช่ทนายความของคุณ หากคุณต้องการคำตอบที่ชัดเจนปรึกษาผู้เชี่ยวชาญด้านกฎหมายที่เหมาะสมซึ่งได้รับใบอนุญาตให้ฝึกในเขตอำนาจศาลของคุณ
ขึ้นอยู่กับว่าคุณหมายถึงอะไรโดยใช้มัน?
นอกจากนี้ยังขึ้นอยู่กับรุ่น / ตัวแปรของ GPL ที่รหัสอื่นอยู่ภายใต้
ข้อจำกัดความรับผิดชอบทางกฎหมาย: ฉันไม่ใช่ทนายความ
ขึ้นอยู่กับว่าโปรแกรมของคุณ "ใช้" โปรแกรม GPL อย่างไร คำถามที่พบบ่อย GPL มีคำอธิบายที่ค่อนข้างยาวแต่ก็ยังเปิดให้ตีความได้มากมาย:
คุณไม่สามารถรวมซอฟต์แวร์ที่มี GPL ในระบบที่เป็นกรรมสิทธิ์ได้ (... ) อย่างไรก็ตามในหลายกรณีคุณสามารถแจกจ่ายซอฟต์แวร์ที่มี GPL ครอบคลุมควบคู่ไปกับระบบกรรมสิทธิ์ของคุณ ในการทำเช่นนี้อย่างถูกต้องคุณต้องตรวจสอบให้แน่ใจว่าโปรแกรมฟรีและที่ไม่ใช่ฟรีสื่อสารได้ที่ความยาวของแขนซึ่งไม่รวมกันในลักษณะที่จะทำให้โปรแกรมมีประสิทธิภาพเพียงโปรแกรมเดียว (... ) หากทั้งสองโปรแกรมรวมกันเพื่อให้พวกเขากลายเป็นสองส่วนอย่างมีประสิทธิภาพของโปรแกรมหนึ่งจากนั้นคุณไม่สามารถถือว่าพวกเขาเป็นสองโปรแกรมแยก ดังนั้น GPL จึงต้องครอบคลุมทั้งหมดหากทั้งสองโปรแกรมยังคงแยกจากกันได้ดีเช่นคอมไพเลอร์และเคอร์เนลหรือเช่นตัวแก้ไขและเชลล์คุณสามารถใช้มันเป็นสองโปรแกรมแยกกัน - แต่คุณต้องทำอย่างถูกต้อง ปัญหานี้เป็นเพียงหนึ่งในรูปแบบ: วิธีที่คุณอธิบายสิ่งที่คุณกำลังทำ ทำไมเราถึงสนใจเรื่องนี้ เนื่องจากเราต้องการให้แน่ใจว่าผู้ใช้เข้าใจสถานะฟรีของซอฟต์แวร์ที่ครอบคลุม GPL ในการรวบรวม
ฉันคิดว่าในตัวอย่างของ GUI ที่มีอยู่ส่วนใหญ่เรียกโปรแกรมบรรทัดคำสั่ง GPL ทั้งสองรูปแบบโปรแกรมเดียวอย่างชัดเจนดังนั้นคุณจะต้องปล่อยรหัสของคุณภายใต้ GPL
เลขที่
รหัส GPL สามารถใช้ได้กับรหัส GPL อื่นเท่านั้น
อ้างถึงบรรทัดแรกของบทความGPLของวิกิพีเดีย:
GPL เป็นใบอนุญาต copyleft แรกสำหรับการใช้งานทั่วไปซึ่งหมายความว่างานที่ได้รับสามารถเผยแพร่ภายใต้เงื่อนไขใบอนุญาตเดียวกัน
นอกเหนือจากนั้น GPL นั้นยาวหลายหน้าและมีอยู่ในหลายรุ่น
คำเตือนพูดจาโผงผางล่วงหน้า!
ฉันเองไม่ชอบใบอนุญาต GPL มากเพราะเป็นข้อ จำกัด และลักษณะคล้ายไวรัส พวกเขาเรียกมันว่า "ฟรี" แต่จริงๆแล้วมันค่อนข้างตรงกันข้ามรหัส GPL ไม่สามารถใช้งานได้ยกเว้นรหัส GPL อื่น ๆ ดังนั้นการบังคับให้โครงการอื่นเข้าสู่ GPL หรือถูกบังคับให้เขียนไลบรารีทั้งหมดไม่ว่าโครงการปัจจุบันของคุณจะเป็นโอเพนซอร์สหรือไม่ก็ตาม มีโครงการโอเพนซอร์ซขนาดใหญ่เช่น freeBSD เป็นต้นซึ่งถูกบังคับให้เขียนใหม่หลายร้อยหลายพันบรรทัดของรหัส linux เพราะใบอนุญาตของพวกเขาไม่เข้ากันมันก็ "ฟรี" เกินไปในแง่ที่ว่า "ทำทุกอย่างที่คุณต้องการ" ซึ่งเห็นได้ชัด เข้ากันไม่ได้กับ GPL
หากคุณต้องการใบอนุญาต "ฟรี" อย่างแท้จริงในแง่ "ทำทุกอย่างที่คุณต้องการ" ฉันขอแนะนำใบอนุญาต BSD หรือ MIT ... จริง ๆ แล้วใบอนุญาตอื่น ๆ ส่วนใหญ่ก็โอเค มันเป็นแค่ GPL ซึ่งเป็นปัญหาจริงๆเพราะมัน จำกัด แค่ไหนและมันบังคับให้คนอื่นเข้ามาได้อย่างไร สุดท้ายมันซับซ้อนเกินไป
ใช่แล้วมันเป็นตั๋วแบบเที่ยวเดียวด้วย GPL สามารถใช้รหัส / ไลเซนส์จากไลเซนส์ส่วนใหญ่ แต่ไลบรารี่ / รหัสเหล่านี้ไม่สามารถใช้โค้ด GPL ได้