2015-07-08 33 views
5

Sto considerando la possibilità di creare un'applicazione closed-source che si collega dinamicamente alle librerie Qt. Le piattaforme di destinazione sarebbero Linux e Windows. Al fine di adempiere agli obblighi della licenza LGPL:Come consentire modifiche private quando si utilizza Qt in un prodotto commerciale sotto LGPL

"L'utente della vostra applicazione deve essere in grado di ri-collegare l'applicazione nei confronti di una versione diversa o modificata della libreria Qt" (Qt faq).

sto lottando per capire che cosa è tecnicamente necessaria per rendere questo possibile. Soprattutto senza rilasciare il codice sorgente.

  1. A quali condizioni sarebbe un utente in grado di sostituire solo i file .so/.dll forniti con l'applicazione con i propri, versioni modificate?

  2. È possibile? Perché sullo stesso argomento gli stati libstdc++ faq:

    L'LGPL richiede che gli utenti siano in grado di sostituire il codice LGPL con una versione modificata; questo è banale se la libreria in questione è una libreria condivisa in C. Ma non c'è modo di farlo funzionare con C++, dove gran parte della libreria è costituita da funzioni e modelli inline, che sono espansi all'interno del codice che utilizza la libreria. Quindi, per permettere alle persone di sostituire il codice della biblioteca, qualcuno che usa la libreria dovrebbe distribuire la propria fonte, rendendo l'equivalente LGPL alla GPL.

Grazie!

Edit: La seconda questione è chiarita da LGPL version 3, sezione 3. utile riferimento: un old version del Eigen FAQ discutere la questione e la loro correspondence with the FSF su di esso.

risposta

1

In pratica, le persone di solito si collegano a una libreria condivisa Qt; è così possibile aggiornare leggermente Qt, purché rimanga qualche API comune. Un utente avanzato in teoria potrebbe adattare la libreria Qt (a partire dal codice sorgente della versione che si sta utilizzando) per soddisfare le sue esigenze (ad esempio correggere un bug cattivo, in particolare senza toccare alcun file di intestazione Qt). Naturalmente fornisci tutti i dettagli per aiutarlo (almeno menziona esattamente la versione di Qt a cui stai collegando).

In linea di principio, come notato, questo potrebbe non essere sufficiente. Solo un processo e un giudice potrebbero davvero decidere, quindi chiedi al tuo avvocato.

Ovviamente non sono un avvocato.

BTW, ha fatto si considera chiedendo il vostro manager o client (o la persona legalmente responsabile) di rilasciare il codice come free software e pubblicarlo (per esempio sotto GPLv3+ su github)? Nella mia opinione parziale, questa sarebbe la soluzione migliore!