LGPL è "più debole" della GPL, ma non nel modo in cui descrivi. La differenza non ha nulla a che fare con la modifica o meno della libreria LGPL.
Ecco una descrizione di alto livello molto approssimativa che dovrebbe aiutare a ottenere il tuo intuito sulla strada giusta: la GPL richiede che se il tuo programma usa un codice GPL, il tuo intero programma deve essere libero ( come definito dalle "quattro libertà" la FSF descrive qui ). La LGPL richiede che, se usi un codice LGPL, che il codice LGPL sia libero anche se il resto del tuo programma non lo è. In particolare, ciò significa che tutti gli utenti del tuo programma devono essere in grado di modificare la libreria LGPL'd nel tuo programma come preferiscono, anche se non sono in grado di modificare il resto del programma.
Se vuoi che il resto del tuo programma rimanga chiuso, in pratica il modo più semplice di rispettare la LGPL è di collegare il tuo programma alla libreria LGPL dinamicamente piuttosto che staticamente , poiché l'utente può facilmente scambiare un file .dll con un altro senza ricompilare o ricollegare il codice. Un'altra opzione meno comune è quella di fornire tutti i file oggetto che sono stati collegati staticamente al programma, ma non il loro codice sorgente, in modo che l'utente possa ripetere il collegamento se desidera modificare la libreria LGPL. Per ulteriori informazioni, ti consiglio vivamente di consultare la pagina delle FAQ ufficiali della FSF sulle licenze GNU .
Riguardo alle dipendenze transitive, la versione breve è che se questo ti preoccupa, hai bisogno di un vero avvocato per controllare questa roba. Se una delle tue dipendenze ha una dipendenza GPL che non conoscevi, stai ancora violando la GPL come chiunque altro, quindi questo può essere un problema serio.