Evita la violazione di GPL spostando la libreria fuori processo


21

Supponiamo che esista una libreria con licenza GPL. Voglio usarlo è un progetto chiuso. Faccio quanto segue:

  1. Crea una piccola applicazione wrapper attorno a quella libreria GPL che ascolta socket, analizza i messaggi e chiama la libreria GPL. Quindi restituisce i risultati.
  2. Rilascia le sue fonti (per conformarsi a GPL)
  3. Crea client per questo wrapper nella mia applicazione principale e non rilasciare fonti.

So che questo aggiunge un enorme sovraccarico rispetto al collegamento statico / dinamico, ma mi interessa il modo teorico.


6
Il wrapper che scrivi sarà concesso in licenza in base alla GPL. Pertanto, il programma che utilizza il wrapper sarebbe ancora soggetto ai termini della GPL per il collegamento, ecc.
TZHX,

4
perché non contattare prima l'autore e vedere se è possibile concederlo in licenza in base a LGPL o simili.
jk.

8
@TZHX Credo che significhi che il wrapper sarebbe un'applicazione separata che funge da server - il suo codice proprietario sarebbe nel client
jk.

anche chi verrà distribuita anche l'app closed source? e quale versione di GPL è la licenza
jk.

2
@jwenting la domanda dice chiaramente che sta finendo il processo
jk.

Risposte:


32

Legalmente , direi che sarebbe OK (ma io non sono un avvocato - consultare un avvocato per una consulenza legale).

Moralmente , è abbastanza riprovevole. Se non ti piace la GPL, la soluzione "corretta" non è quella di utilizzare una libreria GPL.

Modifica : per chiarire, qualunque sia la posizione legale della GPL in merito all'autorizzazione o meno del collegamento dinamico, la LGPL è stata appositamente creata con l'intento di consentire il collegamento dinamico nel caso delle biblioteche. Quindi mi sembra chiaro che, scegliendo la GPL sulla LGPL, l'autore della libreria lo stesse facendo esplicitamente per impedire il collegamento dinamico. L'utilizzo di un mezzo tecnico per aggirare una limitazione legale che esprime l'intento esplicito dell'autore per il suo codice è ciò che è riprovevole, secondo me.

Per la cronaca, non sono personalmente un fan della GPL (preferisco una licenza più permissiva come MIT o BSD). Tuttavia, sono un grande fan del rispetto del lavoro di altri sviluppatori, e se non vogliono che tu colleghi la loro libreria con software a codice chiuso, allora è una prerogativa.


12
Non penso che ci sia un problema morale qui - la GPL sembra consentire esplicitamente il suo caso d'uso
jk.

3
@vartec qui è una citazione dalle FAQ ufficiali di GPL: "Il collegamento statico o dinamico con altri moduli sta facendo un lavoro combinato basato su. Pertanto, i termini e le condizioni della GNU General Public License coprono l'intera combinazione." Se Stallman ha una visione diversa di ciò che è Open Source, ciò non significa che lo odia. È uno dei principali ideologi di questo movimento.
Andrey,

8
@vartec: ho l'impressione che tu non capisca che, quando usi il codice di QUALCUNO ALTRO nella TUA applicazione, sei tenuto a rispettare i termini che HE ha usato per utilizzare il suo codice. Non ti piace? Non utilizzare il codice GPL di qualcun altro. Così semplice.
John R. Strohm,

3
Ecco il mio suggerimento: ricavare un inferno da quel codice GPL da cui sembri così dipendente e vedere come si presenta il caso giudiziario. GPL3 è stato creato per tappare proprio questi buchi legali in GPL2, quindi forse te ne andrai. Dubito che la gente lanci sfilate in tuo onore perché sei riuscito a fare una manovra legale e se sei abbastanza efficace, le persone autorizzeranno il loro codice con più termini d'uso solo per farti dispetto. Alla fine, ciò potrebbe migliorare il mondo evitando fili come questo.
Godeke,

3
Sono fortemente in disaccordo con l'affermazione che è moralmente riprovevole. Ciò che è moralmente riprovevole è dire alle persone che non hanno il diritto di fare ciò che la GPL consente loro di fare. Quando metto un lavoro sotto la GPL, lo faccio perché voglio applicare le regole della GPL. Dire che le persone che non dovrebbero esercitare i diritti che la GPL dà loro è riprovevole. Questo è qualcosa che la GPL consente. Coloro che inseriscono lavori nell'ambito della GPL lo fanno perché vogliono permetterlo.
David Schwartz,

6

IANAL ma credo che tu stia bene, la sezione pertinente di GPL3 è alla fine della sezione 5:

Una raccolta di un'opera coperta con altre opere separate e indipendenti, che non sono per loro natura estensioni dell'opera coperta e che non sono combinate con essa in modo da formare un programma più ampio, in o su un volume di una memoria o distribuzione mezzo, viene chiamato "aggregato" se la compilazione e il copyright risultante non vengono utilizzati per limitare l'accesso o i diritti legali degli utenti della compilation oltre ciò che le singole opere consentono. L'inclusione di un'opera coperta in un aggregato non comporta l'applicazione della presente Licenza alle altre parti dell'aggregato.

Questo probabilmente dipenderà esattamente da ciò che fa il tuo 'cliente', la risposta di mouviciel è probabilmente una buona guida su come farlo in sicurezza

Se ritieni che la tua app sia un'estensione della libreria piuttosto che qualcosa di aggregato con essa, allora probabilmente hai ragione (dovresti essere in un buon posto per saperlo) nel qual caso la soluzione migliore è contattare l'autore e provare a ottenere un licenza diversa

ciò sembrerebbe sostenere la mia posizione secondo cui ciò è esplicitamente consentito dalla GPL, presupponendo che sia stato fatto correttamente.


L'ho letto, ma il problema è che il testo GPL è scritto in un linguaggio legale , non in fase di sviluppo . Il trucco con wrapper è rendere l'app "commerciale" aggregata, non "derivata". Ma penso che rientri nelle "estensioni della natura del lavoro coperto".
Andrey,

bene per aiuto sul linguaggio legale avrai bisogno di un avvocato. Se ritieni che la tua app sia un'estensione della libreria piuttosto che qualcosa di aggregato con essa, allora probabilmente hai ragione (dovresti essere in un buon posto per saperlo) nel qual caso la soluzione migliore è contattare l'autore e provare a ottenere un licenza diversa
jk.

1
@Andrey: se la "natura" del tuo programma è direttamente legata al codice GPL, la sezione sopra citata non si applica. Dalla tua domanda sembra che sia così. Un contro esempio potrebbe essere un programma di analisi delle intrusioni di rete che utilizza semplicemente readline GNU attraverso il meccanismo proposto. (Readline è un caso di test interessante perché esiste un'alternativa drop-in con licenza BSD.)
Fred Nurk,

La clausola "aggregata" è per chiarire che trovarsi sullo stesso CD-Rom o distribuzione Linux non sta creando un derivato.
Sean McMillan,

6

Vedi il Mi piacerebbe incorporare il software coperto da GPL nel mio sistema proprietario. Posso farlo?

La domanda è: la tua applicazione wrapper può essere utilizzata da sola? Se hai creato una versione della riga di comando del tuo programma che era GPL, puoi rilasciare la GUI con una licenza diversa. Ad esempio, potresti creare un IDE per gcc che fosse un codice sorgente chiuso o uno strumento di visualizzazione visiva basato su diff.

Tuttavia, se si impacchettasse una libreria che non ha altro uso se non quello usato dal proprio programma, e che il programma non ha alcuna utilità senza questa libreria, è un lavoro derivato e dovrebbe essere rilasciato sotto licenza GPL.


La mia comprensione è che è possibile concedere in licenza il wrapper in MIT ed essere ancora OK.
Tostapane,

2
Colin, assolutamente no. Il wrapper è inequivocabilmente combinato con la libreria GPL in un singolo binario. Per utilizzare il codice GPL all'interno di un binario, è necessario GPL il proprio codice per conformarsi alla licenza.
Gannet concreto

5

IMO, legalmente va bene. (IANAL) Per migliorare dal punto di vista morale il problema, non chiamarlo "wrapper FooBar che rende FooBar legale a MyClosedApp", chiamalo un server. Trasformalo in un simpatico programma open source che "permette di fare FooBar via rete". Inseriscilo su SourceForge o dedica un sito Web ad esso, con la pagina del progetto e le istruzioni e altro. Quindi lascia che "MyClosedApp" usi semplicemente il "server FooBar".


2

Per quanto ho capito, puoi lasciare il tuo software chiuso-sorgente fintanto che è in grado di fare il suo lavoro senza la libreria GPL. Vedi la libreria GPL come un plugin la cui assenza non rende inutile il tuo software.


1
è decisamente sbagliato. usarlo come plugin (aka collegamento dinamico) rende l'applicazione risultante "derivata" e oggetto di GPL.
Andrey,

Non sono sicuro che il plugin sia sempre sinonimo di link dinamico. E certamente in questo caso l'OP non propone di collegare dinamicamente nulla, quindi penso che i consigli di mouviciel siano
jk.

@jk bene, se crei un solo plugin ed è basato sulla licenza GPL, questo puzza di violazione.
Andrey,

4
L'AGPL non lo vieterebbe a meno che il socket non fosse su una rete. È abbastanza specifico. Inoltre, non è un test di utilità, ma di quanto siano vicini il software GPL e il software proprietario. Il collegamento statico è decisamente troppo vicino, i socket (ad eccezione del caso specifico AGPL) sono decisamente OK, il collegamento dinamico può essere o meno (ho sentito argomentazioni legali su entrambi i lati e non esiste ancora una giurisprudenza statunitense).
David Thornley,

1
@Andrey: quindi stai dicendo che fino a quando un software a sorgente chiuso come Photoshop è in grado di fare il suo lavoro senza un componente GPL, uno può distribuirlo senza renderlo GPL. Questo è esattamente ciò che dice questa risposta.
Doc Brown,

1
  1. prova a trovare un'alternativa Open Source, se non ce n'è, scegli quella GPL;
  2. controlla se è GPLv3 con la clausola Affero se lo è, non c'è nulla da fare;
  3. se è GPLv2, puoi fare esattamente come suggerisci;

C'è anche un'opzione piuttosto controversa. Nella maggior parte delle legislature, il collegamento dinamico dovrebbe essere al confine con "lavoro derivato". La logica alla base di ciò è che, mentre si collega dinamicamente, si includono solo i file di intestazione nel programma. In molte legislazioni i file di intestazione sono considerati definizioni API ed esplicitamente esclusi dall'essere protetti da copyright. D'altra parte, con il collegamento dinamico, il collegamento effettivo con la libreria GPL viene eseguito sul sistema dell'utente finale. Ma come ho già detto, ci sono molte controversie al riguardo, Stallman è fortemente FUD-contro.


qual è la differenza tra GPL v2 e v3 che rende impossibile il mio hack? Quello che faccio non è un collegamento dinamico, li disaccoppiamento il più possibile.
Andrey,

Uno degli obiettivi di GPLv3 era prevenire quel metodo di "elusione".
vartec,

4
Innanzitutto, le varianti GPL sono licenze ufficiali, approvate OSI, Open Source (tanto quanto la licenza BSD senza clausola pubblicitaria è una licenza per software libero approvata da Stallman). In secondo luogo, nessuna versione GPL (incluso Affero) limita la capacità di far comunicare GPL e software proprietario con metodi di comunicazione tra processi standard, come i socket.
David Thornley,

GPLv3 IMO che consente ad esempio la clausola DRM viola il punto 6. della definizione di Open Source opensource.org/docs/osd
vartec

1
@vartec: DRM non è un "Field of Endeavour". Vedere "Ad esempio, potrebbe non impedire che il programma venga utilizzato in una [impresa commerciale] o utilizzato per la ricerca genetica." Apparentemente OSI crede che GPL3 sia Open Source e soddisfi tutti i punti della loro definizione, perché l'hanno approvata.
Thomas Edleson,

0

Sarebbe legale per Adam Brown scrivere un programma che usasse una libreria GPL e fungesse da "server", se avesse rilasciato tutto il codice sorgente su tutto ciò che gli era associato, ma l'unico codice client che aveva rilasciato era piuttosto debole perché tutto qui aveva scritto sul lato client? Non vedo alcuna base per pensare che non lo farebbe.

Se Charles Dover trovasse il "server" di Adam Brown e decidesse di scrivere un programma a codice chiuso per comunicare con esso, la GPL vincerebbe le sue azioni in qualche modo? Non che io possa vedere, dal momento che il suo unico utilizzo del software GPL sarebbe come i binari che ha ricevuto da Adam Brown. Se avesse distribuito i binari di Adam avrebbe dovuto includere anche un link alla fonte, ma nient'altro nella GPL avrebbe influenzato il codice di Charles.

Per quanto riguarda una persona che scrive un server con licenza GPL, e quindi utilizza il server per i suoi scopi a sorgente chiuso, non penso che ci dovrebbe essere alcun problema legale se, scrivendo il server, ha fatto uno sforzo in buona fede per farlo utile ad altri che potrebbero voler usare il codice GPL fornito allo stesso modo. In particolare, la documentazione rilasciata pubblicamente dell'interfaccia dovrebbe essere sufficiente per consentire a un programmatore competente di scrivere codice per un server che sarebbe accettato dal programma client esattamente come lo sarebbe l'originale e di scrivere programmi client che utilizzerebbero il server allo stesso modo dell'applicazione dell'autore.

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.