Posso utilizzare commercialmente il software con licenza GPL sul mio server se distribuisco solo il software client?


15

Io capisco le regole della GPL affermando che se io distribuire alcun software utilizzando il codice GPL, quindi che il codice deve essere rilasciato sotto la licenza GPL .

Tuttavia, mi chiedo quali siano le regole in questo caso: sto creando un servizio in cui venderò e distribuirò software lato client .

Il software lato client non contiene assolutamente codice GPL. È al 100% il mio codice.

Tuttavia, il software client si collegherà al mio server, che utilizza internamente il codice GPL.

Sto Non distribuendo il software lato server; il software lato server vivrà su un server dedicato che controllo da solo, ma il software lato client non funzionerà senza connettersi a detto server.

Questo conta come un unico software? Se dovessi farlo, dovrei richiedere la licenza del mio codice sorgente lato client come GPL? Oppure, posso vendere il software lato client senza rilasciare il suo codice sorgente?

Risposte:


12

Questo non è un problema chiaro. Considera due estremità estreme dello spettro:

  1. Il software client proprietario è un client HTTP e esegue il rendering delle risposte HTML. Può funzionare con qualsiasi server HTTP. Il server HTTP che usi per il tuo servizio utilizza componenti GPL.

  2. Hai un programma che utilizza componenti con licenza GPL. Scegli un punto arbitrario nell'operazione di quel programma e suddividi il programma in due programmi. I due programmi comunicano su un hop di rete totalmente superfluo. Metti tutti i componenti con licenza GPL nel primo programma e la licenza in base alla GPL e concedi in licenza l'altro programma con una licenza incompatibile con GPL.

Il primo caso è chiaramente ok. Il secondo caso chiaramente non va bene. Non hai fornito molte informazioni sul tuo caso particolare e, anche se lo facessi, solo una sentenza del tribunale potrebbe decidere definitivamente se hai ragione.

Le FAQ di GPL hanno questo da dire sui programmi interoperabili, con licenza separata :

Tuttavia, in molti casi è possibile distribuire il software coperto da GPL insieme al proprio sistema proprietario. Per fare ciò validamente, è necessario assicurarsi che i programmi liberi e non liberi comunichino a distanza , che non siano combinati in modo da renderli effettivamente un unico programma.

La differenza tra questo e "incorporare" il software coperto da GPL è in parte una questione di sostanza e in parte di forma. La parte sostanziale è questa: se i due programmi sono combinati in modo da diventare effettivamente due parti di un programma, non puoi trattarli come due programmi separati. Quindi la GPL deve coprire tutto.

Devi decidere se ritieni che il tuo client sia un server conforme allo standard di "due parti dello stesso programma" (e quindi deve essere autorizzato ciascuno ai sensi della GPL) oppure no. Le FAQ di GPL forniscono ulteriori spiegazioni su questo argomento su un'altra domanda :

Dov'è la linea tra due programmi separati e un programma con due parti? Questa è una domanda legale, che alla fine i giudici decideranno. Riteniamo che un criterio adeguato dipenda sia dal meccanismo di comunicazione (exec, pipe, rpc, chiamate di funzione all'interno di uno spazio di indirizzi condiviso, ecc.) Sia dalla semantica della comunicazione (che tipo di informazioni vengono scambiate).

...

Al contrario, pipe, socket e argomenti della riga di comando sono meccanismi di comunicazione normalmente utilizzati tra due programmi separati. Pertanto, quando vengono utilizzati per la comunicazione, i moduli sono normalmente programmi separati. Ma se la semantica della comunicazione è abbastanza intima, scambiando complesse strutture di dati interni, anche quella potrebbe essere una base per considerare le due parti come combinate in un programma più ampio .

Pertanto, la comunicazione di rete supera certamente il test del "meccanismo di comunicazione" ma non è chiaro dove la coppia client / server cada nel test di "semantica della comunicazione".


Sarebbe ragionevole basare la distinzione sulla misura in cui l'interfaccia tra i programmi era pubblica? Se, ad esempio, implemento un sistema di gioco degli scacchi che utilizza un programma di interfaccia utente GPL che comunica con un motore di scacchi proprietario, e documento come chiunque altro desideri scrivere il proprio motore di scacchi potrebbe fargli usare lo stesso front-end dell'interfaccia utente, vorrei pensa che dovrebbe soddisfare lo spirito (e si spera la lettera) di GPL anche se, a meno che qualcuno non scrisse un motore alternativo, il front-end dell'interfaccia utente non avrebbe altro scopo se non quello di parlare con il programma proprietario.
supercat

Hmm. Ho fatto questa domanda così vagamente perché ero solo curioso della GPL in generale. Tuttavia, penso di capire la differenza ora. Se il mio server ha informazioni sull'account utente che il mio software client deve eseguire, ciò viola chiaramente la GPL. Se il mio server è qualcosa come un server di inoltro di pacchetti che consente solo a due versioni del mio software client di comunicare tra loro, allora andrebbe bene. Sono corretto in questi presupposti?
Steven Jeffries,

4

Due processi che comunicano su una rete non comportano la creazione di un'opera derivata come fa il collegamento di un eseguibile con una libreria. Quindi il codice GPL sul server non si applica al codice client.

Ai sensi della GPL, è necessario distribuire il codice sorgente modificato quando si distribuiscono i file binari. Poiché non stai distribuendo i file binari del server, non è necessario distribuire il codice sorgente del server.

GNU Affero GPL è una licenza simile alla GPL con un linguaggio aggiuntivo progettato per chiudere questo buco molto loop che si desidera sfruttare (vedere: http://www.gnu.org/licenses/why-affero-gpl.html e http://en.wikipedia.org/wiki/Affero_General_Public_License#Examples_of_web_applications_under_GNU_AGPL ).

Disclaimer: sono uno sviluppatore, non un avvocato.


3
Solo una nota di avvertimento: se il client è stato progettato specificamente comunicare con questo software del server, allora è del tutto possibile che la FSF fa considerare server e software client come un prodotto. Vedi anche qui nella FAQ GPL
Bart van Ingen Schenau

D'altra parte, se una terza parte scrive software client per comunicare con il proprio server, senza aver mai visto il software server o una licenza, tale argomento sembra ridicolo. E ciò significherebbe che Microsoft potrebbe citare in giudizio chiunque scriva software che si collega ai server di Outlook, per esempio.
gnasher729,

2

Il software client dipende dal software server per il suo corretto funzionamento? In altre parole, il software client funzionerà senza essere collegato al server?

Se la risposta è "sì" e il server fornisce semplicemente una funzionalità aggiuntiva, e non il supporto di base, al tuo software client, allora probabilmente sei al sicuro. Se il software server è parte integrante del software client e fornisce funzionalità di base al software client (ovvero il software client non funzionerà senza il server), la combinazione è un'opera derivata, coperta dalla GPL.


In questo caso sbaglierò per precauzione e non userò il codice GPL sul mio server.
Steven Jeffries,

2
@StevenJeffries Questa risposta è in contrasto con la pratica attuale e con i requisiti della GPL. Finché non distribuisco un software o un'opera derivata, sono libero di utilizzare il software GPL su un server, ad esempio Linux o GCC o WordPress. Il semplice utilizzo di un software non crea un'opera derivata. Nel caso della GPL, è considerato corretto quando è coinvolta almeno la separazione a livello di processo (nessuna memoria condivisa, nessuna struttura di dati condivisa). Vedi la risposta di J. Lenthe per una soluzione corretta e per riferimenti.
amon,

@amon: se non stai nemmeno condividendo le strutture di dati tra il server e il client, allora hai ragione. Dubito che sia così, comunque. La distinzione che sto facendo (è il software client che dipende dal software server per la sua corretta esecuzione) non è arbitraria; è uno dei due requisiti essenziali per ciò che la FSF non considera un "lavoro derivato"; l'altro è "comunicazione a distanza di braccia". Non crederci sulla parola; leggilo tu stesso sul sito web di FSF.
Robert Harvey,

@amon: puoi leggere di più qui .
Robert Harvey,

@amon Un altro articolo molto rilevante sulle FAQ GPL (utile come follow-up dopo aver letto il link di Robert) è questo, in particolare gli ultimi tre paragrafi: gnu.org/licenses/gpl-faq.html#MereAggregation
apsillers
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.