Alcuni codici ereditano GNU GPL se si collegano solo a una libreria GPL?

4

Supponiamo che ci sia una libreria xxx sotto GNU GPL, che fornisce una funzione yyy . Supponiamo che il mio codice si colleghi alla biblioteca e usi questa funzione. Il mio codice eredita la licenza GPL?

IANAL, ma i miei pensieri sono in conflitto:

  • Da un lato, il mio codice è derivato dalla libreria, quindi dovrebbe ereditare GPL.
  • D'altro canto, il mio codice utilizza solo il collegamento a xxx . Forse ci sono altre librerie, che hanno la stessa interfaccia (in particolare, forniscono la funzione yyy con la stessa funzionalità, ma un'implementazione diversa). Il mio codice può collegarsi a qualsiasi. Il mio codice in realtà non è direttamente derivato da xxx , utilizza solo la sua interfaccia. Quindi, il mio codice non dovrebbe ereditare GPL.

Sono confuso.

Nota : la domanda è assolutamente astratta. Non intendo alcuna libreria GPL concreta.

    
posta Pierre.Vriens 11.12.2012 - 17:33
fonte

4 risposte

14

In generale, se stai utilizzando una libreria che è GPL, la tua applicazione deve essere anche GPL. Ci sono alcune eccezioni e molto probabilmente non si applicano a te.

    
risposta data 11.12.2012 - 17:37
fonte
2

Ovviamente, questo è qualcosa che tecnicamente può ricevere una risposta solo da un avvocato.

La risposta più lunga è che l'ambiguità è piuttosto lunga, il che significa che dovrebbe essere deciso in un procedimento giudiziario.

Per evitare problemi, molti sviluppatori si rivolgono alla LGPL per evitare la difficoltà. Anche questo non risolve sempre le cose se usi un linguaggio basato su immagini dinamiche come Lisp o SmallTalk. In questi casi, alcuni sviluppatori includono un preambolo per definire ulteriormente i limiti (vedi ad esempio il sito di Franz ).

    
risposta data 11.12.2012 - 17:37
fonte
2

Quando colleghi la tua applicazione a una libreria, stai facendo un lavoro derivato di quella libreria. Pertanto, ai sensi della GPL (con la licenza della biblioteca), è necessario distribuire il codice sorgente dell'applicazione con l'applicazione (se la si distribuisce). Ed è un lavoro derivato se ci si collega solo ad esso o se si modifica anche il codice sorgente.

Dove questo diventa sfocato è con le librerie collegate dinamicamente. Se il tuo software può collegare dinamicamente una libreria GPL (ad esempio .dll o .so), ma potrebbe anche funzionare senza quella libreria, allora potresti distribuire il software senza la libreria, ma poi dire al distributore come eseguire il software con biblioteca. Poiché il software può essere eseguito senza la libreria, è possibile distribuire software funzionante senza la libreria GPL e senza il codice sorgente dell'applicazione e non violare la GPL. Ma è ancora sfocato.

Un trucco che ho visto usare una grande azienda qualche anno fa era quello di aggiungere uno spessore tra l'applicazione proprietaria e la libreria GPLed. Lo shim era un wrapper funzionalmente equivalente attorno alla libreria GPLed ed era esso stesso implementato come una libreria dinamica (.so). Lo shim è stato concesso in licenza con LGPLv2, quindi se l'applicazione è collegata allo shim, il codice sorgente dell'applicazione non deve essere distribuito. Il codice sorgente dello shim "funzionava" anche senza la libreria GPLed, quindi poteva essere distribuito sotto qualsiasi licenza, quindi erano in grado di scegliere LGPLv2 invece di GPL. Ancora sfocato.

Aparentemente, il caricamento dinamico è il modo in cui i driver proprietari possono funzionare su Linux.

La chiave di tutto questo è che se l'entità che ha ricevuto l'applicazione funzionante è in grado di riassemblare un'applicazione funzionante per utilizzare una libreria GPLed acquisita, allora il proprietario del copyright dell'applicazione funzionante non deve distribuire la fonte codice perché il lavoro derivativo è stato fatto dopo la distribuzione dell'applicazione, e non prima.

Ancora confusa ... ma ti ho dato più modi di esaminare il problema.

    
risposta data 11.12.2012 - 20:40
fonte
0

In primo luogo, non sono un avvocato.

Detto questo, la mia comprensione di GPL è: se fai qualcosa a un codice GPL, hai "infetto" come se fosse un virus biologico.

Quindi sì, il collegamento a GPL 'lib ti farà lavorare in GPL.

Per questo motivo, devi cercare una lib con una licenza come LGPL (o una licenza ancora più permissiva, se possibile).

Questo non è un parere legale ....

    
risposta data 11.12.2012 - 18:57
fonte

Leggi altre domande sui tag