SlideShare a Scribd company logo
Copyright 2019, Burkhard Stubert
Using Qt under LGPLv3
Burkhard Stubert – Solopreneur & Chief Architect, Embedded Use
I help teams succeed with embedded systems
Copyright 2019, Burkhard Stubert
When Downloading Open-Source Qt from qt.io
Screenshot: 6 March 2018
2
Nonsense!
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
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
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
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
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
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)
Copyright 2019, Burkhard Stubert
Displaying License and Copyright in GUI (1)
9
Copyright 2019, Burkhard Stubert
Displaying License and Copyright in GUI (2)
10
Copyright 2019, Burkhard Stubert
Displaying License and Copyright in GUI (3)
11
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
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
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
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
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!
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)
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
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:
Copyright 2019, Burkhard Stubert
The Harsh Reality ...
20
bitbake
Yocto recipes
tmp/deploy/sources/arm-poky-linux-gnueabi/
qtmultimedia-5.11.3+<rev>/
qtmultimedia-5.11.3+<rev>-patched.tar.gz
tmp/deploy/licenses/qtmultimedia
generic_*
LICENSE.FDL LICENSE.GPL2 LICENSE.GPL3
LICENCE.GPL3-EXCEPT LICENSE.LGPL3
recipeinfo
Fossology
upload export
Identify licenses and
copyright notices
qtmultimedia.spdx
convey.py
/path/to/qtmultimedia
qtmultimedia-5.11.3+<rev>-patched.tar.gz
LICENSE.LGPL3 LICENSE.GPL3
USED-LICENSE -> LICENSE.LGPL3
COPYRIGHT MODIFICATIONS
???
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
Copyright 2019, Burkhard Stubert
Output of Yocto Build
22
tmp/deploy/licenses/qtmultimedia
generic_BSD generic_GFDL-1.3 generic_GPL-2.0
generic_GPL-3.0 generic_LGPL-3.0
generic_The-Qt-Company-Commercial
generic_The-Qt-Company-GPL-Exception-1.0
LICENSE.FDL LICENSE.GPL2 LICENSE.GPL3
LICENCE.GPL3-EXCEPT LICENSE.LGPL3
recipeinfo
tmp/deploy/sources/arm-poky-linux-gnueabi/
qtmultimedia-5.11.3+<rev>/
qtmultimedia-5.11.3+<rev>-patched.tar.gz
LICENSE: GFDL-1.3 & BSD & ( GPL-3.0 &
The-Qt-Company-GPL-Exception-1.0 |
The-Qt-Company-Commercial ) & ( GPL-2.0+ |
LGPL-3.0 | The-Qt-Company-Commercial )
PR: r0
PV: 5.11.3+<rev>
???
Use Fossology to clarify license situation!
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
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
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
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)
Copyright 2019, Burkhard Stubert
License Analysis with Fossology:
Bulk Recognition of Source Files (3)
27
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!
Copyright 2019, Burkhard Stubert
Copyright Analysis with Fossology:
Ignore Irrelevant Folders (1)
29
Irrelevant folders
Copyright 2019, Burkhard Stubert
Copyright Analysis with Fossology:
Ignore Irrelevant Folders (2)
30
(1) Select irrelevant occurrences
(2) Delete selected occurrences
Folder: config.tests
Copyright 2019, Burkhard Stubert
Copyright Analysis with Fossology:
Ignore Irrelevant Folders (3)
31
Copyright 2019, Burkhard Stubert
Copyright Analysis with Fossology:
Result
32
Down from 102 entries!
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/
Copyright 2019, Burkhard Stubert
License and Copyright Report:
qtmultimedia.spdx – Package Information
34
PackageName: qtmultimedia-5.11.3+gitAUTOINC+6966a09c9a-r0-patched.tar.gz
PackageFileName: qtmultimedia-5.11.3+gitAUTOINC+6966a09c9a-r0-patched.tar.gz
SPDXID: SPDXRef-upload10
PackageDownloadLocation: NOASSERTION
PackageVerificationCode: 1ca0b32cc48660f2e14d0711484bd4299ed08cde
PackageChecksum: SHA1: 68b79d7255dd1e50296c154bb935deb16fadd561
PackageChecksum: MD5: 251f4ce5a3f7383a79cacdefe4c56e96
PackageLicenseConcluded: LGPL-3.0
PackageLicenseDeclared: LGPL-3.0
PackageLicenseComments: <text> licenseInfoInFile determined by Scanners:
- nomos ("3.4.0-78-g625bdf3".625bdf)
- monk ("3.4.0-78-g625bdf3".625bdf) </text>
PackageLicenseInfoFromFiles: NOASSERTION
PackageCopyrightText: NOASSERTION
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-upload10
Copyright 2019, Burkhard Stubert
License and Copyright Report:
qtmultimedia.spdx – File Information
35
##File
FileName:
git/src/multimedia/radio/qradiotuner.cpp
SPDXID: SPDXRef-item19743
FileChecksum: SHA1: ca858ab8655...
FileChecksum: MD5: 51862849aa23...
LicenseConcluded: LGPL-3.0
LicenseInfoInFile: LGPL-3.0
LicenseInfoInFile: LicenseRef-Dual-license
LicenseInfoInFile: GPL-2.0+
LicenseInfoInFile: LicenseRef-Qt.Commercial
FileCopyrightText: <text> Copyright (C) 2016 The
Qt Company Ltd. Contact:
https://www.qt.io/licensing/ </text>
##File
FileName: git/examples/multimedia/declarative-
camera/ZoomControl.qml
SPDXID: SPDXRef-item18287
FileChecksum: SHA1: 66758b5dddd...
FileChecksum: MD5: 6145e7cb5e10...
LicenseConcluded: NOASSERTION
LicenseInfoInFile: BSD-3-Clause
LicenseInfoInFile: LicenseRef-Dual-license
LicenseInfoInFile: LicenseRef-Qt.Commercial
FileCopyrightText: NOASSERTION
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
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

More Related Content

What's hot

containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
Kohei Tokunaga
 
EthernetやCPUなどの話
EthernetやCPUなどの話EthernetやCPUなどの話
EthernetやCPUなどの話
Takanori Sejima
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
lestrrat
 
EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux Networking
PLUMgrid
 
Comparing Next-Generation Container Image Building Tools
 Comparing Next-Generation Container Image Building Tools Comparing Next-Generation Container Image Building Tools
Comparing Next-Generation Container Image Building Tools
Akihiro Suda
 
DockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐるDockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐる
Kohei Tokunaga
 
eBPF maps 101
eBPF maps 101eBPF maps 101
eBPF maps 101
SUSE Labs Taipei
 
Replacing iptables with eBPF in Kubernetes with Cilium
Replacing iptables with eBPF in Kubernetes with CiliumReplacing iptables with eBPF in Kubernetes with Cilium
Replacing iptables with eBPF in Kubernetes with Cilium
Michal Rostecki
 
What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020
Noa Harel
 
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation SlidesKubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
SlideTeam
 
Sockets and Socket-Buffer
Sockets and Socket-BufferSockets and Socket-Buffer
Sockets and Socket-Buffer
Sourav Punoriyar
 
eBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux KerneleBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux Kernel
Thomas Graf
 
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
Yahoo!デベロッパーネットワーク
 
Enabling new protocol processing with DPDK using Dynamic Device Personalization
Enabling new protocol processing with DPDK using Dynamic Device PersonalizationEnabling new protocol processing with DPDK using Dynamic Device Personalization
Enabling new protocol processing with DPDK using Dynamic Device Personalization
Michelle Holley
 
Git
GitGit
eBPF - Observability In Deep
eBPF - Observability In DeepeBPF - Observability In Deep
eBPF - Observability In Deep
Mydbops
 
GIT AND GITHUB (1).pptx
GIT AND GITHUB (1).pptxGIT AND GITHUB (1).pptx
GIT AND GITHUB (1).pptx
GDSCCVRGUPoweredbyGo
 
K8s security best practices
K8s security best practicesK8s security best practices
K8s security best practices
Sharon Vendrov
 
DPDK In Depth
DPDK In DepthDPDK In Depth
DPDK In Depth
Kernel TLV
 
Jenkins with Docker
Jenkins with DockerJenkins with Docker

What's hot (20)

containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
EthernetやCPUなどの話
EthernetやCPUなどの話EthernetやCPUなどの話
EthernetやCPUなどの話
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
 
EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux Networking
 
Comparing Next-Generation Container Image Building Tools
 Comparing Next-Generation Container Image Building Tools Comparing Next-Generation Container Image Building Tools
Comparing Next-Generation Container Image Building Tools
 
DockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐるDockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐる
 
eBPF maps 101
eBPF maps 101eBPF maps 101
eBPF maps 101
 
Replacing iptables with eBPF in Kubernetes with Cilium
Replacing iptables with eBPF in Kubernetes with CiliumReplacing iptables with eBPF in Kubernetes with Cilium
Replacing iptables with eBPF in Kubernetes with Cilium
 
What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020
 
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation SlidesKubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
 
Sockets and Socket-Buffer
Sockets and Socket-BufferSockets and Socket-Buffer
Sockets and Socket-Buffer
 
eBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux KerneleBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux Kernel
 
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
 
Enabling new protocol processing with DPDK using Dynamic Device Personalization
Enabling new protocol processing with DPDK using Dynamic Device PersonalizationEnabling new protocol processing with DPDK using Dynamic Device Personalization
Enabling new protocol processing with DPDK using Dynamic Device Personalization
 
Git
GitGit
Git
 
eBPF - Observability In Deep
eBPF - Observability In DeepeBPF - Observability In Deep
eBPF - Observability In Deep
 
GIT AND GITHUB (1).pptx
GIT AND GITHUB (1).pptxGIT AND GITHUB (1).pptx
GIT AND GITHUB (1).pptx
 
K8s security best practices
K8s security best practicesK8s security best practices
K8s security best practices
 
DPDK In Depth
DPDK In DepthDPDK In Depth
DPDK In Depth
 
Jenkins with Docker
Jenkins with DockerJenkins with Docker
Jenkins with Docker
 

Similar to Using Qt under LGPLv3

Using Qt under LGPL-3.0
Using Qt under LGPL-3.0Using Qt under LGPL-3.0
Using Qt under LGPL-3.0
Burkhard Stubert
 
Using Qt under LGPL-3.0
Using Qt under LGPL-3.0Using Qt under LGPL-3.0
Using Qt under LGPL-3.0
Burkhard Stubert
 
Readme
ReadmeReadme
Readme
David Sting
 
Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3
Luca Milanesio
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
Anne Nicolas
 
gitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdfgitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdf
saraichiba2
 
Gitops: the kubernetes way
Gitops: the kubernetes wayGitops: the kubernetes way
Gitops: the kubernetes way
sparkfabrik
 
Introduction to Git for Network Engineers (Lab Guide)
Introduction to Git for Network Engineers (Lab Guide)Introduction to Git for Network Engineers (Lab Guide)
Introduction to Git for Network Engineers (Lab Guide)
Joel W. King
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Sunnyvale
 
Flux is incubating + the road ahead
Flux is incubating + the road aheadFlux is incubating + the road ahead
Flux is incubating + the road ahead
LibbySchulze
 
Tools for FPGA Development
Tools for FPGA DevelopmentTools for FPGA Development
Tools for FPGA Development
Brahim HAMADICHAREF
 
How to keep Eclipse on the bleeding edge in the Linux world
How to keep Eclipse on the bleeding edge in the Linux worldHow to keep Eclipse on the bleeding edge in the Linux world
How to keep Eclipse on the bleeding edge in the Linux world
Arun Kumar Thondapu
 
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Jian-Hong Pan
 
Building a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxBuilding a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade Linux
Leon Anavi
 
容器與IoT端點應用
容器與IoT端點應用容器與IoT端點應用
容器與IoT端點應用
Philip Zheng
 
Final Design Report_REVFINAL
Final Design Report_REVFINALFinal Design Report_REVFINAL
Final Design Report_REVFINAL
Jacob Ramey
 
What should you know about Net Core?
What should you know about Net Core?What should you know about Net Core?
What should you know about Net Core?
Damir Dobric
 
Docker opens the Doors for IoT
Docker opens the Doors for IoTDocker opens the Doors for IoT
Docker opens the Doors for IoT
Dieter Reuter
 
Shifter singularity - june 7, 2018 - bw symposium
Shifter  singularity - june 7, 2018 - bw symposiumShifter  singularity - june 7, 2018 - bw symposium
Shifter singularity - june 7, 2018 - bw symposium
inside-BigData.com
 
What's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyondWhat's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyond
Luca Milanesio
 

Similar to Using Qt under LGPLv3 (20)

Using Qt under LGPL-3.0
Using Qt under LGPL-3.0Using Qt under LGPL-3.0
Using Qt under LGPL-3.0
 
Using Qt under LGPL-3.0
Using Qt under LGPL-3.0Using Qt under LGPL-3.0
Using Qt under LGPL-3.0
 
Readme
ReadmeReadme
Readme
 
Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
gitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdfgitopsthekubernetesway-201026090439.pdf
gitopsthekubernetesway-201026090439.pdf
 
Gitops: the kubernetes way
Gitops: the kubernetes wayGitops: the kubernetes way
Gitops: the kubernetes way
 
Introduction to Git for Network Engineers (Lab Guide)
Introduction to Git for Network Engineers (Lab Guide)Introduction to Git for Network Engineers (Lab Guide)
Introduction to Git for Network Engineers (Lab Guide)
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
 
Flux is incubating + the road ahead
Flux is incubating + the road aheadFlux is incubating + the road ahead
Flux is incubating + the road ahead
 
Tools for FPGA Development
Tools for FPGA DevelopmentTools for FPGA Development
Tools for FPGA Development
 
How to keep Eclipse on the bleeding edge in the Linux world
How to keep Eclipse on the bleeding edge in the Linux worldHow to keep Eclipse on the bleeding edge in the Linux world
How to keep Eclipse on the bleeding edge in the Linux world
 
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
 
Building a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxBuilding a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade Linux
 
容器與IoT端點應用
容器與IoT端點應用容器與IoT端點應用
容器與IoT端點應用
 
Final Design Report_REVFINAL
Final Design Report_REVFINALFinal Design Report_REVFINAL
Final Design Report_REVFINAL
 
What should you know about Net Core?
What should you know about Net Core?What should you know about Net Core?
What should you know about Net Core?
 
Docker opens the Doors for IoT
Docker opens the Doors for IoTDocker opens the Doors for IoT
Docker opens the Doors for IoT
 
Shifter singularity - june 7, 2018 - bw symposium
Shifter  singularity - june 7, 2018 - bw symposiumShifter  singularity - june 7, 2018 - bw symposium
Shifter singularity - june 7, 2018 - bw symposium
 
What's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyondWhat's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyond
 

More from Burkhard Stubert

Webinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with DockerWebinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with Docker
Burkhard Stubert
 
A Deep Dive into QtCanBus
A Deep Dive into QtCanBusA Deep Dive into QtCanBus
A Deep Dive into QtCanBus
Burkhard Stubert
 
Qt World Summit 2017: Qt vs. Web - Total Cost of Ownership
Qt World Summit 2017: Qt vs. Web - Total Cost of OwnershipQt World Summit 2017: Qt vs. Web - Total Cost of Ownership
Qt World Summit 2017: Qt vs. Web - Total Cost of Ownership
Burkhard Stubert
 
Burkhard Stubert: Project Portfolio and Expertise
Burkhard Stubert: Project Portfolio and ExpertiseBurkhard Stubert: Project Portfolio and Expertise
Burkhard Stubert: Project Portfolio and Expertise
Burkhard Stubert
 
Landmaschinen-HMIs für 2016 (in German)
Landmaschinen-HMIs für 2016 (in German)Landmaschinen-HMIs für 2016 (in German)
Landmaschinen-HMIs für 2016 (in German)Burkhard Stubert
 
Developing Driver Terminal for Forage Harvester with QML and Qt
Developing Driver Terminal for Forage Harvester with QML and QtDeveloping Driver Terminal for Forage Harvester with QML and Qt
Developing Driver Terminal for Forage Harvester with QML and Qt
Burkhard Stubert
 
Practical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme ChangePractical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme Change
Burkhard Stubert
 

More from Burkhard Stubert (7)

Webinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with DockerWebinar: Building Embedded Applications from QtCreator with Docker
Webinar: Building Embedded Applications from QtCreator with Docker
 
A Deep Dive into QtCanBus
A Deep Dive into QtCanBusA Deep Dive into QtCanBus
A Deep Dive into QtCanBus
 
Qt World Summit 2017: Qt vs. Web - Total Cost of Ownership
Qt World Summit 2017: Qt vs. Web - Total Cost of OwnershipQt World Summit 2017: Qt vs. Web - Total Cost of Ownership
Qt World Summit 2017: Qt vs. Web - Total Cost of Ownership
 
Burkhard Stubert: Project Portfolio and Expertise
Burkhard Stubert: Project Portfolio and ExpertiseBurkhard Stubert: Project Portfolio and Expertise
Burkhard Stubert: Project Portfolio and Expertise
 
Landmaschinen-HMIs für 2016 (in German)
Landmaschinen-HMIs für 2016 (in German)Landmaschinen-HMIs für 2016 (in German)
Landmaschinen-HMIs für 2016 (in German)
 
Developing Driver Terminal for Forage Harvester with QML and Qt
Developing Driver Terminal for Forage Harvester with QML and QtDeveloping Driver Terminal for Forage Harvester with QML and Qt
Developing Driver Terminal for Forage Harvester with QML and Qt
 
Practical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme ChangePractical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme Change
 

Recently uploaded

Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
dakas1
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Preparing Non - Technical Founders for Engaging a Tech Agency
Preparing Non - Technical Founders for Engaging  a  Tech AgencyPreparing Non - Technical Founders for Engaging  a  Tech Agency
Preparing Non - Technical Founders for Engaging a Tech Agency
ISH Technologies
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
What’s New in Odoo 17 – A Complete Roadmap
What’s New in Odoo 17 – A Complete RoadmapWhat’s New in Odoo 17 – A Complete Roadmap
What’s New in Odoo 17 – A Complete Roadmap
Envertis Software Solutions
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
Maitrey Patel
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
INTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLES
INTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLESINTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLES
INTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLES
anfaltahir1010
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024
Yara Milbes
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 

Recently uploaded (20)

Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Preparing Non - Technical Founders for Engaging a Tech Agency
Preparing Non - Technical Founders for Engaging  a  Tech AgencyPreparing Non - Technical Founders for Engaging  a  Tech Agency
Preparing Non - Technical Founders for Engaging a Tech Agency
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
What’s New in Odoo 17 – A Complete Roadmap
What’s New in Odoo 17 – A Complete RoadmapWhat’s New in Odoo 17 – A Complete Roadmap
What’s New in Odoo 17 – A Complete Roadmap
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
INTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLES
INTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLESINTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLES
INTRODUCTION TO AI CLASSICAL THEORY TARGETED EXAMPLES
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024The Rising Future of CPaaS in the Middle East 2024
The Rising Future of CPaaS in the Middle East 2024
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 

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)
  • 9. Copyright 2019, Burkhard Stubert Displaying License and Copyright in GUI (1) 9
  • 10. Copyright 2019, Burkhard Stubert Displaying License and Copyright in GUI (2) 10
  • 11. Copyright 2019, Burkhard Stubert Displaying License and Copyright in GUI (3) 11
  • 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:
  • 20. Copyright 2019, Burkhard Stubert The Harsh Reality ... 20 bitbake Yocto recipes tmp/deploy/sources/arm-poky-linux-gnueabi/ qtmultimedia-5.11.3+<rev>/ qtmultimedia-5.11.3+<rev>-patched.tar.gz tmp/deploy/licenses/qtmultimedia generic_* LICENSE.FDL LICENSE.GPL2 LICENSE.GPL3 LICENCE.GPL3-EXCEPT LICENSE.LGPL3 recipeinfo Fossology upload export Identify licenses and copyright notices qtmultimedia.spdx convey.py /path/to/qtmultimedia qtmultimedia-5.11.3+<rev>-patched.tar.gz LICENSE.LGPL3 LICENSE.GPL3 USED-LICENSE -> LICENSE.LGPL3 COPYRIGHT MODIFICATIONS ???
  • 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
  • 22. Copyright 2019, Burkhard Stubert Output of Yocto Build 22 tmp/deploy/licenses/qtmultimedia generic_BSD generic_GFDL-1.3 generic_GPL-2.0 generic_GPL-3.0 generic_LGPL-3.0 generic_The-Qt-Company-Commercial generic_The-Qt-Company-GPL-Exception-1.0 LICENSE.FDL LICENSE.GPL2 LICENSE.GPL3 LICENCE.GPL3-EXCEPT LICENSE.LGPL3 recipeinfo tmp/deploy/sources/arm-poky-linux-gnueabi/ qtmultimedia-5.11.3+<rev>/ qtmultimedia-5.11.3+<rev>-patched.tar.gz LICENSE: GFDL-1.3 & BSD & ( GPL-3.0 & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( GPL-2.0+ | LGPL-3.0 | The-Qt-Company-Commercial ) PR: r0 PV: 5.11.3+<rev> ??? Use Fossology to clarify license situation!
  • 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!
  • 29. Copyright 2019, Burkhard Stubert Copyright Analysis with Fossology: Ignore Irrelevant Folders (1) 29 Irrelevant folders
  • 30. Copyright 2019, Burkhard Stubert Copyright Analysis with Fossology: Ignore Irrelevant Folders (2) 30 (1) Select irrelevant occurrences (2) Delete selected occurrences Folder: config.tests
  • 31. Copyright 2019, Burkhard Stubert Copyright Analysis with Fossology: Ignore Irrelevant Folders (3) 31
  • 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/
  • 34. Copyright 2019, Burkhard Stubert License and Copyright Report: qtmultimedia.spdx – Package Information 34 PackageName: qtmultimedia-5.11.3+gitAUTOINC+6966a09c9a-r0-patched.tar.gz PackageFileName: qtmultimedia-5.11.3+gitAUTOINC+6966a09c9a-r0-patched.tar.gz SPDXID: SPDXRef-upload10 PackageDownloadLocation: NOASSERTION PackageVerificationCode: 1ca0b32cc48660f2e14d0711484bd4299ed08cde PackageChecksum: SHA1: 68b79d7255dd1e50296c154bb935deb16fadd561 PackageChecksum: MD5: 251f4ce5a3f7383a79cacdefe4c56e96 PackageLicenseConcluded: LGPL-3.0 PackageLicenseDeclared: LGPL-3.0 PackageLicenseComments: <text> licenseInfoInFile determined by Scanners: - nomos ("3.4.0-78-g625bdf3".625bdf) - monk ("3.4.0-78-g625bdf3".625bdf) </text> PackageLicenseInfoFromFiles: NOASSERTION PackageCopyrightText: NOASSERTION Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-upload10
  • 35. Copyright 2019, Burkhard Stubert License and Copyright Report: qtmultimedia.spdx – File Information 35 ##File FileName: git/src/multimedia/radio/qradiotuner.cpp SPDXID: SPDXRef-item19743 FileChecksum: SHA1: ca858ab8655... FileChecksum: MD5: 51862849aa23... LicenseConcluded: LGPL-3.0 LicenseInfoInFile: LGPL-3.0 LicenseInfoInFile: LicenseRef-Dual-license LicenseInfoInFile: GPL-2.0+ LicenseInfoInFile: LicenseRef-Qt.Commercial FileCopyrightText: <text> Copyright (C) 2016 The Qt Company Ltd. Contact: https://www.qt.io/licensing/ </text> ##File FileName: git/examples/multimedia/declarative- camera/ZoomControl.qml SPDXID: SPDXRef-item18287 FileChecksum: SHA1: 66758b5dddd... FileChecksum: MD5: 6145e7cb5e10... LicenseConcluded: NOASSERTION LicenseInfoInFile: BSD-3-Clause LicenseInfoInFile: LicenseRef-Dual-license LicenseInfoInFile: LicenseRef-Qt.Commercial FileCopyrightText: NOASSERTION
  • 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