The open source version of Qt is LGPL, which basically means you may use it in a proprietary application if you use dynamic linking. If you link statically or copy any of its code, then your program must be free software (GPL).
If you pay for a commercial license, you can link statically without restriction. The commercial version is also necessary for locked-down platforms like iOS where the dynamic linking can't be changed by the end user of the software.
IANAL, and there are a few details I glossed over, but that's the simple version.
Either dynamic linking or provide object files that can be linked with the library.
In essence, you can use it in proprietary application as long as you don't modify the library and you provide means to switch to different version of the library.
"If you link statically or copy any of its code, then your program must be free software (GPL)." I don't the first part is true (the second one is though).
The second part isn't technically true either. You can copy code without requiring a license if you meet the requirements for fair use. For example, copying function signatures for interoperability.
I was trying to be conservative and paint a simplified picture of the license that you can't go wrong by following, but I definitely erred in leaving out some possibilities and presenting it as if they don't exist.
Qt is LGPL. So there are no limitations unless you make changes to the Qt library (which you probably won't do). If you do make changes, though, then you would have to release them under LGPL license.
So, I think there are absolutely no limitations to using Qt LGPL in a commercial application. All you get from the commercial license is support.
Note: I'm not a lawyer, don't hang me if you get sued or something. But I do think I'm right about this.
> there are no limitations unless you make changes to the Qt library
I thought you were required to allow linking to a newer or modified version of a LGPL library? So one limitation is you have to either dynamically link or provide a mechanism to relink.
IANAL, but this requirement is the reason I stopped using Qt for my own projects. Those terms would seem to mean anything you write using Qt can't be deployed on a closed platform. Tons of people use LGPLd code on iOS and Android (stores like Play and Amazon) though and I think most users and developers are ignorant of the relinking requirement. I didn't want to risk it.
The Apache Software Foundation does not allow its projects to have mandatory LGPL dependencies for this reason: it would become impossible to bundle the Apache product plus its dependencies into a package that forbids modification, either through technical or licensing restrictions.
This linking restriction is not a part of other product-scoped copyleft licenses like the MPL and the EPL.
Google has now killed off Sparrow entirely, but they used to make it available for download so that an end-user could in principle re-link it, to comply with the LGPL.
So if I were to statically link my application but release the object files and let user's re-compile it with another version of the library then that would satisfy the LGPL license? If so I think I might be headed back to Qt.
Yes, if you link dynamically, you are generally okay with just sending your executables.
If you link statically, you also have to make your object code available for relinking if needed. But that generally comes down to doing something like "ar q libMyApp.a *.o" and then the user would make the app with "gcc -o MyApp libMyApp.a -lQtWhatever".
If you distribute as some package (like .apk for android), you'd have to make it possible for user to change the library. Simply allowing users to download .apk files would make it work, since they can unzip them, change the library and rezip them back.
So, I wouldn't really call those "limitations". Just pesky things you have to do if making a commercial app with lgpl lib.
Oh, and there is no requirement to link with a newer version of the library, to the best of my knowledge. That's generally impossible since newer versions might (and do) deprecate features that were available in the older versions.
It's also in the meantime LGPLv3 - at least for certain QT components, but the system is not easy to understand. The v3 requirements add that if you distribute an application (or device) with it, you have to provide the user with a way to update the linked QT library with a different version that he provides himself.