Do Not Sign the Qt License Agreement Unchanged
burkhardstubert.substack.com
burkhardstubert.substack.com
Jeez I'd hate to be the engineer who has to explain in court that my change was a bug fix and not a feature improvement.
Why do people even buy QT Commercial? LGPL is a very easy license to comply with. Are there better tools for commercial users or something?
Some software components are only available via the commercial license (QtQuick3D is a big one, Qt3D is very barebones and you basically have to do everything via shaders). Also you get "support" which can be nice for new developers but doesn't get you very in-depth technical answers, at least from my experience. Booking support time/workshops directly via KDAB or Qt to adress specific issues is a better investment than paying the commercial license just for that.
Qt is used a lot on embedded devices (i.e. car infotainment systems, smart TVs, smart appliances, etc). Complying with LGPLv3 means that the user must be allowed to reverse engineer the product and upload a modified version of the software to the product. This blocks practices such as firmware signing, so a lot of companies would rather pay for Qt than comply with LGPLv3.
Now, I believe Linus Torvalds for example interprets the license differently, and doesn't believe that a company using Linux on an embedded system is obligated to allow their customers to apply a patch to this Linux system (and he certainly doesn't want the manufacturer to be forced to make their proprietary software run on top of the modified Linux, which is why he never wanted the Linux sources to be updated to GPLv3, even if it were feasible to do so).
https://events19.linuxfoundation.org/wp-content/uploads/2017...
> Specifically, I asked him on 2012-05-05:
> > [so], these words in GPLv3: “The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.” mean that the proprietary software that is not a combined work with the GPLv3'd work must also function?
> Stallman replied on 2012-05-06 with:
> > Absolutely. And I wrote it specifically to do that!
I don't think this has ever been litigated, so we don't know what a judge and jury would find, but I suspect that if they found Bradley Kuhn is right, there may be a GPLv4 that is more explicit about requiring the device to keep functioning as it was, not just as a dev board as he calls it in these slides. And that GPLv4 would apply automatically to lots of GPL software going forward (because of the "or later" clause that many projects are using).
I also think he is explicitly contradicting his earlier article to some extent. He also mentions in that that the whole original purpose of the GPL, as also told by Stallman, was to be able to fox your own printer by patching its code when you find a bug in it. It's clear that "turn the printer into a dev board by blowing a fuse" doesn't achieve this original goal at least - whether it achieves the license terms as written is more debatable.
[0] https://sfconservancy.org/blog/2021/jul/23/tivoization-and-t...
LGPL compliance is achieved purely by providing a copy of your version of the source code; if no modifications have been made to the LGPL portion, a simple link to upstream is sufficient, otherwise a “reasonable” means of getting the same code (full tarball, diff against upstream at some point in time, etc) is needed. The LGPL (and GPL overall) does not make any provision that the user MUST be able to replace the object binary, only that source is provided to enable doing so if you break whatever tamper seals are there for yourself.
Section 4e of the LGPLv3 says that one of the conditions for conveying a "combined work" (such as a proprietary application that links with an LGPLv3 library) is "Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version."
The relevant quote from Section 6 of the GPLv3 is:
> “Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.
> If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).
In summary, if you ship a device that is physically capable of running modified code, you must give users the ability to both link the LGPL'd library with your proprietary code and to write the resulting modified firmware to the device.
I have never had a Qt license but if you want to link a private application statically or get support, you have to have one.
After having worked with Qt (QML) on a daily basis (and quite in-depth, from using the scenegraph api to creating controls that with complex touch interfacing) I have to say I wouldn't pay a dime for the stuff you get with Qt. And even what they sell is almost never even close to worth it.
The underlying technology is pretty good, so the Qv4 engine, the OS-abstractions (sockets, networking etc) and so on. But all the library code ontop can be very hit or miss.
For example, they introduced new ways of handling touch events (DragHandler, TapHanderl, PinchHandler etc. etc.) which work GREAT! But they lack any way to stop propagation of events leading to them becoming utterly unusable if you have any custom "popup" things. There are also a lot of bugs with them which haven't gotten fixed in years even though they cannot be worked around. Paying for the product doesn't seem to even get you any further in that regard.
Using the open source Qt is the best option in my opinion, worst case you buy support sessions to adress specific problems but that's about it.
There really is not a ton of other options.
I think for most companies, paying for QT and maybe a few extra for bug fixes as needed makes sense. And lets you tone down the hardware expenses that say Chromium would require.
Qt has a big advantage if your content is rather static and you can just top-down layout everything via anchors and rather fixed positions. But in those cases you also generally don't use complex controls that layer ontop of each other.
In my opinion it should be communicated quite clearly that QML is very good for "small" embedded UIs like for general home appliances, but if you are planning to create a rather complex application with demands like responsive layouting, custom data structures, interfacing with existing apis, then you far better off just using chromium with a custom backend. That has far less UI-breaking bugs.
Qt accidentally COMPLETELY broke lighting in Qt3d: https://bugreports.qt.io/browse/QTBUG-100402
That's something I find completely unacceptable and I haven't encountered something that application-breaking in chromium (yet).
For the desktop I would 100% use Widgets over QML.
Well, no. I'm allowed to think that the Qt company had something to do with it, even if you always have to be on guard when negotiating or signing legal agreements.
I'd counsel small businesses who do not have infinite time or legal resources to prefer Open Source products because evaluating the legal risk is cost-effective compared to evaluating proprietary alternatives. It's similar advice to what you get in this blog post, even though I'm not so cynical as to think "companies gonna evil" is a universal truism.
It was a business mistake by the Nokia in 2009 to offer the non-commercial version of Qt as LGPL. They should just have continued using GPL.
>> The core libraries of Qt (Essentials) and all existing LGPL-licensed Qt add-ons must continue to be available under the LGPLv3.
I don't think so. At the time I'm sure their goal was to have Qt as the development platform for all their phone hardware in time, while the profit would have come from phone sales. Using LGPL would have encouraged adoption by all developers.
What they didn't know in 2009 was that their hardware business will collapse. Or be collapsed.
https://www.tldrlegal.com/license/gnu-lesser-general-public-...
How are Tesla using it? If it’s in their cars, how do they comply with this?
While Autodesk is a big company, I could see trying to use a commercial licence as impractical for them. If they tried, what would it mean for their no cost editions, what would it mean for their plugin developers, what would it mean for their customers who do custom development on to of it? I think the paid licenses would be a disaster in all cases.
Well not true anyway so don't wet yourself.
(I haven't verified this; this is just how I read the GP's comment.)
> flutter create --template=plugin_ffi demo_library --platforms android,ios,macos,windows,linux
Hope this helps!
1. https://dev.to/andycall/the-comprehensive-guide-to-using-cc-... 2. https://dev.to/andycall/setting-up-a-development-and-debuggi...
It's like asking whether fish can breathe benzene when they are out of water.
I've tried building an embedded product with AOSP that isn't a phone or web browser. It was a massive pain in the ass. I hate the JNI.
That's the problem. No matter how many times Digia threatens you, the LGPL does not require you to make your code open source.
You're either confusing the L and non L GPL licenses, or you remember the situation from before Nokia bought Qt. Trolltech Qt was indeed GPL (without the L) plus commercial and what you said would have applied. However, it does not apply now.
Even legacy systems could be running a GNUStep desktop thanks to having multiple settings: a modern one a la OSX/Etoile; and another one with classical NeXT widgets without fancy effects.
the license mess at Qt is why I never touched it over the years.
Also, Virtualbox...
- €200M net sales
- 1.5M developers,
- 3,500 commercial customers
= €150 per developer/year
= €60,000 per customer/year
- €2.2B market cap.[1] My friends who still do Qt whine occasionally about quality going down, but it's not like they have other options.
And I bet Crank will actually run on a Cortex-M3.