Prima di tutto, non sono un avvocato. Ma ho studiato molte licenze e ho compreso i problemi che li riguardano.
In secondo luogo, so che questa è una vecchia domanda, ma penso che sia ancora un punto di confusione e preoccupazione. Se non è un punto di preoccupazione, dovrebbe essere. La scelta di una licenza è un grosso problema che non puoi cambiare in modo banale, specialmente se sono coinvolti più contributori.
(L) GPL è stato scritto pensando a C / C ++, sfortunatamente. Si parla di "Codice sorgente", "Codice oggetto", "Collegamento dinamico", "Collegamento statico", "Compilatori" e "Interprete di codice oggetto". Quindi tradurre questo per altri linguaggi che non seguono le stesse tecniche di compilazione (come il bytecode di Java, la compilazione just in time di Python o la natura interpretata da Javascript) richiede alcune ipotesi e ipotesi. Quando parli di legge, cioè di pensare a eventuali casi giudiziari in cui due parti discutono, non avere una chiara distinzione è una COSA MALE.
Una parte di codice standard con licenza GPL è piuttosto semplice nell'intento. Si prevede che chiunque usi quel codice rilascerà il proprio codice a tutti gli utenti quando lo distribuiscono o lo vendono. Questo è il virus GPL che Richard Stallman voleva creare e fare in modo chiaro e pulito.
La LGPL originariamente era un tentativo di consentire una "biblioteca" che non sarebbe virale. Ma volevano ancora che l'utente finale fosse in grado di sostituire la libreria da solo, quindi la distinzione tra collegamento "statico" e "dinamico": l'utente poteva passare a una libreria con collegamenti dinamici diversi, quindi non avrebbe avuto bisogno di essere concesso in licenza come GPL. E un collegamento statico richiedeva che l'utente fosse GPL. La licenza parla effettivamente di "file header", che sono chiari in C / C ++ ma ovviamente non chiari quando ci si trova nei mondi Java, Python, Javascript, ecc. Quindi la L ("biblioteca") di materiale LGPL è fangosa, nel migliore dei casi.
Questo arriva al nocciolo della questione. Tutto ciò che non è chiaro è BAD nel mondo delle leggi. Se sto cercando di costruire qualcosa usando componenti GPL o LGPL, voglio essere certo di quale sia la mia posizione legale in futuro se dovessi atterrare in tribunale. Ma ad oggi, non sono sicuro perché non ci sono stati casi giudiziari che stabiliscono un precedente legale, solo argomentazioni intellettuali su forum come questo.
Qui è dove l'eccezione Classpath è inestimabile. Dichiara chiaramente che il codice sotto la licenza è (L) GPL, ma qualsiasi cosa che usi quel codice può seguire qualunque licenza desideri. Nessun ifs, ands o buts. Se modifichi il codice principale (ad es. Per correggere i bug), devi comunque rilasciare tali modifiche come parte della GPL. Ma l'uso NON ti infetta.
Dal punto di vista del business, capisco perché alcuni non vogliono toccare il codice GPL con un palo da 10 '. La posizione legale non è chiara e il business potrebbe essere punto un decennio lungo la strada quando finalmente verrà stabilito un precedente legale. Oppure potrebbero essere bloccati in tribunale per anni combattendo per stabilire il precedente legale. Indipendentemente dal fatto che non vogliono rischiare il costo di quella battaglia. L'aggiunta della clausola di eccezione Classpath elimina le domande legali ed evita qualsiasi (grave) potenziale causa giudiziaria.
Quindi, per me, Classpath Exception è molto diverso da LGPL. È un modo legalmente pulito per tracciare una linea luminosa che consente l'utilizzo non GPL di codice sorgente o librerie GPL o LGPL.