I am having trouble understanding the usage permissions of open source. I read somewhere that GPL or LGPL enforces that software that uses GPL software must also be released open-source. I want to create an application that uses some open-source image recognition library. Can I sell this application or does it have to be open source? Thanks!
35.8k 12 12 gold badges 71 71 silver badges 79 79 bronze badges asked Jul 11, 2009 at 16:21 2,217 3 3 gold badges 19 19 silver badges 17 17 bronze badgesLGPL allows you to use and distribute the open source software with your application without releasing the source code for your application.
GPL requires you to release the source code of your application if you choose to use and distribute the GPL licensed open source software with your application. In other words, your application must also be licensed under the GPL.
answered Jul 11, 2009 at 16:25 Robert Harvey Robert Harvey 180k 48 48 gold badges 345 345 silver badges 509 509 bronze badges Note the LGPL states the used library must be replaceable. Thus static linking isn't possible. Commented Jul 11, 2009 at 16:55 So a "DLL" (Dynamic Link Library) would be legal, correct? Commented Jul 12, 2009 at 0:55Only if you also provide the source code for that DLL, as well as the required header files or documentation in order to be able to interface with the rest of the application, should anyone want to heavily modify, or re-write from scratch, that DLL.
Commented Feb 12, 2013 at 0:45One thing to note is that the LGPL is a longer and more complicated license than the GPL itself, because it contains the full text of the GPL and then adds additional terms to it.
Many of the additional terms in the LGPL specify the conditions that need to be met in order to be able to distribute your code in a project with another license. For example, not only must the user be given the source code to the section under LGPL, but it must be possible for the user of the finished software to modify, re-compile or replace the portion of the software that is licensed under the LGPL and use this modified code with the same software. If you are publishing otherwise proprietary software containing some LGPL code, one way of satisfying this requirement is to place the LGPL code into a separate dynamically linked library, and to distribute with your software the necessary header files and documentation required to re-compile the LGPL portion in such a way that it can still be linked and used with the software as provided. It is not acceptable to take steps to prevent modification of the LGPL code such as obfuscating the code itself or the API or header files.
Note that the LGPL is compatible with the GPL: you can opt to "upgrade" the code to GPL and incorporate it in a wholly GPL licensed project as set out in my first bullet point if you wish. You can't however go the other way and re-license GPL licensed code as LGPL.