Использование C ++ / Java для разработки программного обеспечения для коммерческих целей


9

Я планирую разработать программу, которую собираюсь продать позже. Я пытаюсь выбрать язык для его кодирования и сузился до C ++ или Java.

Я прошел через лицензии GPL v2 и v3, используемые для GNU GCC и OpenJDK (да, я могу понять некоторые юридические вещи, но, конечно, не все). Но есть один момент, на который все неясны (это должно было быть одно из первых ответов, IMO): если я разрабатываю программу с использованием C ++ / Java и компилирую ее с помощью компилятора GCC или компилятора OpenJDK, могу ли я продать ее, не имея разместить мою программу под лицензией GPL?

Насколько я могу судить, у меня есть полные права назначать любую лицензию для моей программы, но есть одна загвоздка: в лицензии говорится, что я не должен связываться с какой-либо библиотекой, находящейся под лицензией GPL. Если это так, мне придется выпустить свою программу под лицензией GPL.

Теперь я не знаю, что в C ++ / Java считается библиотекой, поэтому, если я использую обычные вещи в C ++ (iostream, list, map и т. Д.) Или обычные классы / интерфейсы Java, доступные как часть стандартного JDK 6 распределение (String, List, Map и т. Д.), Означает ли это «связь с библиотеками»?


1. Мы не делаем юридических консультаций здесь. 2. Что такое «C ++ / Java»? 3. Посмотрите вокруг и увидите тысячи и тысячи коммерческих программных продуктов, написанных на Java, многие из которых содержат компоненты JNI.
bmargulies

1
/ В C ++ / Java просто используется как аббревиатура для «или», что является совершенно допустимым английским языком.
Робин Грин

Это звучит как вопрос для opensource.stackexchange.com . (Если там еще не было ответа.)
Кевин Крумвиде

Ответы:


13

если я разрабатываю программу с использованием C ++ / Java и компилирую ее с помощью компилятора GCC или компилятора OpenJDK, могу ли я продать ее без необходимости помещать свою программу под GPL?

Да. GPL специально исключает вывод работы программы:

выходные данные Программы покрываются только в том случае, если ее содержание представляет собой работу, основанную на Программе (независимо от того, была ли она выполнена при запуске Программы).

Это означает, что если вы включите в свою программу биты GCC или что-то еще под GPL, то да, это должно быть GPLed, иначе нет - тот факт, что его объектный код был создан компилятором GPL, не имеет отношения к тому, должен ли он быть GPL. ,

Все стандартные библиотеки языков, на которые вы бы ссылались, не являются GPL или GPL, но имеют специальное исключение, позволяющее вашему проприетарному программному обеспечению ссылаться на них, если вы их не изменяете . В случае C ++ я имею в виду libgcc, glibc и libstdc ++; в случае Java я имею в виду все библиотеки, включенные в JRE.

Технически вы все равно можете легально продавать программное обеспечение GPL, но практически никто не зарабатывает на этом деньги.


LGPL (Lesser GPL) позволяет приложению ссылаться на него, не требуя, чтобы это приложение само являлось GPLd. Библиотека GPL, с другой стороны, заразительна. Но вы правы, вывод компилятора явно исключен из условий GPL.
Берин Лорич

а что если я изменю стандартные языковые библиотеки? могу ли я это сделать? что происходит с лицензией моей программы?
Пиотрек

Тогда исключение не применяется, и вы должны соблюдать все условия соответствующей лицензии. Кроме того, в случае с Java существуют торговые марки, поэтому лучше не упоминать Java или OpenJDK в своей документации или рекламе, если вы их используете (но смотрите судебное дело Oracle против Google).
Робин Грин,

8

И GCC, и OpenJDK имеют явные исключения:

… Когда вы используете GCC для компиляции программы, GCC может комбинировать части определенных заголовочных файлов GCC и библиотек времени выполнения с скомпилированной программой. Цель этого исключения состоит в том, чтобы позволить компиляции не-GPL (включая проприетарные) программ использовать, таким образом, файлы заголовков и библиотеки времени выполнения, охватываемые этим исключением. ...

… Когда GNU Classpath используется без изменений в качестве базовой библиотеки классов для виртуальной машины, компилятора для Java-языка или для программы, написанной на языке программирования Java, это не влияет на лицензирование для непосредственного распространения этих программ…



0

OpenJDK является GPL, но за исключением ссылки на библиотеки. http://en.wikipedia.org/wiki/OpenJDK

Использование классов OpenJDK будет представлять собой ссылку на библиотеку, я думаю (rt.jar).

Библиотека в этом контексте, с точки зрения Java, безусловно, является jar зависимостей, war, class и т. Д. В любом случае, я уверен, что вы можете легально продавать Java-приложения - есть больше, чем Oracle / Sun не предприняла никаких юридических действий.


То же самое верно для libstdc ++ - у этого также есть исключение.
Робин Грин,

И rt.jar, и libstdc ++ являются реализациями спецификации, которая не является GPL. По сути, если бы я связал свое приложение с не-GPL-версией libstdc ++, оно работало бы одинаково (при условии, что спецификация была реализована правильно) в обеих версиях. Тот факт, что платформа динамически загружает версию библиотеки под лицензией GPL, не учитывается в вашем приложении. Вы написали в стандарт платформы, и подпадают под любую лицензию, которую вы хотите.
Берин Лорич

0

Не волнуйтесь, это вопрос компьютерного программирования или, по крайней мере, тот, который тесно связан с программистами.

Из того, что я знаю, если вы создаете программное обеспечение, которое связано с некоторым кодом GPL, вы должны выпустить свой исходный код, если вы распространяете свою программу.

Это не означает, что вы должны выпустить свой код для sourceforge, т. Е. Если третья сторона запрашивает у вас код, вы должны предоставить его.


Этот момент не имеет значения, потому что действие, описанное в вопросе, при прочих равных условиях не связано с ссылками на код GPL.
Робин Грин,

Вопрос выше: если я разрабатываю программу на C ++ / Java и компилирую ее с помощью компилятора GCC или компилятора OpenJDK, могу ли я продать ее без необходимости помещать свою программу под GPL?

Я думаю, что я четко указываю, что если вы используете код GPL, вы должны выпустить.

Извините, я был неточен - в некоторых случаях это связано с ссылками на GPL-код, но, например, применяется исключение Classpath, поэтому вам не нужно выпускать код под GPL.
Робин Грин,

ааа, хорошо, тогда не знал об этом
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.