Ha codice GPL che collega con la libreria proprietaria dipendono cui viene creato per primo? [chiuso]

StackOverflow https://stackoverflow.com/questions/1854843

Domanda

Microsoft crea loro finestre e libreria MFC DLL, ecc Un sistema open source develop scrivere una nuova applicazione MFC e rilasciare il codice sorgente GPL. L'applicazione deve collegare con le MS DLL / librerie per eseguire in Windows, ma non credo che chiunque può sostenere che ora abbiamo il diritto di forzare la Microsoft GPL loro DLL.

Questo significa la licenza GPL è in realtà dipende da quale viene "creato" per primo? Se libreria proprietaria viene creato per primo (ad esempio Windows DLL) che viene pubblicato senza il collegamento e qualsiasi codice GPL e in seguito un programma GPL è collegato con esso, allora il programma GPL non può convertire la libreria proprietaria in GPL, anche se il codice proprietario è "legato" con il codice GPL.

Se questo è il caso, può società come Nvidia o RealNetworks la procedura di seguito? Supponiamo che a loro piace mantenere la libreria motore di decodifica proprietaria dei media HDDecoding privato, ma vogliono anche "leva" il codice opensource GPL una per mostrare il loro hardware.

  1. Creano una libreria proprietaria di fare la decodifica dei media e rilasciare alcuni esempi di codice.
  2. Qualcuno (sviluppo opensource) crea "plugin" che è collegato a questa libreria proprietaria di codice GPL, come XBMC, Mplayer o VLC.
  3. Possono sostenere che poiché hanno creato la libreria proprietaria prima (proprio come MS creare tutte le DLL prime), i programmi di GPL che si collegano con il loro codice proprietario non li segrete in codice GPL.

Si può in teoria sostengono che lo sviluppatore opensource che crea il file vlc.exe GPL che collega con la libreria multimediale decoder proprietari NVIDIA sta violando la licenza GPL.

Questo significa che tutti i programmi GPL esecuzione in Windows come VLC, git, Cygwin, ecc sono tutti violare la licenza GPL perché hanno sicuramente bisogno di collegamento con le proprietarie Microsoft Windows librerie a correre.

Caso 2: Cosa c'è di sbagliato con questo:

NVidia può creare una nuova libreria di astrazione hardware che nasconde le più recenti funzioni grafiche. Essi hanno inoltre creare un driver FreeBSD con questa libreria e rilasciare il codice sorgente del driver BSD, ma non il codice sorgente della libreria.

Qualcuno (Linux developer) può implementare il driver per Linux che collega con questa libreria per creare un driver grafico NVIDIA per Linux. Ma dal momento che NVidia non lo ha fatto, possono mantenere la fonte libreria "nascosto", mentre abilitare il "supporto Linux".

E 'certamente viola lo spirito della GPL.

Vuol dire che l'esecuzione di qualsiasi exe creato con la fonte di GPL in Windows / Mac / Iphone / PSP3 viola anche lo spirito della GPL?

È stato utile?

Soluzione

Dal GNU GPL FAQ:

  

Posso applicare la GPL quando si scrive un   plug-in per un programma non libero?

     

Se il programma utilizza forcella e exec per   invocare i plug-in, quindi i plug-in sono   programmi separati, in modo che la licenza per   il programma principale non fa requisiti   per loro. Così si può usare la GPL per un   plug-in, e non ci sono particolari   requisiti.

     

Se il programma collega dinamicamente   plug-in, e fanno chiamate di funzione   gli uni agli altri e condividere i dati   strutture, crediamo che formano un   programma singolo, che deve essere trattata   come estensione sia della principale   programma e i plug-in. Questo significa   quella combinazione di GPL coperte   plug-in con il programma principale non libero   violerebbe la licenza GPL. Tuttavia, è   in grado di risolvere il problema del diritto,   l'aggiunta di un'eccezione ai suoi di plug-in   licenza, dando il permesso di collegarlo   con il programma principale non-free.

     

Si veda anche la domanda sto scrivendo   software gratuito che utilizza un non-free    biblioteca.

E

  

Cosa aspetti legali salire se uso   librerie GPL-incompatibili con GPL   software?

     

Entrambe le versioni della GPL hanno un   eccezione a loro copyleft, comunemente   chiamato l'eccezione libreria di sistema.   Se le librerie incompatibili con la GPL voi   desidera utilizzare soddisfare i criteri per un   libreria di sistema, allora non c'è bisogno di   fare nulla di speciale per usarli; il   requisito di distribuire codice sorgente   per l'intero programma non include   quelle librerie, anche se   distribuire un eseguibile collegato   che li contengono.

     

I criteri per ciò che conta come un   "Libreria di sistema" variare tra   diverse versioni della GPL. GPLv3   definisce esplicitamente "Librerie di sistema"   nella sezione 1, di escludere dal   definizione di "Sorgente Corrispondente".   GPLv2 dice il seguente, verso la fine   della sezione 3:

     

Tuttavia, come eccezione speciale, il   il codice sorgente distribuito non è necessario   includere qualsiasi cosa che è normalmente   distribuito (in forma sorgente o   binario) con i principali componenti   (Compilatore, kernel, e così via) del   sistema operativo su cui la   viene eseguito il Programma, a meno che tale componente   accompagnino l'eseguibile.

     

...

Altri suggerimenti

Si dispone di un equivoco fondamentale del modo in cui le restrizioni GPL entrano forza. Il tuo primo esempio è coperto dalla "esenzione libreria di sistema." -, ma anche se non lo fosse, non avrebbe l'effetto si posit

La GPL dice che se si distribuisce il programma GPL, o un suo derivato, è necessario fornire anche la fonte per il programma o il derivato in termini GPL-equivalenti (per le persone che distribuito il programma / derivato a) .

Questo significa che se io distribuire il programma GPL collegato con alcuni dei codici di Microsoft, devo fornire la fonte di tutta la palla di cera, o rischiano di essere citato in giudizio da voi per aver infranto il copyright. Si noti che, fintanto che Microsoft è una terza parte, questo non mette alcuna restrizione su loro (ovviamente!). Se non ho accesso al codice di Microsoft, che rischia, allora non posso distribuire tale lavoro derivato, senza essere in violazione della licenza.

IANAL, ma l'ordine della creazione non importa. Se le collegano due binari sarebbe una violazione della GPL, allora non è consentito dal GPL, indipendentemente da quale è stato creato prima.

Caso 1 è indirizzata dalla deroga libreria di sistema, come citato Michael Burr. Si noti che non è dipendente dal tempo - se non fosse per l'eccezione libreria di sistema, sarebbe altrettanto di violazione GPL per eseguire codice GPL scritto in 2003 in Windows 98 (che è stato scritto prima che il codice GPL), in quanto sarebbe quello di farlo funzionare su Vista (che è stato scritto dopo che il codice GPL).

Sono d'accordo che il caso 2 viola lo spirito della GPL, ma, come il termine è usato dalla GPL, che il driver NVidia non è "legato" con il kernel Linux perché è caricato come modulo. Non sarebbe in grado di distribuire un kernel Linux con il file binario non libero NVidia staticamente collegati in esso, ma chi distribuisce i kernel staticamente collegate in questi giorni comunque?

È cannnot cambiare altre licenze programmi collegando a loro, mai. Se la licenza non consente il collegamento a programmi non-open source è necessario cambiare sia la licenza o interrompere il collegamento a tali programmi. La situazione sarebbe diversa se gli altri programmi collegati al tuo. In tal caso essi devono cahnge loro licenza o interrompere il collegamento al vostro programma.

Che cosa significa, semplicemente, è che non è possibile applicare la GPL sulla parte superiore del codice o librerie che non sono compatibile con la GPL e distribuire un lavoro combinato compilato, a meno che non si applica un che collega eccezione .

L'eccezione di collegamento fornisce un modo per voi di distribuire eseguibili compilati contenente i bit non-free, mentre non è necessario alcun permesso speciale per distribuire il programma in formato sorgente.

Questa eccezione, ovviamente, dipende dalle librerie non libere che consente di distribuire i programmi che sono collegati contro di essa (soprattutto staticamente).

Quindi, per rispondere alla tua prima domanda, no .. questo non è uno scenario di 'pollo o uovo'. Quello che mi raccomando è di fronte alla possibilità di dover scrivere un'eccezione, la sua, probabilmente meglio scegliere solo una licenza con meno restrizioni, come l'Apache o licenza BSD 3 clausola.

In secondo luogo, no, non si può semplicemente applicare la GPL per il codice allo scopo di cambiare la licenza per qualcosa che vi capita di linkare. Ancora una volta, torniamo a eccezione di collegamento, che è la vostra responsabilità di fornire.

Il spririt della GPL vive in un mondo dove non esiste una cosa come il software proprietario. RMS ha dichiarato questo come l'obiettivo finale in molte occasioni. Ciò che resta sono pratici che devono essere affrontate per le persone che vogliono distribuire software libero su piattaforme non-free.

Questo è uno dei principali motivi che Linux (come nel kernel) resta GPL v2 solo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top