ใช้ C ++ / Java เพื่อพัฒนาซอฟต์แวร์เพื่อวัตถุประสงค์ทางการค้า


9

ฉันวางแผนที่จะพัฒนาโปรแกรมที่ฉันตั้งใจจะขายในภายหลัง ฉันกำลังพยายามตัดสินใจใช้ภาษาเพื่อเขียนโค้ดด้วยและแคบลงเหลือ C ++ หรือ Java

ฉันเคยผ่านใบอนุญาต GPL v2 และ v3 ที่ใช้สำหรับ GCC และ OpenJDK ของ GNU (ใช่ฉันเข้าใจสิ่งที่ถูกกฎหมายบางอย่าง แต่ชัดเจนไม่ใช่ทั้งหมด) แต่มีจุดหนึ่งที่ทุกคนไม่ชัดเจน (นี่ควรเป็นหนึ่งในสิ่งแรกที่ตอบว่า IMO): ถ้าฉันพัฒนาโปรแกรมโดยใช้ C ++ / Java และคอมไพล์โดยใช้ GCC คอมไพเลอร์หรือคอมไพเลอร์ของ OpenJDK ฉันสามารถขายได้โดยไม่ต้อง วางโปรแกรมของฉันภายใต้ GPL เช่นกัน?

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

ตอนนี้ฉันไม่รู้ว่าอะไรใน C ++ / Java ถือเป็นไลบรารีดังนั้นถ้าฉันใช้สิ่งปกติใน C ++ (iostream, รายการ, แผนที่, ฯลฯ ) หรือ Java คลาส / อินเตอร์เฟสปกติที่มีอยู่เป็นส่วนหนึ่งของมาตรฐาน JDK การกระจาย 6 รายการ (สตริง, รายการ, แผนที่, ฯลฯ ) สิ่งนี้เป็นการเชื่อมโยงไปยังไลบรารีหรือไม่?


1. เราไม่ได้ทำคำแนะนำทางกฎหมายแถวนี้ 2. 'C ++ / Java' คืออะไร 3. มองไปรอบ ๆ และดูผลิตภัณฑ์ซอฟต์แวร์เชิงพาณิชย์ที่มีการเขียนใน Java และผลิตภัณฑ์ JNI จำนวนหลายพันรายการ
bmargulies

1
/ ใน C ++ / Java กำลังถูกใช้เป็นตัวย่อสำหรับ "หรือ" ซึ่งเป็นภาษาอังกฤษที่ถูกต้องสมบูรณ์
Robin Green

เสียงนี้เหมือนคำถามสำหรับopensource.stackexchange.com (หากยังไม่ได้รับคำตอบจากที่นั่น)
Kevin Krumwiede

คำตอบ:


13

ถ้าฉันพัฒนาโปรแกรมโดยใช้ C ++ / Java และคอมไพล์ด้วย GCC คอมไพเลอร์หรือคอมไพเลอร์ของ OpenJDK ฉันสามารถขายได้โดยไม่ต้องวางโปรแกรมภายใต้ GPL ด้วยหรือไม่

ใช่. GPL แยกผลลัพธ์ของการรันโปรแกรมโดยเฉพาะ:

เอาท์พุทจากโปรแกรมจะครอบคลุมเฉพาะในกรณีที่เนื้อหาของมันเป็นงานที่ขึ้นอยู่กับโปรแกรม (เป็นอิสระจากการทำโดยการเรียกใช้โปรแกรม)

ซึ่งหมายความว่าหากคุณรวมบิตของ GCC หรืออย่างอื่น GPLed ในโปรแกรมของคุณแล้วใช่มันจะต้องเป็น GPLed มิฉะนั้นไม่ใช่ - ความจริงที่ว่ารหัสวัตถุที่ผลิตโดยคอมไพเลอร์ GPLed ไม่เกี่ยวข้องกับว่าควรจะเป็น GPLed .

ทุกห้องสมุดภาษามาตรฐานคุณจะเชื่อมโยงไปมีทั้งไม่ GPLed หรือถูก GPLed แต่มีข้อยกเว้นพิเศษเพื่อให้ซอฟต์แวร์ที่เป็นกรรมสิทธิ์ของคุณเพื่อเชื่อมโยงไปยังพวกเขาถ้าคุณไม่ได้แก้ไขได้ ในกรณีของ C ++ ฉันหมายถึง libgcc, glibc และ libstdc ++; ในกรณีของ Java ฉันหมายถึงไลบรารีทั้งหมดที่รวมอยู่ใน JRE

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


LGPL (Lesser GPL) อนุญาตให้แอปพลิเคชันเชื่อมโยงกับแอปพลิเคชันนั้นโดยไม่ต้องการให้แอปพลิเคชันนั้นเป็น GPLd เอง ห้องสมุด GPL ในทางกลับกันติดเชื้อ แต่คุณถูกต้องผลลัพธ์ของคอมไพเลอร์จะถูกแยกออกจากเงื่อนไข GPL อย่างชัดเจน
Berin Loritsch

และถ้าฉันแก้ไขไลบรารีภาษามาตรฐาน ฉันทำมันได้ไหม? จะเกิดอะไรขึ้นกับลิขสิทธิ์ของโปรแกรมของฉันในตอนนั้น?
piotrek

จากนั้นข้อยกเว้นจะไม่นำมาใช้และคุณต้องปฏิบัติตามข้อกำหนดทั้งหมดของสิทธิ์ใช้งานที่เกี่ยวข้อง นอกจากนี้ยังมีความหมายของเครื่องหมายการค้าในกรณีของ Java - ดีกว่าไม่พูดถึง Java หรือ OpenJDK ในเอกสารหรือโฆษณาของคุณเลยหากคุณใช้งาน (แต่ดูกรณีศาล Oracle v Google)
Robin Green

8

ทั้ง GCC และ OpenJDK มีข้อยกเว้นที่ชัดเจน:

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

... เมื่อ GNU Classpath ใช้ unmodified เป็นไลบรารีคลาสหลักสำหรับเครื่องเสมือนคอมไพเลอร์สำหรับ java languge หรือสำหรับโปรแกรมที่เขียนด้วยภาษาโปรแกรม Java มันจะไม่ส่งผลกระทบต่อสิทธิ์ใช้งานสำหรับการแจกจ่ายโปรแกรมเหล่านั้นโดยตรง ...



0

OpenJDK เป็น GPL แต่มีข้อยกเว้นสำหรับการเชื่อมโยงไปยังห้องสมุด http://en.wikipedia.org/wiki/OpenJDK

การใช้คลาส OpenJDK จะเป็นการเชื่อมโยงไปยังไลบรารีที่ฉันคิด (rt.jar)

ห้องสมุดในบริบทนั้นจากมุมมองของ Java นั้นแน่นอนว่าเป็น jar อ้างอิง, สงคราม, คลาสและอื่น ๆ อย่างไรก็ตามฉันแน่ใจว่าคุณสามารถขายแอป Java ได้อย่างถูกกฎหมาย - มีมากกว่าสองสามอย่างที่ Oracle / ซุนยังไม่ได้ดำเนินการทางกฎหมาย


เช่นเดียวกับ libstdc ++ - นอกจากนี้ยังมีข้อยกเว้น
Robin Green

ทั้ง rt.jar และ libstdc ++ เป็นการนำไปใช้ของข้อกำหนดที่ไม่ใช่ GPL โดยพื้นฐานแล้วถ้าฉันเชื่อมโยงแอปพลิเคชันของฉันกับ libstdc ++ เวอร์ชันที่ไม่ใช่ GPL มันก็จะทำงานเหมือนกัน ความจริงที่ว่าแพลตฟอร์มโหลดไลบรารีเวอร์ชัน GPL แบบไดนามิกจะไม่นับรวมกับแอปของคุณ คุณเขียนถึงแพลตฟอร์มมาตรฐานและครอบคลุมภายใต้สิทธิ์ใช้งานใดก็ตามที่คุณต้องการ
Berin Loritsch

0

ไม่ต้องกังวลนี่เป็นคำถามการเขียนโปรแกรมคอมพิวเตอร์หรืออย่างน้อยหนึ่งคำถามที่เกี่ยวข้องกับโปรแกรมเมอร์

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

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


ประเด็นนั้นไม่เกี่ยวข้องเนื่องจากกิจกรรมที่อธิบายไว้ในคำถามไม่เกี่ยวข้องกับการเชื่อมโยงไปยังรหัส GPL
Robin Green

คำถามข้างต้น: ถ้าฉันพัฒนาโปรแกรมโดยใช้ C ++ / Java และคอมไพล์โดยใช้ GCC compiler หรือ OpenJDK ของคอมไพเลอร์ฉันสามารถขายได้โดยไม่ต้องวางโปรแกรมของฉันภายใต้ GPL เช่นกัน?

ฉันคิดว่าฉันกำลังระบุอย่างชัดเจนว่าหากคุณใช้รหัส GPL คุณต้องเผยแพร่

ขออภัยฉันไม่ถูกต้อง - ในบางกรณีการเชื่อมโยงไปยังรหัส GPLed ในบางกรณี แต่เช่นข้อยกเว้น Classpath มีผลบังคับใช้ดังนั้นคุณไม่จำเป็นต้องเผยแพร่รหัสของคุณภายใต้ GPL
Robin Green

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