I've been warned that LGPL v3 forbids any kind of modifications that would prevent reverse-engineering, including software protection such as obfuscation.

In practice, does this license make it illegal to use something like SecureSWF, or simply a JavaScript minifier, when linking a program with a LGPL-licensed library?

  • I don't understand your question. Do you think that the LGPL forbids reverse-engineering, or do you think that it forbids obfuscation? – Philipp Wendler Mar 9 '12 at 16:03
  • @PhilippWendler Updated the question. I mean: using obfuscation makes it impossible to reuse the LGPL part of the Combined Works, so it makes linking illegal, right? – Warren Seine Mar 9 '12 at 17:12

GPL requires that you make any modifications to the GPL'ed work, or any derived work, available as GPL.

GPL v3 clarifies this to say you can't take GPL'ed work, modify it and make the source available but ban someone from actually using it - by patents or code signing etc.

LGPL allows you to link the LGPL'ed code to your propriety code without releasing your own code. But you have to allow someone to swap the LGPL'ed code for another version so that they can modify it.
If your app checked for a particular LGPL library (by code signing etc) then it would not be acceptable - somebody would be unable to take the LGPL lib that they had written and change it while continuing to use it with your app. You are taking their work and not allowing them the freedom they demanded in return.

You can of course do anything you want with your app's code - you just have to let them change their work in the LGPL lib


For legal purposes, JS minifiers can be treated as compilers. They take readable input and produce logically equivalent, but more efficient output. It follows that using a JS minifier on LGPL sources is allowed, iff you do make the un-minified sources also available.

Obfuscation is pointless as the (L)GPL requires you to also make the source available in a reasonable (un-obfuscuated) format.

  • If a proprietary program A uses LGPL library B, obfuscating the whole combination, while making B available in a readable format, is legal then. – Warren Seine Mar 13 '12 at 14:35
  • 1
    You would need the ability to replace B, i.e. it must retain its library character. If you obfuscuate A and B together such that the result is inseparable, then the result is equivalent to that of statically linking in LGPL library B, i.e. disallowed. – MSalters Mar 13 '12 at 14:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.