Interfacce GPL vs plugin non progettate pensando a un'applicazione specifica

7

Non sto cercando o ho bisogno di consulenza legale, ma mi è venuto in mente un esperimento interessante.

Immagina il seguente situtation (non riesco a pensare ad un esempio concreto e non sono sicuro che esista una manifestazione reale): c'è una licenza libera (libre) api sotto qualche licenza permissiva o addirittura LGPL. L'applicazione B non libera implementa questa API per ordinare i plugin host, ma ci sono altri software liberi che fanno la stessa cosa. Inoltre, c'è plugin C che agisce come un plugin sotto api A. Collega alla libreria D, che è sotto GPL, quindi C è anche in GPL. I plugin che utilizzano A vengono caricati negli host tramite un meccanismo dlopen -like e utilizzano una struttura dati complessa per la comunicazione con host-plugin. Né B né C distribuiscono alcun file che possa essere richiesto per A per funzionare correttamente (come intestazioni contenenti le definizioni di struttura di A o librerie dinamiche contenenti funzioni di supporto per A scritte dagli autori di A), ma tali cose possono esistere.

Ora alcuni utenti installano l'applicazione B e il plug-in C sulla sua macchina, insieme a tutto ciò che potrebbe essere necessario affinché l'API A funzioni correttamente. Quindi procede e carica C in B e crea una proprietà intellettuale con B che non è un software.

Una violazione della GPL è avvenuta ad un certo punto e, in tal caso, chi ha violato la GPL e perché?

  • Gli autori di C violano la licenza di s rendendo possibile l'utilizzo di C nell'host B non libero? Questa è una possibilità perché non possono dare ed eccezione a GPL (come quella descritta nel link o link ) a causa dei termini di licenza di D's.
  • Gli autori di B violano la licenza di C e D's rendendo possibile il caricamento di C in B? Questa è una possibilità perché il link non consente i meccanismi A usati per la comunicazione tra il libero e il non libero moduli.
  • Gli autori di A, perché l'api può essere usata (e in questo caso, è stata usata) per la comunicazione tra GPL'd e software non libero. Questo sarebbe estremamente assurdo.
  • L'utente, poiché al momento del caricamento di B in C, ha realizzato un'opera derivata di C. Penso che ciò sia impossibile, perché non lo distribuisce. Ma se la situazione dovesse cambiare, ha deciso di rilasciare un file di configurazione di B che rende B carico C come plugin?
  • Nessuno, perché A conta come una "libreria di sistema", e sia B che C interagiscono direttamente solo con A, non con gli altri. In un mondo sano, questo succederebbe ...

Un esempio concreto di A potrebbe essere un qualche tipo di audio (pensa LADSPA) o api di elaborazione delle immagini. Tuttavia, non ho trovato alcuna interfaccia di questo tipo (che sia software libero, generico e sia implementato anche da strumenti commerciali). Un esempio del mondo reale potrebbe anche essere abbastanza illuminante.

    
posta Kristóf Marussy 05.04.2012 - 21:23
fonte

4 risposte

3

Data la tua descrizione, penso che A e B siano irrilevanti per la domanda, ciò che conta sono C e D, e la domanda si riduce a se GPL consente o meno il collegamento dinamico. Se qualcuno può violare la GPL, è C se non è in GPL.

Dopoalcuniscavi,hotrovatochel' articolo della GPL di Wikipedia ha un buon riepilogo del problema. La risposta è: è contestata. I tre punti di vista esistenti, secondo questo articolo:

  • Sia il collegamento dinamico che il collegamento statico violano 1 la GPL. Questo è il punto di vista dei creatori della GPL (la Free Software Foundation), e per questo motivo hanno creato la LGPL (per consentire il collegamento dinamico senza violazione).

  • Il collegamento statico viola, ma la GPL non è chiara sul collegamento dinamico : è difficile a dirsi poiché la GPL non fornisce istruzioni chiare su ciò che viene considerato un lavoro derivato.

  • Il collegamento è irrilevante : GPL dovrebbe applicarsi solo al codice sorgente. Secondo me questa è l'opzione più sensata, dal momento che il collegamento a un software per accedere alla sua funzionalità è simile a premere un pulsante su una GUI per fare la stessa cosa.

Dato che la FSF dice che la sua intenzione con la GPL è quella di non consentire entrambi, penso che sia più saggio a

  • rispetta questa intenzione e usa GPL sul tuo lavoro se ti colleghi a GPL, anche se il testo non è chiaro

  • o stai lontano dal software GPL

Ironia della sorte, la GPL non è così libera / libera come si potrebbe pensare. So che c'è una ragione per questo, ma il mio punto è: non mettere GPL sul tuo software senza pensare. Se stai cercando una licenza libera e permissiva, le licenze MIT o BSD potrebbero rappresentare meglio le tue intenzioni.

1: quando dico "viola" intendo che viola il "consumatore" del collegamento non è in GPL.

    
risposta data 06.04.2012 - 10:18
fonte
3

La GPL non è stata violata da nessuno. Una violazione GPL si verifica solo quando il codice è "distribuito", i.e. , trasferito da una parte all'altra. L'unico codice che ha cambiato le mani in questo esempio è B, C e D. Il creatore di C ha onorato il requisito di D che C sia distribuito sotto GPL. Il creatore di B non distribuiva C o D, e non è responsabile del fatto che l'utente l'abbia combinato con C e D, creando un sistema ibrido. Fintanto che l'utente non distribuisce quel sistema ibrido a nessun altro, l'utente non viola i termini GPL di C o D'.

    
risposta data 08.04.2012 - 04:08
fonte
1

Esempi di mondo reale:

  • API Motif e varie implementazioni Motif (proprietaria), OpenMotif (Open Group Public License), LessTif (LGPL). Le librerie sono sostituzioni drop-in, puoi compilare dinamicamente il tuo codice con OpenMotif ed eseguirlo con LessTif o viceversa.

  • Driver Linux proprietari - nella maggior parte dei casi per evitare problemi di licenza c'è un involucro (L) GPL sottile che carica un codice proprietario. Lo scopo unico di Wrapper potrebbe essere la separazione, ad esempio il driver binario di Nvidia , o la separazione potrebbe essere solo un effetto collaterale, come per esempio in caso di NDISwrapper .

risposta data 06.04.2012 - 11:33
fonte
0

Credo che questa sia una scappatoia che consente al codice non gpl di utilizzare il codice gpl. L'unico esempio che conosco del componente x attivo vlc. VLC è gpl. Anche il componente VLC activex è GPL. Qualsiasi app di Windows in grado di caricare i componenti activex può caricare il componente vlc activex senza condividere intestazioni o codice. Penso che sia il tuo ultimo punto elenco che si applica.

    
risposta data 06.04.2012 - 04:42
fonte

Leggi altre domande sui tag