5 ms·
> The LGPL is specifically designed to allow proprietary applications to link to open-source libraries without requiring the proprietary application’s source co
by jsiepkes 1y ago
> The LGPL is specifically designed to allow proprietary applications to link to open-source libraries without requiring the proprietary application’s source code to be released, provided certain conditions are met.
It's not that simple. The LGPL says that one must basically be able to make modifications to the opensource library, rebuild the library and be able to reintegrate this new library in the existing application. And you, as a developer using an LGPL library, need to make this "possible". What this practically means, is open to interpretation. This is also why lawyers (and companies) don't like the LGPL, because it contains even more of this "open to interpenetration" text than the GPL.
- torginus 1y agoAfaik not necessarily. You migh make modifications to the LGPL library (such as changing the API) and then use that in your proprietary app. Although the modified library would still be LGPL, it would be both practically useless to everyone on the street, and unfortunately the (L)GPL doesn't even specify how you must share the source. It's perfectly legal to say 'send us a request and we email you the modified sources'
- Scaevolus 1y agoNo. Read the license. https://www.gnu.org/licenses/lgpl-3.0.en.html https://www.gnu.org/licenses/lgpl-3.0.en.html "4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: - 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."
- em-bee 1y agoif your application contains LGPL code then as a user of your application i must be able to make changes to that LGPL code. that means i need either the code of the whole application or at least object files and infrastructure so that i can relink my changed LGPL code to your application.
- Maxatar 1y ago>at least object files and infrastructure so that i can relink my changed LGPL code to your application. This part is true but I'd like to emphasize that the infrastructure is on the user to acquire. The distributor of the application is not required to make that infrastructure available.
- em-bee 1y agoi am not sure about that. isn't it required that i get everything needed to rebuild the application? if it's a standard compiler, sure. but any config files, nonstandard tools to link, say if the non-LGPL part is written in an inhouse language with a non-public compiler and linker, you still need to give me the tools to relink the objects. i mean that's very unlikely to happen, but if it does, those tools need to be shared.
- Maxatar 1y agoYes that's true, if it's a non-public compiler, linker, operating system, or whatever... then the source code for all of those need to be provided.
- nightpool 1y ago> What this practically means, is open to interpretation. Is it? It seems very straightforward to me—just use a DLL. The LGPL even says explicitly that it's fine as long as you use a shared library. The situation gets trickier for Android or Xbox games I guess. I'm curious how Unity complies with the LGPL provisions there. But for any normal desktop platform this should be trivial to comply with. EDIT: ah, upthread they mention this is only a provision for the LGPLv3. I would expect that the LGPLv3 is pretty rarely used for this reason.
- reverius42 1y ago"Just use a DLL" Like you say, it gets trickier for Android, or Xbox games, or... iOS, which requires each library binary to be signed by the publisher, or... Rust or Go, which encourage static linking of all dependencies... These days a "normal desktop platform" is really a minority of software.