At Qt Day 2019 in Florence, Italy, I gave a presentation about "Using Qt under LGPLv3".
In the first part, I go through Section "4. Combined Works" and explain the obligations of LGPLv3 in detail.
When you combine your application with the Qt libraries, you can keep closed the source code of the application and publish the application and the Qt libraries under your license terms. You must satisfy the following conditions.
On a physical medium like a USB drive or DVD, you must provide the source code of the Qt libraries, the text of the LGPLv3 and GPLv3, the Copyright notices of the Qt libraries, a description of your modification of the Qt libraries and the installation information. If your application has a user interface, you must display the license texts of the LGPLv3 and GPLv3 and the Copyright notices in this user interface.
The installation information - a.k.a. the anti-tivoisation clause - describes how the user can build a modified version of Qt, how to install this version on the device, and how to run the application with the modified Qt version on the device. If you build a B2B product, you need not provide the installation information.
In the second part, I compare the costs of Qt Commercial and Qt LGPLv3. You must check the licenses for all packages of the (embedded) Linux system, no matter whether you use Qt Commercial or Qt LGPLv3. Qt commercial adds per-developer fees and per-unit fees (royalties). If you use Boot2Qt, Qt for Automation, Qt Safe Renderer or other commercial add-ons, Qt Commercial may well be worth the additional costs.
In the third part, I show how Yocto (bitbake) and Fossology help with the compliance checks. Fossology is a license and copyright scanner.
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
Using Qt under LGPLv3
1. Copyright 2019, Burkhard Stubert
Using Qt under LGPLv3
Burkhard Stubert – Solopreneur & Chief Architect, Embedded Use
I help teams succeed with embedded systems
2. Copyright 2019, Burkhard Stubert
When Downloading Open-Source Qt from qt.io
Screenshot: 6 March 2018
2
Nonsense!
3. Copyright 2019, Burkhard Stubert
Outline – Using Qt under LGPLv3
• The obligations of Qt LGPLv3: made understandable
• When to use Qt LGPLv3 and when Qt Commercial
• How Yocto and Fossology help with FOSS compliance
3
4. Copyright 2019, Burkhard Stubert
LGPLv3 Obligations: “4. Combined Works”
• You may convey Combined Work under your terms, if you ...
• give prominent notice that Application uses Qt libraries under LGPLv3 (4a), and
• provide copies of LGPLv3 and GPLv3 licenses (4b), and
• display copyright notices of Qt libraries and license texts of LGPLv3 and GPLv3 in
Application’s GUI (4c), and
• use a shared library mechanism for linking Application with modified but interface-compatible
versions of Qt libraries (4d1), and
• provide installation information (according to section 6 of GPLv3) how to build a modified Qt
version, how to install Qt on device, and how to run Application with Qt on device (4e).
For B2C: yes. For B2B: no.
4
5. Copyright 2019, Burkhard Stubert
The Combined Work: Application + Qt Libraries
5
Application(s)
closed source, proprietary
Qt Libraries
LGPLv3, GPLv3, Commercial
Auxiliary Libraries
GPL, LGPL, BSD, MIT, Apache, many others
System Libraries
GPL but exempted
Linux Kernel
GPLv2
For both Qt Commercial and Qt LGPLv3:
Compliance check needed for all modules
(500-1000 modules)
For both Qt Commercial and Qt LGPLv3:
Compliance check needed (< 20 modules)
Effort for checks: Qt LGPLv3 ≈ Qt Commercial
6. Copyright 2019, Burkhard Stubert
Convey Combined Work under Your Terms
6
Application
proprietary
Qt Library
LGPLv3
Combined Work
proprietary
Application
proprietary
Qt Library
Commercial
Combined Work
proprietary
Application
proprietary
Qt Library
GPLv3
Combined Work
GPLv3 violation
+ LGPLv3 obligations + Qt Commercial obligations
(e.g., royalties, per-developer fees)
LGPLv3 = GPLv3 + extra permissions
7. Copyright 2019, Burkhard Stubert
Convey Combined Work:
Product + Physical Medium
7
Source code of Qt libs
Text of LGPLv3 and GPLv3
Copyright notices
Modifications
Installation information
+
Qt libraries:
Object code
Application:
Object code
GPLv3 (6a)
LGPLv3 (4)
Display in GUI
8. Copyright 2019, Burkhard Stubert
Convey Combined Work:
Product + Written Offer
8
Source code of Qt libs
Text of LGPLv3 and GPLv3
Copyright notices
Modifications
Installation information
Qt libraries:
Object code
Application:
Object code
GPLv3 (6b)
LGPLv3 (4)
Display in GUI
+ Written offer:
Valid for max(3y, support)
12. Copyright 2019, Burkhard Stubert
When to Provide Installation Information
• User Product =
• [tangible] “consumer product” [...]
normally used for personal, family, or
household purposes, or
• anything designed or sold for
incorporation into a dwelling
• In doubt: it’s a User Product!
• Examples: phones, TVs, STBs, home
appliances, cars, medical devices used
at home, security cameras
• Commercial Product:
• Examples: tractors, harvesters, trucks,
professional appliances, medical
devices in hospitals
12
User
Product?
NoYes
Installation
Information
Installation
Information
B2C B2B
• Installation Information =
• Anything required to build a modified
Qt version, install and execute it on the
User Product
13. Copyright 2019, Burkhard Stubert
Example Installation Information (1)
13
(1) User installs SDK (built by bitbake meta-toolchain-qt5)
/path/to/<distro>-glibc-x86_64-meta-toolchain-qt5-armv7at2hf-neon-toolchain-2.4.2.sh
(2) User unpacks all Qt source archives into /path/to/qt5
(3) User performs shadow build in /path/to/build-qt5
../qt5/configure -prefix /usr/local/qt -extprefix /path/to/install-qt5
-device linux-imx6-g++
-device-option CROSS_COMPILE=/path/to/sdk/sysroots/x86_64-fslcsdk-linux/usr/bin/
arm-fslc-linux-gnueabi/arm-fslc-linux-gnueabi-
-sysroot /path/to/sdk/sysroots/armv7at2hf-neon-fslc-linux-gnueabi
-opensource –confirm-license <more options>
make –j32
make install
14. Copyright 2019, Burkhard Stubert
Example Installation Information (2)
• (4) User installs Qt shared libraries on product
• Copy Qt shared libs from USB drive to product
• Download Qt shared libs from server to product
• Copy Qt shared libs from connected laptop to product (via CAN or Ethernet)
• ...
• Notes on (4):
• Shared libs may be signed
• Warning OK that user loses warranty, support and even vehicle operation license
• Qt libs can undergo AppStore-like approval process
• Functionality must not be restricted – unless modified Qt behaves maliciously
14
15. Copyright 2019, Burkhard Stubert
Outline – Using Qt under LGPLv3
• The obligations of Qt LGPLv3: made understandable
• When to use Qt LGPLv3 and when Qt Commercial
• How Yocto and Fossology help with FOSS compliance
15
16. Copyright 2019, Burkhard Stubert
Costs of Qt Commercial vs. Qt LGPLv3
Year Qt Commercial Costs €
1 3 developers: 5700 € each
1000 units: 7.50 € each
24,600
2 3 developers: 1900 € each
1000 units: 7.50 € each
13,200
3 3 developers: 1900 € each
1000 units: 7.50 € each
13,200
4 3 developers: 1900 € each
1000 units: 7.50 € each
13,200
5 3 developers: 1900 € each
1000 units: 7.50 € each
13,200
License check of non-Qt packages 20,000
Sum 97,400
16
Year Qt LGPLv3 Costs €
1 Initial effort 12,000
2 Update effort 3,000
3 Update effort 3,000
4 Update effort 3,000
5 Update effort 3,000
Sum 24,000
~80% effort needed for non-Qt packages: 20,000
Needed in Qt Commercial as well!
LGPLv3 cost independent of number of developers
and units!
17. Copyright 2019, Burkhard Stubert
What’s the Additional Value of Qt Commercial?
• Commercial-only features
• No user update of Qt libraries required
• Qt for Device Creation (Boot2Qt)
• Qt Lite (esp. for Cortex-M)
• Qt Virtual Keyboard (also: GPLv3)
• Qt 3D Designer: GPLv3 runtime
• Qt Support Helpdesk
• Qt for Automotive (extra fee)
• Qt for Automation: MQTT, OPC UA
(extra fee)
• Qt Safe Renderer (extra fee)
• Qt Application Manager (extra fee)
17
• Also available for LGPLv3
• Static linking (LGPLv3/4d0)
• Qt Quick compiler (since Qt 5.12)
• Qt Virtual Keyboard (if run in separate
process)
18. Copyright 2019, Burkhard Stubert
Outline – Using Qt under LGPLv3
• The obligations of Qt LGPLv3: made understandable
• When to use Qt LGPLv3 and when Qt Commercial
• How Yocto and Fossology help with FOSS compliance
18
19. Copyright 2019, Burkhard Stubert
Some Wishful Thinking ...
19
Magic ScriptYocto recipes
/path/to/qtmultimedia
qtmultimedia-5.11.3+<rev>-patched.tar.gz
LICENSE.LGPL3
LICENSE.GPL3
USED-LICENSE -> LICENSE.LGPL3
COPYRIGHT
MODIFICATIONS
/path/to/qtserialbus
...
For every package:
21. Copyright 2019, Burkhard Stubert
Creating Source Archives with Yocto
21
Create archives for patched sources
of all FOSS packages:
# In local.conf or distro configuration
INHERIT += "archiver"
COPYLEFT_TARGET_TYPES = "target"
COPYLEFT_LICENSE_EXCLUDE = "CLOSED Proprietary"
COPYLEFT_LICENSE_INCLUDE = ""
Don’t create source archive
for Application:
# In application recipe
LICENSE = "CLOSED"
Note: By default only GPL*, LGPL* and AGPL* included
Rebuild your Linux image with bitbake
23. Copyright 2019, Burkhard Stubert
License Analysis with Fossology:
Upload > From File
23
Nomos Keywords:
Find potential license texts
Nomos Regular Expressions:
Finds and identifies most relevant license texts
and their variants
Monk Full Text Matches:
Finds and identifies known license texts
24. Copyright 2019, Burkhard Stubert
License Analysis with Fossology:
Browse > qtmultimedia-<rev>-patched.tar.gz
24
Goal:
Green clearing status for all files
Clear irrelevant folders:
Mark all folders except src as irrelevant,
because they are not used in product
25. Copyright 2019, Burkhard Stubert
License Analysis with Fossology:
Bulk Recognition of Source Files (1)
25
(1) Select typical
source file
(2) Use bulk recognition
for identifying all
similar files
26. Copyright 2019, Burkhard Stubert
License Analysis with Fossology:
Bulk Recognition of Source Files (2)
26
(1) Add LGPL-3.0 as identified license
(2) Remove all other licenses
(3) From selected file, copy search text for identification
(4) Perform actions (1) and (2) to all files matching (3)
27. Copyright 2019, Burkhard Stubert
License Analysis with Fossology:
Bulk Recognition of Source Files (3)
27
28. Copyright 2019, Burkhard Stubert
License Analysis with Fossology:
Individual Check for Remaining Red Files
• src/multimedia/doc
• Mark folder as irrelevant
• src/mulimediawidgets/doc
• Mark folder as irrelevant
• src/plugins/winrt
• qwinrtcameraflashcontrol.cpp/h: license
text slightly different to one used in bulk
scan
• Identify license for each file individually
• In root directory:
• Mark LICENSE.(FDL | GPL2 | GPL3 |
GPL3-EXCEPT) as irrelevant
• Set LICENSE.LGPL3 as main license
28
All files and folders green!
License check done!
32. Copyright 2019, Burkhard Stubert
Copyright Analysis with Fossology:
Result
32
Down from 102 entries!
33. Copyright 2019, Burkhard Stubert
Export Results of License and Copyright Analysis
33
From combobox, select
Generate SPDX report in tag:value format
Save report qtmultimedia.spdx in
tmp/deploy/licenses/qtmultimedia/
36. Copyright 2019, Burkhard Stubert
Resources
• License texts
• LGPLv3:
https://www.gnu.org/licenses/lgpl-3.0-
standalone.html
• GPLv3:
https://www.gnu.org/licenses/gpl-3.0-
standalone.html
• Lawyers
• Dr. Miriam Ballhausen, Senior
Associate, Bird & Bird LLP
• Dr. Catharina Maracke, Associate
Professor of IT and Data Law, Kühne
Logistics University
• Dr. Till Jaeger, Attorney at Law, JBB
• Books
• Heather Meeker: ”Open Source For
Business – A Practical Guide to Open
Source Software Licensing”, 2nd edition
2017
• Till Jaeger, Axel Metzger: ”Open Source
Software – Rechtliche
Rahmenbedingungen der freien
Software”, 4. Auflage 2016, C. H. Beck
36
37. This presentation is licensed under a Creative Commons
Attribution-ShareAlike 4.0 International License.
Copyright 2019, Burkhard Stubert
Thank you J
Mail: burkhard.stubert@embeddeduse.com
Web: http://www.embeddeduse.com