8 ms·
The main difference is the LGPL works at the “library” level, and requires the source for the library is open source. It requires in particular you can replace
by CJefferson 3y ago
The main difference is the LGPL works at the “library” level, and requires the source for the library is open source. It requires in particular you can replace the library, which means you can’t really static link to it from a closed source program (or open source but LGPL incompatible license).
MPL works on the “source file” level. You have to release any changes you make to MPL licensed files, but you can link those files into a closed source program any way you like.
- mrweasel 3y agoSo I could compile a program, dynamically link an LGPL library and that's fine, but the moment I statically link the same program I'd be violating the LGPL. I never considered that, don't that make the LGPL a pretty poor license for pretty much anything?
- michaelsbradley 3y agoYou can link statically, see my reply to parent.
- phkahler 3y ago>> You can link statically, see my reply to parent. You can static link code under the equivalent version of GPL license. The point of the LGPL was to compromise so non-free software could still use free libraries. I was unaware of the static compilation aspect of MPL - that's interesting.
- deleted 3y ago[deleted]
- michaelsbradley 3y agoYou can statically link closed/proprietary software with LGPLed code, its just a too common misunderstanding that you can’t do so.
- dartos 3y agoI think the other commenter is wrong. You are restricted from statically linking LGPL code in non free programs unless you follow the restrictions in section 4d of the license
- tom_ 3y agoNot necessarily, because it means LGPL libraries are suitable for use with non-free programs. As the library user, this is good, because you potentially get access to free libraries that you'd otherwise be unable to use. (GPL libraries are off limits for non-free programs.) As the library author, this is also good, because your potential user base is widened, but your library can remain free software. (Of course, you could equally spin it that these are bad things - an exercise for the reader.)
- noirscape 3y agoFwiw a lot of legal scholars have had their doubts on the virality of the GPL when it comes to dynamic linking. The FSF takes a pretty major logical leap by considering dynamically linking a work to a GPL library to be creating a work that falls under the GPL. Both EU and US scholars doubt that mere dynamic linking constitutes making a derivative work. (Specifically for the US, Galoob v. Nintendo ruled that a derivative work "must incorporate a portion of the copyrighted work in some form"; which obviously isn't the case with dynamic linking. - Legal scholars in the EU have come to similar conclusions when it comes to the various EU copyright directives.) Generally speaking it's untested enough ground to kinda avoid the GPL for this usecase anyway, but the FSF's Legal FAQ presents things as fact in a way mostly only benefitting their cause.
- cmitsakis 3y agoexactly. EU law allows linking without producing a derivative work according to this: https://joinup.ec.europa.eu/collection/eupl/matrix-eupl-compatible-open-source-licences#section-3 https://joinup.ec.europa.eu/collection/eupl/matrix-eupl-comp...
- belorn 3y agoThat article makes an interesting argument. If the code is for the purpose of interoperability, and the use does not prejudice the legitimate interest of the copyright holder, and it does not conflict with a normal exploitation of the program, and is independent software, then it may not be a derivative work. It would take a very special situation when a company would rely on fulfilling all those conditions in order to use that as a legal defense.
- circuit10 3y agoThat does make a difference though, because if you dynamically link it the user can modify the library and put it back in place of the original. Being able to modify things is one of the main aims of the GPL
- pjmlp 3y agoNo, it makes it quite usable for dual licensing scenarios. Those that want to take the work of others for free, get the same payment that they are willing to pay upstream developers for. Otherwise they can dynamically link it and take it as it is, or if it doesn't suit them, pay for the commercial license instead, and share their gold coins with upstream. EDIT: missing words
- michaelsbradley 3y ago> which means you can’t really static link to it from a closed source program Incorrect. https://www.gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynamic https://www.gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynami... If you statically link against an LGPLed library, you must also provide your application in an object (not necessarily source) format, so that a user has the opportunity to modify the library and relink the application.
- superq 3y agoThat might be very challenging, depending on which language you are using.
- dralley 3y agoWhich is why I personally dislike the LGPL. It's a hacky license that has too many asterisks. GPL and MPLv2 are straightforwards by comparison.
- tom_ 3y ago"Did you just tell me to go fuck myself?" "I believe I did, Bob." I'm being more than a bit mean here, in my attempt to be slightly amusing, because there's actually an obvious workaround: dynamically link with the LGPL library, like people usually do, and then it's nice and easy. The sort of systems where this would be difficult are the sort of systems where actually distributing a GPL program is just going to be annoying anyway, and you're probably better off not even trying. But it is actually an interesting idea! I assume for the average program you'd be including more of your symbol information than you might like, though, as object files have to find their external symbols somehow! (I imagine LTCG will add a lot of additional information as well. All this would add up to a lot of useful info that would assist in the sort of reverse-engineering effort that proprietary software vendors would like to make more tedious, rather than less so.) But, if you really wanted to do it, and didn't mind putting a bit of effort in, you could probably do something. An enormous non-LTCG translation unit containing all of the code, probably.
- goodpoint 3y ago> you can’t really static link to it from a closed source program This is false. You can static link as long as you follow https://www.gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynamic https://www.gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynami... Additionally, LGPL3 can be tweaked to add an exception to allow unrestricted static linking. This is like... exactly what ZeroMQ did.