Utilizzo di C ++ / Java per sviluppare software a scopo commerciale


9

Sto programmando di sviluppare un programma che intendo vendere in seguito. Sto provando a decidere un linguaggio con cui codificarlo, e ho ristretto a C ++ o Java.

Ho esaminato le licenze GPL v2 e v3 usate per GCC e OpenJDK di GNU (sì, posso capire un po 'di roba legale, ma chiaramente, non tutto). Ma c'è un punto su cui tutti sono oscuri (questa avrebbe dovuto essere una delle prime cose a cui ho risposto, IMO): se sviluppo un programma usando C ++ / Java e lo compilo usando il compilatore GCC o il compilatore OpenJDK, posso venderlo senza avere mettere anche il mio programma sotto GPL?

Per quanto ne so, ho pieno diritto di assegnare qualsiasi licenza al mio programma, ma c'è un problema: nella licenza si dice che non dovrei collegarmi a nessuna libreria che è sotto GPL. In tal caso, dovrò rilasciare il mio programma sotto GPL.

Ora, non so cosa in C ++ / Java sia considerato una libreria, quindi se uso le cose normali in C ++ (iostream, list, map, ecc.) O le normali classi / interfacce Java disponibili come parte del JDK standard 6 distribuzione (String, List, Map, ecc.), Ciò costituisce "collegamento alle librerie"?


1. Non forniamo consulenza legale qui. 2. Che cos'è "C ++ / Java"? 3. Guardati intorno e vedi migliaia e migliaia di prodotti software commerciali scritti in Java, molti con componenti JNI.
bmargulies,

1
Il / in C ++ / Java viene appena usato come abbreviazione di "o", che è un inglese perfettamente valido.
Robin Green,

Sembra una domanda per opensource.stackexchange.com . (Se non ha già ricevuto risposta lì.)
Kevin Krumwiede,

Risposte:


13

se sviluppo un programma usando C ++ / Java e lo compilo usando il compilatore GCC o il compilatore OpenJDK, posso venderlo senza dover posizionare anche il mio programma sotto GPL?

Sì. La GPL esclude specificamente l'output dell'esecuzione del programma:

l'output del Programma è coperto solo se il suo contenuto costituisce un lavoro basato sul Programma (indipendentemente dal fatto che sia stato realizzato eseguendo il Programma).

il che significa che se includi bit di GCC o qualcos'altro GPL nel tuo programma, allora sì, dovrebbe essere GPL, altrimenti no - il fatto che il suo codice oggetto sia stato prodotto da un compilatore GPL non è rilevante per se debba essere GPL .

Tutte le librerie di lingue standard alle quali collegheresti non sono GPL o sono GPL ma hanno un'eccezione speciale per consentire al tuo software proprietario di collegarsi a loro, se non le modifichi . Nel caso di C ++ intendo libgcc, glibc e libstdc ++; nel caso di Java intendo tutte le librerie incluse in JRE.

Tecnicamente, puoi comunque vendere legalmente il software GPL, ma quasi nessuno guadagna soldi.


LGPL (Lesser GPL) consente a un'applicazione di collegarsi ad essa senza richiedere che l'applicazione sia GPLd stessa. Una libreria GPL invece è contagiosa. Ma hai ragione, l'output del compilatore è esplicitamente escluso dai termini GPL.
Berin Loritsch,

e se modifico le librerie di lingue standard? posso farlo? cosa succede alla licenza del mio programma allora?
piotrek,

Quindi l'eccezione non si applica e devi seguire i termini completi della relativa licenza. Inoltre, ci sono implicazioni sul marchio nel caso di Java - è meglio non menzionare Java o OpenJDK nella documentazione o nella pubblicità se lo si utilizza (ma consultare il caso giudiziario Oracle v Google).
Robin Green,

8

Sia GCC che OpenJDK hanno eccezioni esplicite:

... Quando si utilizza GCC per compilare un programma, GCC può combinare parti di determinati file di intestazione GCC e librerie di runtime con il programma compilato. Lo scopo di questa eccezione è consentire la compilazione di programmi non GPL (inclusi i proprietari) per utilizzare, in questo modo, i file di intestazione e le librerie di runtime coperte da questa eccezione. ...

... Quando GNU Classpath viene utilizzato non modificato come libreria di classi core per una macchina virtuale, compilatore per java languge o per un programma scritto nel linguaggio di programmazione java, ciò non influisce sulle licenze per la distribuzione diretta di tali programmi ...



0

OpenJDK è GPL, ma con un'eccezione per il collegamento alle librerie. http://en.wikipedia.org/wiki/OpenJDK

L'uso delle classi OpenJDK costituirebbe un collegamento a una libreria, penso (rt.jar).

Una libreria in quel contesto, dal punto di vista di Java, è sicuramente un vaso di dipendenza, guerra, classe, ecc. Ad ogni modo, sono sicuro che puoi vendere legalmente un'app Java: ce ne sono più di qualche là fuori che Oracle / Sun non ha intrapreso azioni legali.


Lo stesso vale per libstdc ++ - ha anche un'eccezione.
Robin Green,

Sia rt.jar che libstdc ++ sono implementazioni di una specifica che non è GPL. In sostanza, se collegassi la mia applicazione a una versione non libra di libstdc ++ funzionerebbe in modo identico (supponendo che la specifica sia stata implementata correttamente) in entrambe le versioni. Il fatto che una piattaforma carichi dinamicamente una versione GPL della libreria non conta per la tua app. Hai scritto secondo lo standard della piattaforma e sei coperto da qualsiasi licenza tu voglia.
Berin Loritsch,

0

Non preoccuparti, questa è una domanda di programmazione del computer o almeno una che riguarda da vicino i programmatori.

Da quello che so, se si crea un software collegato con un codice GPL, è necessario rilasciare il codice sorgente se si distribuisce il programma.

Ciò non significa che devi rilasciare il codice su sourceforge, ad esempio, ma se una terza parte ti chiede il codice, devi fornirlo.


Questo punto non è rilevante perché l'attività descritta nella domanda non implica, a parità di altre condizioni, il collegamento al codice GPL.
Robin Green,

La domanda sopra: se sviluppo un programma usando C ++ / Java e lo compilo usando il compilatore GCC o il compilatore OpenJDK, posso venderlo senza dover posizionare anche il mio programma sotto GPL?

Penso di specificare chiaramente che se usi il codice GPL, devi rilasciarlo.

Siamo spiacenti, non sono stato preciso - in alcuni casi implica il collegamento al codice GPL in un certo senso, ma ad esempio si applica l'eccezione Classpath, quindi non è necessario rilasciare il codice sotto GPL.
Robin Green,

ahh, ok allora, non lo sapevo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.