Esiste una licenza LGPL modificata che consente il collegamento statico?

21

LGPL richiede che, se un programma utilizza la libreria LGPL-ed, gli utenti devono essere in grado di ricollegarsi il programma con una versione diversa della libreria:

...

d) Do one of the following:

0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.

1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.

...

Tuttavia, in alcuni casi, ciò può comportare notevoli difficoltà. In particolare, i programmi Haskell sono quasi sempre compilati staticamente. Inoltre, il compilatore esegue ottimizzazioni cross-module quindi non è possibile prendere una parte del codice e sostituirlo con un altro. Quindi è molto difficile soddisfare questa condizione. (Vedi questo link su Haskell Wiki.)

Il collegamento dinamico sarebbe una soluzione, ma in molti casi questo non è possibile. Ad esempio:

  • Alcune piattaforme potrebbero non avere alcun collegamento dinamico.
  • Alcune lingue non hanno la possibilità di collegamenti dinamici. Oppure, non è possibile creare moduli multipiattaforma.
  • In alcuni casi il collegamento dinamico impedirebbe importanti ottimizzazioni. Mentre direi che questo è raramente un problema serio, in linguaggi come Haskell la perdita di prestazioni potrebbe essere considerevole.

Pertanto, sto cercando una licenza standard simile a LGPL che non richieda la possibilità di ricollegare (e capisco che questo rimuova un po 'di libertà data agli utenti). Alcuni progetti utilizzano la propria modifica di LGPL, ad esempio wxWidgets . Ma preferirei usare una licenza standard che è in qualche modo più ufficiale, forse controllata da alcuni esperti di legge e (L) compatibile con GPL. Ce ne sono così?

(Inoltre sarei interessato a sapere se ci sono alcune conseguenze impreviste di una tale modifica di LGPL.)

    
posta Petr Pudlák 11.12.2012 - 19:53
fonte

5 risposte

13

Sono sorpreso che nessuno abbia menzionato la licenza pubblica Mozilla. È simile alla LGPL eccetto che consente il collegamento statico. MPL versione 2 è compatibile con GPL / LGPL.

Licenza pubblica Mozilla (MPL 2.0) vs Licenza pubblica generale GNU minore (LGPL 3.0)

    
risposta data 24.03.2015 - 20:48
fonte
11

wxwidgets è concesso sotto essenzialmente = LGPL + linking statico

...essentially the L-GPL (Library General Public Licence), with an exception stating that derived works in binary form may be distributed on the user's own terms. This is a solution that satisfies those who wish to produce GPL'ed software using wxWidgets, and also those producing proprietary software.

wxWidgets is Certified Open Source Software Participants in the discussion that led to this decision include the folk from Abisource, Robert Roebling, Julian Smart, Markus Fleck, Karsten Ballueder, and some advice from Richard Stallman. Richard has confirmed that the new licence is compatible with GPL'ed applications. However, there are no significant restrictions on proprietary applications.

The wxWindows Licence has been approved by the Open Source Initiative, and you can find the licence on their site here...

    
risposta data 12.12.2012 - 00:50
fonte
4

IANAL, ma sono stato indotto a credere, che una soluzione è fornire file oggetto per parti non LGPL. In questo modo l'utente può ricollegare il programma e così è libero di cambiare la parte LGPL, soddisfacendo i requisiti di LGPL.

In altre parole, è necessario disporre di un pacchetto sorgente, con sorgenti LGPL e file oggetto compilati di codice non LGPL. Ovviamente è quindi necessario fornire file oggetto per ogni diversa architettura per la quale si rilasciano i binari, ma non penso che questo sia un problema.

Dal punto di vista dello sviluppo, il più semplice potrebbe essere semplicemente avere il sistema di compilazione anche creare il pacchetto sorgente allo stesso tempo, quando si costruisce il file binario per la distribuzione.

    
risposta data 12.12.2012 - 08:36
fonte
3

Ne ho trovato uno con Google: licenza OpenScales

OpenScales is released under version 3 of the GNU Lesser Public License (LGPL, available here), with an exeption related to static linking exception (see below)...

In addition to the LGPL license text, the exception to the LGPL conditions apply to OpenScales:

As a special exception to the GNU Lesser General Public License version 3, you may convey to a third party an executable file from a Combined Work that links, statically or dynamically, portions of this Library in the executable file, conveying the Minimal Corresponding Source but without the need to convey the Corresponding Application Code under section 4d0 of the GNU Lesser General Public License, so long as you are using an unmodified publicly distributed version of the Library. This exception does not invalidate any other reasons why the executable file might be covered by the GNU Lesser General Public License or the GNU General Public License.

Non è standard però, e non so se ne esiste uno.

    
risposta data 11.12.2012 - 20:13
fonte
1

Come continueresti a garantire la libertà dell'utente? Credo che la risposta "corretta" sia quella di collegare staticamente uno shim che carica dinamicamente la libreria.

    
risposta data 11.12.2012 - 21:50
fonte

Leggi altre domande sui tag