La LGPL mi consente di farlo?


16

Sto progettando di sviluppare un software commerciale usando un software LGPL.

Nel software LGPL che sto usando alcune funzioni in una classe non sono completamente implementate. Voglio modificare il codice LGPL in modo che la classe e le funzioni non implementate siano rese visibili all'esterno della dll aggiungendo dllexport davanti alla classe e aggiungendo una parola chiave virtuale davanti alla funzione.

Quindi ho intenzione di implementare quelle funzioni nel mio software proprietario. Sono pronto a distribuire il codice LGPL modificato ma non un software proprietario che implementa le funzioni nel modo che desidero.

Ciò viola i termini e le condizioni LGPL?



6
Il problema con la tua domanda è che non stai cercando di usare la licenza nello spirito in cui è stata scritta. Probabilmente possiamo rispondere a domande sul significato previsto delle licenze, ma non possiamo entrare in dettagli legali in modo affidabile . Per questo, possiamo solo raccomandare un avvocato. Inoltre, ciò che stai facendo dipende da una domanda legale (che cos'è un'opera derivata dal software LGPLed?) Che non è stata risolta nella giurisprudenza degli Stati Uniti e ho visto opinioni diverse tra i veri avvocati. (Non sono un avvocato, ma ho seguito casualmente questi problemi.)
David Thornley,

Difficile da dire. Leggi questo: javalobby.org/java/forums/t15903.html - stanno parlando di Java, ma sembra applicabile a qualsiasi linguaggio OO.
Mike Baranczak,

Risposte:


26

Questa è una domanda complessa, ma credo che ciò che proponi non sia permesso.

Si sta suggerendo ganci aggiungendo nella libreria per rendere più facile per voi di sottoclasse la biblioteca e, quindi, per lo meno. per bypassare lo spirito della LGPL.

Il problema è che se sottoclassi una classe soggetta alla licenza LGPL nel tuo codice, il tuo lavoro diventa un'opera basata sulla libreria , piuttosto che un'opera che utilizza la libreria, il che significa che il tuo codice è un derivato lavoro che rientra nella sezione 2 ( LGPL v2.1 ) anziché in uno coperto nella sezione 6 ( LGPL v2.1 ). Cioè diventa soggetto alla LGPL !

Penso che Stephen Colebourne fornisca un buon riassunto su javalobby.

Non sono un grande fan delle discussioni istintive con i tuoi suggerimenti di avvocato , ma in questo caso penso che varrebbe la pena farlo se hai intenzione di procedere con questo, altrimenti potresti ricevere una brutta lettera dal Software Libero Team legale della Fondazione .

In alternativa, potresti chiedere direttamente alla FSF . Dalla loro pagina di contatto :

Per domande su licenze per software libero e copyright

Consulta le domande frequenti sulle licenze , l' elenco delle licenze , le informazioni generali sul copyleft e le pagine correlate . Se rimangono domande, inviare un'e-mail a <licensing@gnu.org>.

Per inciso, nella domanda correlata Reflection e LGPL , gbjbaanb risponde con la prospettiva LGPL 3.0 .


4
Mi piace il suggerimento "chiedi al FSF"
ZJR

La mia lettura era che volevano esporre più funzioni nella libreria LGPL. Finché la lib risultante è ancora LGPL e un utente del software dell'OP è libero di sostituire la lib con il loro build - sarei felice
Martin Beckett,

3
@MartinBeckett - Non del tutto, l'interrogante sta cercando di aggirare la LGPL modificando la libreria per rendergli più facile modificare di nascosto la libreria nel suo codice sorgente chiuso. Se aggiungesse direttamente la sua nuova funzionalità di libreria alla LGPL e poi la usasse nel suo codice, non ci sarebbero problemi. È il fatto che sta cercando di mantenere la sua nuova funzionalità chiusa e ancora parte della libreria, questo è il problema.
Mark Booth,

6
LGPL 3.0 afferma: "La definizione di una sottoclasse di una classe definita dalla Libreria è considerata una modalità di utilizzo di un'interfaccia fornita dalla Libreria." Quindi questo dovrebbe essere permesso, almeno sotto LGPL 3.0.
David

3
@David - Credo che modificando la libreria LGPL per permetterti di scavalcare una funzione che normalmente non potrebbe essere sovrascritta, stai tacitamente riconoscendo che il tuo codice è sufficientemente accoppiato che ha come 'basato su' piuttosto che un relazione "usata da" con la biblioteca, così si attiva il debole copyleft.
Mark Booth,

13

Standard Non sono un disclaimer di avvocato.

LGPL richiede che le modifiche al codice sorgente della libreria siano distribuite a chiunque abbia utilizzato il codice. Essa non richiede che il codice, che usa la libreria, sia open source e rilasciato sotto la stessa licenza.

Wikipedia per una descrizione più dettagliata, ma non legale, di LGPL, inclusa una sezione sull'eredità di classe .


+1. Riassumendo: noi pensiamo che non viola LGPL (ma IANAL)
MarkJ

@MarkJ - Come spiego nella mia risposta , non sono sicuro che, come proposto, la domanda sia semplicemente una questione di eredità di classe.
Mark Booth

9
Penso che alla gente piaccia digitare IANAL perché contiene "ANAL".
g33kz0r,

5

"Voglio modificare il codice LGPL ..." questo dice abbastanza che devi rilasciare qualsiasi di quel codice modificato. Quindi estendere il fatto che l'estensione del codice modificato sia un'opera derivata è controversa e in tal caso diventa soggetta alla LGPL.

Quello che sembra che tu stia cercando di fare è aggirare la LGPL, che in questo caso con queste tecniche non puoi.

Se si tratta di un lavoro derivato, i termini del programma devono consentire "modifica per uso proprio del cliente e reverse engineering per il debug di tali modifiche". Se un'opera che utilizza un programma LGPL è un'opera derivata o meno è un problema legale.

Ma se quello che stai cercando di fare è aggirare la LGPL, contatterò la FSF come raccomandato da Mark Booth .


1
Il problema è che la LGPL consente alcune forme di opere derivate, mentre ne impedisce altre. Ho aggiornato la mia risposta per fare una distinzione tra lavori derivati ​​che rientrano nella categoria di lavoro basata sulla libreria (che doveva essere LGPL) e lavoro che utilizza la libreria (che non lo fa).
Mark Booth,

@MarkBooth Sono d'accordo con te e gli altri, che in questo caso è work based onpoiché stanno apportando modifiche a LGPL al fine di esporre un codice privato in precedenza.

1

La mia ipotesi: (ma IANAL) dovresti rilasciare come open source la libreria modificata come codice LGPL e quindi rilasciarla in un programma commerciale. Funzionerebbe. Effettivamente finiresti per avere un fork open source della libreria in giro e poi venderai un front-end per questo.

Ma come molti altri hanno giustamente affermato, chiedi al FSF : è uno scenario patologico intrigante che hai lì; potrebbero chiedersi quanto fai se è applicabile o no. (o almeno preoccuparsene abbastanza da pubblicare una voce FAQ sull'argomento)


1

https://www.gnu.org/licenses/lgpl-java.html

Se si distribuisce un'applicazione Java che importa librerie LGPL, è facile aderire alla LGPL. La licenza dell'applicazione deve consentire agli utenti di modificare la libreria e decodificare il codice per eseguire il debug di queste modifiche. Ciò non significa che è necessario fornire il codice sorgente o eventuali dettagli sugli interni dell'applicazione. Naturalmente, alcune modifiche che gli utenti possono apportare alla libreria potrebbero interrompere l'interfaccia, rendendo la libreria incapace di funzionare con l'applicazione. Non devi preoccuparti di questo: le persone che modificano la libreria sono responsabili del suo funzionamento.

In breve, non vi è alcun problema con l'ereditarietà finché non si modifica il codice della libreria stesso, ma anche se lo si modifica, è necessario rilasciare solo il codice modificato della libreria, non il codice dell'applicazione.


1
La tua risposta contraddice molte altre risposte ma non fornisce molto per sostenere le tue affermazioni. Altre risposte sono più dettagliate e fanno un lavoro migliore nel spiegare le loro affermazioni. Si prega di modificare la risposta a fornire preventivi rilevanti dalla licenza o la FSF al fine di sostenere il vostro reclamo.

In che modo la mia risposta non fornisce molto per sostenere le mie affermazioni? Avevo messo un link alla pagina GNU ufficiale che cancella la confusione su LGPL e l'eredità di classe. Viene persino aggiornato per includere LGPL v3.
Nik.B,

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.