On 2/15/23 14:46, Jörg Bornemann via Development wrote:

we're proposing a new QUIP: License specification in Qt's modules

Please review https://codereview.qt-project.org/c/meta/quips/+/436096

And because QUIP 3 suggests that the initial text is also sent to the mailing list - here's the document attached.


Cheers,

Joerg
QUIP: 18
Title: License specification in Qt's modules
Author: Lucie Gerard,
        Jörg Bornemann
Status: Active
Type: Informational
Created: 2022-09-26
Post-History: https://lists.qt-project.org/pipermail/development/2023-February/043648.html

Overview
========

This QUIP specifies the licenses that are used in different parts of a
typical Qt module repository and also provides helpful guidance about
how to express which license source code is under. Note that
repositories may deviate from this guideline. Check with the authors
and copyright holders of the repository in question.

Much of this document overlaps with the "Permitted Licenses in the Qt
Free Edition" section of the KDE Software License Agreement [4]_.
Please keep this document in sync with the KDE Software License
Agreement.

License header format
=====================

The license header follows the SPDX standard [0]_.

There is a Copyright line and a license expression line::

  Copyright (C) 2023 The Qt Company Ltd.
  SPDX-License-Identifier: <spdx-license-expression>

The copyright line for code written by contributors outside the Qt
Company can include that person's name (or legal entity they
represent) in the Copyright header. Multiple copyright lines are
possible.

The `<spdx-license-expression>` must be a valid expression, according
to the SPDX standard as defined in [1]_.

The license identifiers used in a license expression are either from
the list of known licenses [2]_ or prefixed with `LicenseRef-`.

The license files are placed into a `LICENSES` directory below the Qt
module repository's root. The license files are named after the SPDX
license identifier followed by ``.txt`` [3]_.

Parts of a Qt module repository
===============================

This sections defines the different parts of a Qt module repository.

Module and plugin implementation
--------------------------------

Source files that belong to the implementation of Qt modules and plugins. The
usual locations for module source code are the subdirectories
``src`` and ``plugins``.

Examples
--------

Source files that belong to the implementation of Qt examples. The usual
locations for examples is the ``examples`` subdirectory.

Tests
-----

Source files that belong to the implementation of Qt tests. The usual location
is the ``tests`` subdirectory.

Tools
-----

Source files that belong to the implementation of Qt tools. The usual location
is the ``tools`` subdirectory.

Documentation
-------------

All ``.qdoc``, ``.qdocinc`` and ``.qdocconf`` files that are needed to generate
the documentation. The usual locations for such files are ``doc`` directories
all over the Qt module repository's directory tree.

Documentation snippets
----------------------

Any source code that appears in the documentation. The usual locations are
``doc/snippets`` directories throughout the Qt module repository's directory
tree.

Build System Files
------------------

All files that contribute to Qt's build system. That includes the following file
name patterns:

- ``CMakeLists.txt``
- ``*.cmake``
- ``*.pro``
- ``*.pri``
- ``*.prf``

License identifiers per repository part
=======================================

Different parts of a Qt module repository are licensed differently. The
following table lists the SPDX license expressions that should be used and
where.

+--------------------+----------------------------------------------------------+
| Qt repository part | SPDX License Expression                                  |
+====================+==========================================================+
| Module and plugin  | ``LicenseRef-Qt-Commercial OR LGPL-3.0-only``            |
| implementation     | ``OR GPL-2.0-only OR GPL-3.0-only``                      |
| (Qt Essentials)    |                                                          |
+--------------------+----------------------------------------------------------+
| Module and plugin  | | ``LicenseRef-Qt-Commercial OR GPL-3.0-only``           |
| implementation     | |                                                        |
| (Qt Add-ons)       | | *alternatively:*                                       |
|                    | | ``LicenseRef-Qt-Commercial OR LGPL-3.0-only``          |
|                    |   ``OR GPL-2.0-only OR GPL-3.0-only``                    |
+--------------------+----------------------------------------------------------+
| Examples           | ``LicenseRef-Qt-Commercial OR BSD-3-Clause``             |
+--------------------+----------------------------------------------------------+
| Documentation      | ``LicenseRef-Qt-Commercial``                             |
|                    | ``OR GFDL-1.3-no-invariants-only``                       |
+--------------------+----------------------------------------------------------+
| Documentation      | ``LicenseRef-Qt-Commercial OR BSD-3-Clause``             |
| snippets           |                                                          |
+--------------------+----------------------------------------------------------+
| Tests              | ``LicenseRef-Qt-Commercial OR GPL-3.0-only``             |
+--------------------+----------------------------------------------------------+
| Build system files | ``BSD-3-Clause``                                         |
+--------------------+----------------------------------------------------------+
| Tools              | ``LicenseRef-Qt-Commercial OR GPL-3.0-only``             |
|                    | ``WITH Qt-GPL-exception-1.0``                            |
+--------------------+----------------------------------------------------------+

Note that there are two licensing models for module and plugin
implementations: GPL-only and one that additionally is licensed under
LPGL. For details, see "Qt Essentials" and "Qt Add-ons" the KDE
Software License Agreement [4]_.

The documentation landing page of a Qt module contains a "Licenses and
Attributions" section that defines the licenses under which the module
and plugin implementation is available. See the list of Qt modules [6]_.

Related Work
============

REUSE is a guideline how to specify the licenses in a project.

To a certain extend, Qt follows REUSE [5]_. We don't aim for full
compliance at this point, due to small/binary files and 3rd party
content.

References
==========

.. [0] https://spdx.github.io/spdx-spec/v2.3/
.. [1] https://spdx.github.io/spdx-spec/v2.3/SPDX-license-expressions/
.. [2] https://spdx.org/licenses/
.. [3] https://reuse.software/tutorial/#step-1
.. [4] https://kde.org/community/whatiskde/Software_License_Agreement_2015_Text.pdf
.. [5] https://reuse.software/spec/
.. [6] https://doc.qt.io/qt-6/qtmodules.html
-- 
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to