Verwendung von C ++ / Java zur Entwicklung von Software für kommerzielle Zwecke

9

Ich plane ein Programm zu entwickeln, das ich später verkaufen möchte. Ich versuche, mich für eine Sprache zu entscheiden, mit der ich sie codieren möchte, und habe mich auf C ++ oder Java beschränkt.

Ich habe die GPL v2- und v3-Lizenzen durchlaufen, die für GNUs GCC und OpenJDK verwendet wurden (ja, ich kann einige rechtliche Aspekte verstehen, aber natürlich nicht alle). Aber es gibt einen Punkt, an dem jeder unklar ist (dies sollte eines der ersten Dinge sein, die beantwortet wurden, IMO): Wenn ich ein Programm mit C ++ / Java entwickle und es mit dem GCC-Compiler oder dem OpenJDK-Compiler kompiliere, kann ich es verkaufen, ohne es zu haben um mein Programm auch unter GPL zu platzieren?

Soweit ich das beurteilen kann, habe ich die vollen Rechte, meinem Programm eine Lizenz zuzuweisen, aber es gibt einen Haken: In der Lizenz steht, dass ich keine Verknüpfung zu einer Bibliothek herstellen sollte, die unter der GPL steht. Wenn ja, muss ich mein Programm unter GPL veröffentlichen.

Jetzt weiß ich nicht, was in C ++ / Java als Bibliothek betrachtet wird. Wenn ich also das normale Material in C ++ (iostream, list, map usw.) oder die normalen Java-Klassen / -Schnittstellen verwende, die als Teil des Standard-JDK verfügbar sind 6 Verteilung (String, Liste, Map usw.), stellt dies eine "Verknüpfung mit den Bibliotheken" dar?

Mücke
quelle
1. Wir machen hier keine Rechtsberatung. 2. Was ist 'C ++ / Java'? 3. Schauen Sie sich um und sehen Sie Tausende und Abertausende von kommerziellen Softwareprodukten, die in Java geschrieben wurden, viele davon mit JNI-Komponenten.
Bmargulies
1
Das / in C ++ / Java wird nur als Abkürzung für "oder" verwendet, was vollkommen gültiges Englisch ist.
Robin Green
Dies klingt nach einer Frage an opensource.stackexchange.com . (Wenn es dort noch nicht beantwortet wurde.)
Kevin Krumwiede

Antworten:

13

Wenn ich ein Programm mit C ++ / Java entwickle und es mit dem GCC-Compiler oder dem OpenJDK-Compiler kompiliere, kann ich es verkaufen, ohne mein Programm auch unter die GPL stellen zu müssen?

Ja. Die GPL schließt die Ausgabe der Programmausführung ausdrücklich aus:

Die Ausgabe des Programms wird nur abgedeckt, wenn sein Inhalt eine auf dem Programm basierende Arbeit darstellt (unabhängig davon, ob sie durch Ausführen des Programms erstellt wurde).

Das heißt, wenn Sie GCC-Bits oder etwas anderes GPLed in Ihr Programm aufnehmen, dann müsste es ja GPLed sein, sonst nein - die Tatsache, dass sein Objektcode von einem GPLed-Compiler erstellt wurde, ist nicht relevant dafür, ob es GPLed sein soll .

Alle Standard-Sprachbibliotheken, auf die Sie verlinken würden, sind entweder nicht GPLed oder GPLed, haben jedoch eine spezielle Ausnahme, damit Ihre proprietäre Software eine Verknüpfung zu ihnen herstellen kann, wenn Sie sie nicht ändern . Im Fall von C ++ meine ich libgcc, glibc und libstdc ++; Im Fall von Java meine ich alle in der JRE enthaltenen Bibliotheken.

Technisch gesehen können Sie GPL-Software ohnehin legal verkaufen, aber fast niemand verdient damit Geld.

Robin Green
quelle
Mit der LGPL (Lesser GPL) kann eine Anwendung eine Verbindung zu ihr herstellen, ohne dass diese Anwendung selbst GPLd sein muss. Eine GPL-Bibliothek ist dagegen ansteckend. Aber Sie haben Recht, die Ausgabe des Compilers wird ausdrücklich von den GPL-Begriffen ausgeschlossen.
Berin Loritsch
und was ist, wenn ich die Standard-Sprachbibliotheken ändere? Kann ich es schaffen? Was passiert dann mit der Lizenz meines Programms?
Piotrek
Dann gilt die Ausnahme nicht und Sie müssen die vollständigen Bedingungen der entsprechenden Lizenz befolgen. Außerdem gibt es im Fall von Java Auswirkungen auf die Marke. Erwähnen Sie Java oder OpenJDK in Ihrer Dokumentation oder Werbung besser nicht, wenn Sie es verwenden (siehe jedoch das Gerichtsverfahren Oracle gegen Google).
Robin Green
8

Sowohl GCC als auch OpenJDK haben explizite Ausnahmen:

… Wenn Sie ein Programm mit GCC kompilieren, kombiniert GCC möglicherweise Teile bestimmter GCC-Header-Dateien und Laufzeitbibliotheken mit dem kompilierten Programm. Der Zweck dieser Ausnahme besteht darin, die Kompilierung von Nicht-GPL-Programmen (einschließlich proprietärer Programme) zu ermöglichen, um auf diese Weise die von dieser Ausnahme abgedeckten Header-Dateien und Laufzeitbibliotheken zu verwenden. …

… Wenn GNU Classpath unverändert als Kernklassenbibliothek für eine virtuelle Maschine, einen Compiler für die Java-Sprache oder für ein in der Programmiersprache Java geschriebenes Programm verwendet wird, hat dies keine Auswirkungen auf die Lizenzierung für die direkte Verteilung dieser Programme…

vartec
quelle
0

Das OpenJDK ist GPL-fähig, jedoch mit Ausnahme der Verknüpfung mit Bibliotheken. http://en.wikipedia.org/wiki/OpenJDK

Die Verwendung von OpenJDK-Klassen würde meiner Meinung nach eine Verknüpfung mit einer Bibliothek darstellen (rt.jar).

Eine Bibliothek in diesem Zusammenhang ist aus Sicht von Java sicherlich ein Abhängigkeitsglas, ein Krieg, eine Klasse usw. Wie auch immer, ich bin sicher, Sie können eine Java-App legal verkaufen - es gibt mehr als ein paar, die Oracle / Sun hat keine rechtlichen Schritte eingeleitet.

Reich
quelle
Gleiches gilt für libstdc ++ - es gibt auch eine Ausnahme.
Robin Green
Sowohl rt.jar als auch libstdc ++ sind Implementierungen einer Spezifikation, die keine GPL ist. Wenn ich meine Anwendung mit einer Nicht-GPL-Version von libstdc ++ verknüpfe, funktioniert sie im Wesentlichen in beiden Versionen identisch (vorausgesetzt, die Spezifikation wurde ordnungsgemäß implementiert). Die Tatsache, dass eine Plattform eine GPL-Version der Bibliothek dynamisch lädt, zählt nicht für Ihre App. Sie haben nach dem Plattformstandard geschrieben und sind von jeder gewünschten Lizenz abgedeckt.
Berin Loritsch
0

Keine Sorge, dies ist eine Frage der Computerprogrammierung oder zumindest eine, die Programmierer sehr betrifft.

Soweit ich weiß, müssen Sie, wenn Sie Software erstellen, die mit einem GPL-Code verknüpft ist, Ihren Quellcode freigeben, wenn Sie Ihr Programm verteilen.

Das bedeutet nicht, dass Sie Ihren Code für sourceforge freigeben müssen, dh wenn Sie von einem Dritten nach dem Code gefragt werden, müssen Sie ihn bereitstellen.


quelle
Dieser Punkt ist nicht relevant, da die in der Frage beschriebene Aktivität bei sonst gleichen Bedingungen keine Verknüpfung mit GPL-Code beinhaltet.
Robin Green
Die obige Frage: Wenn ich ein Programm mit C ++ / Java entwickle und es mit dem GCC-Compiler oder dem OpenJDK-Compiler kompiliere, kann ich es verkaufen, ohne mein Programm auch unter die GPL stellen zu müssen?
Ich denke, ich spezifiziere klar, dass, wenn Sie GPL-Code verwenden, Sie freigeben müssen.
Entschuldigung, ich war ungenau - in einigen Fällen handelt es sich in gewissem Sinne um eine Verknüpfung mit GPL-Code, aber z. B. gilt die Classpath-Ausnahme, sodass Sie Ihren Code nicht unter der GPL freigeben müssen.
Robin Green
ahh, ok dann wusste ich nichts davon