PDA

View Full Version : LGPL question



tim47
23rd February 2010, 06:21
Hello,

I've developed an application using the LGPL version of Qt. I've went over the LGPL license (http://www.gnu.org/licenses/lgpl-2.1.html), but am looking for a little clarification on some things.

I've used the Qt library without any modification, and the executable that will be shipped will be built with mingw on Windows. The application will be dynamically linked to the Qt library, and also dynamically linked to any other libraries from mingw. The source code of the application is proprietary.

Firstly, based upon the license information found on the mingw site (http://www.mingw.org/wiki/FAQ), it's my understanding that the DLLs
- libgcc_s_dw2-1.dll
- mingwm10.dll
fall under public domain. Is this correct? Or does libgcc_s_dw2-1.dll not fall under the definition of the "MinGW runtime"?

Concerning Qt and the LGPL license, as I have not modified any part of the library, I believe section 6 applies.

Section 6 says:

As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.

My application would be a "work that uses the Library", thus I can distribute only the executable to my application, and not the source code. Correct? And it's my understanding that the last part, says that whatever terms I release my application under, I cannot expressly forbid reverse engineering it? Is this Correct?

Now, when I ship my application, I would need to include the mingw related DLLs as described above, and also:
- QtCore4.dll
- QtGui4.dll
My understanding of the license is that I can freely distribute these DLLs, and only need to provide a copy of the LGPL license and a location (i.e., qt.nokia.com) to download the source code of the library from. Is this Correct?

tl;dr I am releasing an application which uses the LGPL version of Qt. Can I keep my application's source code proprietary, and freely distribute the Qt shared libraries (DLLs)? And, what other obligations do I have to the terms of the LGPL?

Thank you if you've read this far, this is my first commercial work, and I am a little paranoid about my obligations to licensing issues. I appreciate any answers to the questions above.

Thank you.

squidge
23rd February 2010, 08:06
Sounds fine to me - you've made no changes to the libraries, you have linked dynamically, so people can update the GPL parts if they require. You can keep your source code close to your chest, as you have not used any GPL code from Qt apart from headers and objects which is accepted in the Nokia license exemption (its in the Qt dir if you want to read it yourself)

You can ship the library files which your application needs, as long as you link to the full library and source code, which you intend to do.

So I see no problems.

Not sure about forbidding "reverse engineering", but it doesn't make much difference to be honest. Anyone who wishes to, will do so anyway, regardless of the license.

ChrisW67
25th February 2010, 04:38
Firstly, based upon the license information found on the mingw site (http://www.mingw.org/wiki/FAQ), it's my understanding that the DLLs
- libgcc_s_dw2-1.dll
- mingwm10.dll
fall under public domain. Is this correct? Or does libgcc_s_dw2-1.dll not fall under the definition of the "MinGW runtime"?libgcc_s_dw2-1.dll is part of GCC and governed by the GPL v3 Runtime Library Exception http://www.gnu.org/licenses/gcc-exception.html as far as I can tell. While the exception clearly gives permissions:

You have permission to propagate a work of Target Code formed by combining the Runtime Library with Independent Modules, even if such propagation would otherwise violate the terms of GPLv3, provided that all Target Code was generated by Eligible Compilation Processes. You may then convey such a combination under terms of your choice, consistent with the licensing of the Independent Modules. the only way to determine the "Runtime Library" code that this applies to is to read each and every source file that contributes to the DLL concerned. This is far from convenient to ensure compliance. If someone can point to a concrete statement that this library is covered by the exception then I'd love to see it.

npclaudiu
5th March 2010, 23:18
From my understanding (and I'm not a lawyer), you can distribute the binaries under your own terms as long as you specify that you use third-party components released under their own terms (including their licenses). To use components that are licensed under the LGPL you must allow the user to modify the components under that license and use that modified component with your application (see "provided that the terms permit modification of the work for the customer's own use"). To accomplish that, you could dynamically load the LGPL'ed components at runtime (like plugins) or provide the object files of your application, so that the user can recompile your application against the modified library. Before distributing anything, make sure you understand all the terms and conditions of all the components that you choose to distribute. You might even consider consulting a lawyer.

bender86
11th March 2010, 13:35
tl;dr I am releasing an application which uses the LGPL version of Qt. Can I keep my application's source code proprietary, and freely distribute the Qt shared libraries (DLLs)?

Yes: http://qt.nokia.com/developer/faqs/70/

binaural
15th March 2010, 08:07
Hi,
have similar problem. Writing qt application which after release will be free (no cost),
But I'm not sure about licencing of libgcc_s_dw2-1.dll and mingwm10.dll. After reading upper items it seems it's GPL.
So can I link dynamically those dll's?
E.g. release directory will contain LGPL dll for QT with LGPL licence file and mingwm dll's with linecence file?
Could this make any problems for violating some of licenece?

Thanks for clarification.