Używanie C ++ / Java do tworzenia oprogramowania do celów komercyjnych

9

Planuję opracować program, który zamierzam później sprzedać. Próbuję wybrać język, w którym go kodować, i zawęziłem się do C ++ lub Java.

Przeszedłem przez licencje GPL v2 i v3 używane dla GNU GCC i OpenJDK (tak, rozumiem pewną ilość legalnych rzeczy, ale najwyraźniej nie wszystkie). Ale jest jeden punkt, w którym wszyscy są niejasni (powinna to być jedna z pierwszych odpowiedzi, IMO): jeśli opracuję program przy użyciu C ++ / Java i skompiluję go przy użyciu kompilatora GCC lub kompilatora OpenJDK, czy mogę go sprzedać bez posiadania umieścić mój program również na licencji GPL?

O ile mi wiadomo, mam pełne prawa do przypisania dowolnej licencji do mojego programu, ale jest pewien haczyk: w licencji mówi się, że nie powinienem linkować do żadnej biblioteki objętej GPL. Jeśli tak, będę musiał wydać mój program na licencji GPL.

Teraz nie wiem, co w C ++ / Java jest uważane za bibliotekę, więc jeśli używam normalnych rzeczy w C ++ (iostream, lista, mapa itp.) Lub normalnych klas / interfejsów Java dostępnych jako część standardowego JDK 6 dystrybucja (ciąg, lista, mapa itp.), Czy stanowi to „linkowanie do bibliotek”?

komar
źródło
1. Nie udzielamy tutaj porad prawnych. 2. Co to jest „C ++ / Java”? 3. Rozejrzyj się i zobacz tysiące produktów komercyjnych napisanych w Javie, wiele ze składnikami JNI.
bmargulies
1
/ In C ++ / Java jest po prostu używany jako skrót od „lub”, który jest całkowicie poprawnym angielskim.
Robin Green,
To brzmi jak pytanie do opensource.stackexchange.com . (Jeśli nie ma tam jeszcze odpowiedzi.)
Kevin Krumwiede

Odpowiedzi:

13

jeśli opracuję program przy użyciu C ++ / Java i skompiluję go przy użyciu kompilatora GCC lub kompilatora OpenJDK, czy mogę go sprzedać bez konieczności umieszczania mojego programu również na GPL?

Tak. GPL wyraźnie wyklucza wynik działania programu:

dane wyjściowe z Programu są pokrywane tylko wtedy, gdy ich zawartość stanowi pracę opartą na Programie (niezależnie od tego, czy została wykonana przez uruchomienie Programu).

co oznacza, że ​​jeśli włączysz do programu bity GCC lub coś innego GPL, to tak, musiałby być GPL, w przeciwnym razie nie - fakt, że jego kod obiektowy został wygenerowany przez kompilator GPL, nie ma znaczenia, czy powinien być GPL .

Wszystkie standardowe biblioteki językowe, do których prowadzisz link, nie są GPL lub są GPL, ale mają specjalny wyjątek, który pozwala twojemu oprogramowaniu połączyć się z nimi, jeśli ich nie zmodyfikujesz . W przypadku C ++ mam na myśli libgcc, glibc i libstdc ++; w przypadku Javy mam na myśli wszystkie biblioteki zawarte w JRE.

Technicznie rzecz biorąc, i tak możesz legalnie sprzedawać oprogramowanie GPL, ale prawie nikt nie zarabia na tym.

Robin Green
źródło
Licencja LGPL (Lesser GPL) pozwala aplikacji połączyć się z nią bez wymagania, aby sama aplikacja była GPLd. Z drugiej strony biblioteka GPL jest zaraźliwa. Ale masz rację, dane wyjściowe kompilatora są wyraźnie wyłączone z warunków GPL.
Berin Loritsch,
a co jeśli zmodyfikuję biblioteki standardowych języków? Czy mogę to zrobić? co stanie się z licencją mojego programu?
piotrek
W takim przypadku wyjątek nie ma zastosowania i musisz przestrzegać pełnych warunków odpowiedniej licencji. Istnieją również implikacje dotyczące znaków towarowych w przypadku Java - lepiej nie wspominać o Javie lub OpenJDK w dokumentacji lub reklamach, jeśli go używasz (ale zobacz sprawę Oracle przeciwko Google).
Robin Green,
8

Zarówno GCC, jak i OpenJDK mają wyraźne wyjątki:

… Gdy używasz GCC do kompilacji programu, GCC może łączyć części niektórych plików nagłówkowych GCC i bibliotek wykonawczych z kompilowanym programem. Celem tego wyjątku jest umożliwienie kompilacji programów spoza GPL (w tym prawnie zastrzeżonych) do korzystania w ten sposób z plików nagłówkowych i bibliotek wykonawczych objętych tym wyjątkiem. …

… Gdy GNU Classpath jest używany jako niezmodyfikowany jako biblioteka klasy podstawowej dla maszyny wirtualnej, kompilatora dla języka Java lub programu napisanego w języku programowania Java, nie wpływa to na licencje na bezpośrednią dystrybucję tych programów…

vartec
źródło
2

To nie jest niejasne. Istnieje wyjątek od licencji, która ma tutaj zastosowanie. Można to znaleźć na podstawie odpowiedniego pytania w FAQ GPL .

Krótko mówiąc, to, co chcesz zrobić, jest dozwolone.

David Thornley
źródło
0

OpenJDK jest na licencji GPL, ale z wyjątkiem łączenia z bibliotekami. http://en.wikipedia.org/wiki/OpenJDK

Myślę, że użycie klas OpenJDK stanowiłoby łącze do biblioteki (rt.jar).

Biblioteka w tym kontekście, z punktu widzenia Javy, jest z pewnością słoikiem zależności, wojną, klasą itp. W każdym razie jestem pewien, że możesz legalnie sprzedawać aplikację Java - jest więcej niż kilka takich Oracle / Firma Sun nie podjęła działań prawnych.

bogaty
źródło
To samo dotyczy libstdc ++ - ma również wyjątek.
Robin Green,
Zarówno rt.jar, jak i libstdc ++ są implementacjami specyfikacji innej niż GPL. Zasadniczo, jeśli połączyłem moją aplikację z wersją libstdc ++ nieobjętą GPL, działałaby ona identycznie (zakładając, że specyfikacja została poprawnie zaimplementowana) w obu wersjach. Fakt, że platforma dynamicznie ładuje wersję biblioteki GPL, nie wlicza się do Twojej aplikacji. Napisałeś do standardu platformy i jesteś objęty dowolną licencją.
Berin Loritsch,
0

Nie martw się, jest to pytanie programistyczne lub przynajmniej takie, które ściśle dotyczy programistów.

Z tego co wiem, jeśli tworzysz oprogramowanie powiązane z jakimś kodem GPL, musisz rozpowszechnić swój kod źródłowy, jeśli rozpowszechniasz swój program.

Nie oznacza to, że musisz wydać swój kod źródłowy, tzn. Jeśli jednak strona trzecia poprosi o kod, musisz go dostarczyć.


źródło
Ten punkt nie jest istotny, ponieważ aktywność opisana w pytaniu nie jest równoznaczna z linkowaniem do kodu GPL.
Robin Green
Pytanie powyżej: jeśli opracuję program przy użyciu C ++ / Java i skompiluję go przy użyciu kompilatora GCC lub kompilatora OpenJDK, czy mogę go sprzedać bez konieczności umieszczania mojego programu również na GPL?
Myślę, że wyraźnie zaznaczam, że jeśli używasz kodu GPL, musisz go zwolnić.
Przepraszam, byłem niedokładny - w niektórych przypadkach wiąże się to w pewnym sensie z linkowaniem do kodu GPL, ale np. Ma zastosowanie wyjątek Classpath, więc nie musisz publikować swojego kodu na GPL.
Robin Green,
ah, ok, więc nie wiedziałem o tym