PDA

View Full Version : [LGPL] Chiarimenti


das
01-12-2008, 16:15
Se io faccio un programma che utilizza librerie LGPL, devo rilasciare il sorgente del mio programma sia che sia collegato staticamente che dinamicamente alle librerie ?

Esattamente cosa mi consentono le LGPL in più rispetto alle GPL ?

cionci
01-12-2008, 16:42
Se io faccio un programma che utilizza librerie LGPL, devo rilasciare il sorgente del mio programma sia che sia collegato staticamente che dinamicamente alle librerie ?
Sembra che tu lo debba rilasciare solo staticamente, dalla release 3 se non sbaglio.
http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License

das
01-12-2008, 19:21
Sembra che tu lo debba rilasciare solo staticamente, dalla release 3 se non sbaglio.
http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License

Nel link sopra dice che in caso di link statico posso rilasciare anche solo gli object files senza rilasciare il sorgente. Però si riferisce alla 3, a me servirebbe saperlo per la 2

cionci
01-12-2008, 23:00
Per la 2 purtroppo non mi ricordo, però mi sembra che si potesse anche linkare staticamente.

cionci
01-12-2008, 23:10
http://www.nntp.it/comp-os-linux-development/1587641-faq-di-comp-os-linux-development.html

Mah...questa mi sembra ancora più assurda.

das
02-12-2008, 07:42
http://www.nntp.it/comp-os-linux-development/1587641-faq-di-comp-os-linux-development.html

Mah...questa mi sembra ancora più assurda.

Non riesco bene a capire cosa voglia dire questo punto:


3) inoltre non si può usare direttamente il meccanismo del
linking dinamico del compilatore ma si devono creare delle funzioni ad
hoc che implementino il caricamento dinamico delle librerie. Per questo
scopo c'è la funzione dlopen, ma quella fornita dalla libreria c della
gnu è sotto licenza lgpl anch'essa e deve quindi essere reimplementata.

cionci
02-12-2008, 07:57
In pratica dice che essendo dlopen, la funzione che "apre" a runtime una libreria shared (o dinamica) per poter importare i simboli, una funzione appartenente ad una libreria LGPL, allora per poter importare una libreria shared LGPL bisogna anche riscriversi l'equivalente della dlopen. Questo perché altrimenti si linka dlopen al nostro eseguibile e quindi di fatto includiamo una libreria LGPL in modo statico.
Ovviamente se sei su Windows questo problema non te lo poni perché non utilizzi dlopen, ma CreateLibrary e compagnia.

Sinceramente questa "viralità" della GPL la trovo abbastanza irritante...fosse per me avrei suddiviso in tre licenze, una simil-GPL virale (per proteggere kernel e programmi), una simil-LGPL che permette il linking dinamico e virale in caso di librerie (se rilascio una libreria basata su codice LGPL devo rilasciarla sotto forma di LGPL), una simil-BSD che permette qualsiasi cosa. Ci sono troppi estremisti e idealisti nella FSF.

das
02-12-2008, 08:33
In pratica dice che essendo dlopen, la funzione che "apre" a runtime una libreria shared (o dinamica) per poter importare i simboli, una funzione appartenente ad una libreria LGPL, allora per poter importare una libreria shared LGPL bisogna anche riscriversi l'equivalente della dlopen. Questo perché altrimenti si linka dlopen al nostro eseguibile e quindi di fatto includiamo una libreria LGPL in modo statico.
Ovviamente se sei su Windows questo problema non te lo poni perché non utilizzi dlopen, ma CreateLibrary e compagnia.

Sinceramente questa "viralità" della GPL la trovo abbastanza irritante...fosse per me avrei suddiviso in tre licenze, una simil-GPL virale (per proteggere kernel e programmi), una simil-LGPL che permette il linking dinamico e virale in caso di librerie (se rilascio una libreria basata su codice LGPL devo rilasciarla sotto forma di LGPL), una simil-BSD che permette qualsiasi cosa. Ci sono troppi estremisti e idealisti nella FSF.

In effetti... Avevo letto che la LGPL era nata per consentire che gli standard open si diffondessero anche nel software proprietario. Ad esempio se usi una libreria per salvare in formato ODF poi è ovvio che il tuo programma ODF supporterà il nuovo formato.
Di fatto mi sembra che il loro utilizzo sia veramente problematico. Oltre al fatto che queste licenze sono scritte in un linguaggio semi-incmprensibile.

Comunque per quello che ho capito (in windows) se creo una DLL separata dal mio programma, ma che include tutte le librerie LGPL, poi devo rilasciare il sorgente solo di quella.

cionci
02-12-2008, 08:54
Comunque per quello che ho capito (in windows) se creo una DLL separata dal mio programma, ma che include tutte le librerie LGPL, poi devo rilasciare il sorgente solo di quella.
Sì e a questo punto è la scelta migliore. Sulla tua DLL hai tutti i diritti, quindi la puoi includere tranquillamente nel tuo programma senza violare la LGPL.