site  contact  subhomenews

Qt dual-licensing

July 05, 2015 — BarryK
I raised this question in a recent post:

I was browsing in a forum yesterday, and a couple of guys in South America were discussing the cost of various application-development products, and complaining that they are too expensive.
For a guy who is not on a top "First World" salary, most of these commercial licenses are too expensive.

Qt is asking US$174 to $315 per month for a commercial license, but do we need it?

I am thinking of a young chap on limited income, who would like to create an app, and make that a career, that is, live from proceeds of sale of that app.
This is to be encouraged -- there is nothing like money to encourage someone to keep on developing their application!

I read the Qt licensing terms a bit more carefully, and it does seem that someone can create an application and distribute it closed-source. But, there is a catch!

Look at this site:
In case of dynamic linking, it is possible, but not mandatory, to keep application source code proprietary as long as it is "work that uses the library" – typically achieved via dynamic linking of the library. In case of static linking of the library, the application itself may no longer be "work that uses the library" and thus become subject to LGPL. It is recommended to either link dynamically, or provide the application source code to the user under LGPL.

This is further clarified here:
The LGPL allows you to keep the source code of your application private as long as it is "work that uses" the library. Dynamic linking is usually recommended here.

However, it is required in your application to acknowledge that it uses LGPL libraries:
The user of an application or device using LGPL licensed software has to be notified of their rights by providing a copy of the LGPL license to the end user and displaying a prominent notice about your usage of LGPL licensed software.

The catch
So, you can create and distribute a closed-source application, but only where the target environment already has the LGPL libraries. If you need to include the libraries in your application-package, then you must have a commercial license.
EDIT: I got that wrong, see comment.

Linux is usually OK. Ubuntu Phone is going to be OK. Anything else, such as Android (?), iOS, Windows, and Mac, is not OK.

A loophole?
My reasoning is that if you can split a package, provide the LGPL libraries as a separate package, with user access to the source code, and another package with closed-source application, that would be legal.
However, I don't see how it can be done in a locked-down environment such as Android and iOS -- it seems that you would need administrator rights when installing the library package, that is, a "rooted" phone.

Well, apparently the iOS App Store forbids an app to require outside shared libraries. So Qt must be bundled in the App, so a commercial license is required.

Another loophole?
If you develop your app using the LGPL license, and distribute it closed-source for Linux and Ubuntu Phone, could you then purchase just one month of the commercial license and build your app for distribution to Android, iOS, etc.?

Very messy/restrictive, but apart from that, would it be legal?


One can go mad reading this stuff.

Looking at it again, it does seem that you could develop and distribute a closed-source app using the LGPL license for Qt, and include the shared libraries in your application.

But, you would have to provide access to the source of those shared libraries.

See this site:
As Qt for Android uses the LGPL version of Qt, and it's perfectly possible (and also recommended and supported) to dynamically link in the Qt libraries when creating an app - there are no problems for app developers using Qt for Android. The app developers can develop closed source code and publish the app - no worries.
Only if you statically link with the Qt libs could there be a problem with closed source apps.

I did read somewhere that the Apple App Store requires libraries to be statically-linked. However, I read somewhere else that this requirement is to be relaxed, allowing an app to have bundled shared libs.
For the second scenario, you would need a commercial license for Qt.

Tags: linux