Requisiti della libreria con licenza GPLv3 e libreria propria licenza BSD [chiuso]

0

Ho cercato sul Web già da un po 'di tempo, ma la moltitudine di opinioni / commenti / articoli sulle domande di licenza rende difficile verificare quanto siano affidabili le varie fonti. Inoltre, sono spesso contraddittorie che mi hanno lasciato confuso dopo la mia ricerca. Dal momento che è probabilmente una situazione comune che affronta uno sviluppatore open source, immagino ci siano persone che sono meno confuse.

Lo scenario: sviluppo di una libreria di codici python ospitata su github che richiede due altre librerie pip installate sul sistema dell'utente per funzionare. Uno dei quali è concesso in licenza BSD, uno dei quali è concesso in licenza GPLv3. Non sono necessarie modifiche di queste librerie, abbiamo solo bisogno delle loro funzionalità di base come disponibili in alcune versioni.

1) Ho ragione, anche se non impacchetta la libreria GPLv3 richiesta nel nostro codebas, cioè non la copio nel nostro repository git, il fatto che chiamiamo classi / metodi di queste librerie dal nostro codice, rende il nostro codice "lavoro derivato" e quindi siamo obbligati a rilasciare la nostra libreria sotto GPLv3? O c'è una differenza tra la richiesta di installare un altro pacchetto e la spedizione (una libreria GPLv3 modificata potenzialmente) con la nostra libreria?

2) Possiamo solo affermare che è necessaria la libreria con licenza BSD, ma ciò non impone ulteriori vincoli su come concedere in licenza la nostra libreria stessa?

In breve: la libreria BSD è facile da elencare come requisito: richiediamo che la libreria di GPLv3 rientri nel lavoro derivato e quindi ci imponga di concedere in licenza il nostro codice anche sotto GPLv3 o no?

Idealmente, vorremmo non concedere la licenza del nostro codice sotto la GPLv3, ma potremmo essere obbligati a farlo. Esiste un modo per sbrogliare tali scenari di requisiti di codice per essere liberi di concedere in licenza il nostro codice di base con qualsiasi licenza che vogliamo? Cosa succede se non stabiliamo nemmeno una licenza, fa "installare questa libreria GPLv3 sul tuo computer" per rendere automaticamente il nostro codice GPLv3'ed?

(Dal momento che sono tutte librerie, quindi solo le codebase, questa distinzione frontend / backend che può consentire licenze diverse, non si applica qui, immagino? Oppure possiamo vedere la nostra libreria come un frontend, poiché l'utente non è obbligato a comunque interagire con le due librerie richieste, cioè sono in qualche modo 'backend'.)

    
posta user3839103 21.02.2016 - 14:21
fonte

2 risposte

1

Se la libreria A richiede che sia presente un'altra libreria B per fornire (parte) la sua funzionalità, la libreria A è un'opera derivata della libreria B. Ciò è indipendente dal modo in cui le librerie sono concesse in licenza.
Quindi, la tua libreria è un lavoro derivato sia della libreria GPL che della libreria BSD.

La principale differenza tra le licenze GPL e BSD qui è che la licenza GPL pone delle restrizioni su come un lavoro derivato può essere concesso in licenza, mentre la licenza BSD non ha tali restrizioni.
Le restrizioni nella licenza GPL sono semplicemente che un'opera derivata deve essere disponibile con gli stessi termini dell'originale, il che significa in effetti che devi usare la stessa licenza.

Per la licenza GPL, non importa in che modo l'utente finale ottiene una copia di tutte le librerie richieste. Se una delle librerie è concessa in licenza con la licenza GPL, tutte le librerie e i programmi che dipendono da questo per le loro funzionalità devono essere anch'essi con licenza GPL.

Per uscire dalla natura infettiva della licenza GPL, devi comunicare "a braccia spalancate" con il codice GPL, che in pratica significa

  • non puoi dipendere dai dettagli interni del codice GPL
  • deve esistere un protocollo (semi) standardizzato per comunicare con il codice GPL (chiamare un programma con gli argomenti della riga di comando può già soddisfarlo).
  • L'utente finale deve essere in grado di sostituire il codice GPL con una versione (compatibile) diversa o un altro codice equivalente.

Questo richiede quasi sempre che il codice GPL sia in esecuzione in un programma separato.

    
risposta data 21.02.2016 - 14:42
fonte
1

La GPL è scritta con la consapevolezza che il codice che si collega al codice GPL rientra anche nella GPL poiché è un lavoro derivato. Questa comprensione potrebbe non essere corretta, ma probabilmente non vuoi essere coinvolto in un caso in cui questo viene testato in un tribunale. Dal punto di vista della GPL, non importa in che modo si dipende dal codice GPL (ad es. Se si consegnano le dipendenze o si chiede agli utenti di installare le librerie). In ogni caso, si dipende dalla libreria GPL e quindi si è creato un lavoro derivato.

La "solita" soluzione è rompere questa dipendenza. Invece di fare affidamento sulla libreria GPL, si crea la propria libreria che fa la stessa cosa (ma potrebbe non essere molto buona). È quindi possibile distribuire il software con una dipendenza da questa libreria helper. Tuttavia, puoi essere intelligente e strutturare questa dipendenza come un plugin. Mentre per impostazione predefinita si dipende dal plug-in non GPL, è anche possibile creare un plug-in GPL che utilizza la libreria GPL. Questo plugin può essere distribuito separatamente e può essere installato dagli utenti se lo preferiscono. Sebbene il plug-in GPL possa fornire prestazioni migliori o più funzionalità, il tuo sistema dovrà comunque essere utilizzabile con il plug-in GPL di default, oppure avresti una dipendenza indiretta sul codice GPL. Nota che l'interfaccia del plugin deve essere sufficientemente generica e non solo una copia dell'interfaccia della libreria GPL!

Le specifiche di questo sono forse difficili da elaborare, quindi sarebbe sensato rileggere attentamente la GPL e andare oltre questo piano con un avvocato (che io non sono).

    
risposta data 21.02.2016 - 14:53
fonte

Leggi altre domande sui tag