Policies/Licensing Policy: Difference between revisions
throw out the header blobs. they are deprecated and shall not be used anyway. do add template blobs for the spdx format though. enable easy copy paste of the new format |
Clarify BSD-2-Clause/BSD-3-Clause as discussed on kde-community maling list https://mail.kde.org/pipermail/kde-community/2022q4/007400.html |
||
(7 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
This licence policy is designed to allow maximum code reuse with the community of KDE and beyond while making exceptions for the few cases which need it. | This licence policy is designed to allow maximum code reuse with the community of KDE and beyond while making exceptions for the few cases which need it. | ||
Guidelines and best practices for applying this policy can be found in the [[Guidelines_and_HOWTOs/Licensing|Licensing HowTo]]. | |||
== Policy == | |||
All new source code and related data files in KDE repositories (SVN, Git) must meet the following requirements: | All new source code and related data files in KDE repositories (SVN, Git) must meet the following requirements: | ||
# All files must be in their preferred modifiable form, or alongside the file which is the preferred modifiable form. In the 'alongside' case, there must be clear instructions for how to build using the preferred modifiable form. | # All files must be in their preferred modifiable form, or alongside the file which is the preferred modifiable form. In the 'alongside' case, there must be clear instructions for how to build using the preferred modifiable form. | ||
# All source files must contain a copyright header which identifies the copyright holder(s) together with an e-mail address that can be used to reach the copyright holder. | # All source files must contain a copyright header which identifies the copyright holder(s) together with an e-mail address that can be used to reach the copyright holder. | ||
# Each source file either must contain SPDX identifiers or licence headers to state under which terms the software may be used, modified and redistributed. The SPDX identifiers or licence headers stated below must be used. Inside one repository all files shall follow the same system for licence statements. | # Each source file either must contain SPDX identifiers or licence headers to state under which terms the software may be used, modified and redistributed. The SPDX identifiers or licence headers [[#Templates|stated below]] must be used. Inside one repository all files shall follow the same system for licence statements. | ||
## For each used SPDX identifier, the licence text must be included compatible with the SPDX specification. | ## For each used SPDX identifier, the licence text must be included compatible with the SPDX specification. | ||
# ''Source files'' that are part of a library with a public API which is part of the KDE Platform (kdelibs, kdepimlibs, kde-runtime and KDE Frameworks) must be licensed under: | # ''Source files'' that are part of a library with a public API which is part of the KDE Platform (kdelibs, kdepimlibs, kde-runtime and KDE Frameworks) must be licensed under: | ||
Line 10: | Line 13: | ||
#:They may also be licensed under one of the following terms if it helps with license compatibility: | #:They may also be licensed under one of the following terms if it helps with license compatibility: | ||
#* '''[https://spdx.org/licenses/LGPL-2.1-or-later.html LGPL-2.1-or-later:]''' LGPL version 2.1 or later | #* '''[https://spdx.org/licenses/LGPL-2.1-or-later.html LGPL-2.1-or-later:]''' LGPL version 2.1 or later | ||
#* '''[https://spdx.org/licenses/BSD-2-Clause.html BSD-2-Clause:]''' BSD | #* '''[https://spdx.org/licenses/BSD-2-Clause.html BSD-2-Clause:]''' BSD-2-Clause license as [[#BSD-2-Clause|listed below]].''' | ||
#* '''[https://spdx.org/licenses/BSD-3-Clause.html BSD-3-Clause:]''' BSD-3-Clause license as [[#BSD-3-Clause|listed below]]. </br> '''Note:''' It is strongly discouraged to use the BSD-3-Clause license. It makes sharing code within KDE more complicated and isn’t of much benefit. Unless you must use it (for example because of upstream compatibility), use the BSD-2-Clause instead.''' | |||
#* '''[https://spdx.org/licenses/MIT.html MIT:]''' MIT license as listed below. | #* '''[https://spdx.org/licenses/MIT.html MIT:]''' MIT license as listed below. | ||
#* '''[https://spdx.org/licenses/X11.html X11:]''' X11 license as listed below. | #* '''[https://spdx.org/licenses/X11.html X11:]''' X11 license as listed below. | ||
Line 41: | Line 45: | ||
#:Note each bulletpoint above is a single option, it can not be licenced under just part of one bulletpoint option | #:Note each bulletpoint above is a single option, it can not be licenced under just part of one bulletpoint option | ||
#:Documentation may additionally be licensed under any of the terms in section 4 or 5. | #:Documentation may additionally be licensed under any of the terms in section 4 or 5. | ||
# ''CMake | # ''CMake code'' must be licenced under the BSD-2-Clause license as [[#BSD-2-Clause|listed below]] or the BSD-3-Clause licence as [[#BSD-3-Clause|listed below]]. </br> '''Note:''' It is strongly discouraged to use the BSD-3-Clause license. It makes sharing code within KDE more complicated and isn’t of much benefit. Unless you must use it (for example because of upstream compatibility), use the BSD-2-Clause instead. | ||
# ''Windows installer files'' using the WiX Toolset may be licenced under the '''[https://spdx.org/licenses/CPAL-1.0.html Common Public Licence 1.0]''' | # ''Windows installer files'' using the WiX Toolset may be licenced under the '''[https://spdx.org/licenses/CPAL-1.0.html Common Public Licence 1.0]''' | ||
# Other data included in KDE's codebase must be | # Other copyrightable data included in KDE's codebase must be licensed under one of the terms in Sections 4 or 5. If a file is not copyrightable (e.g. it is an automatically generated file, a trivial list of files, or trivial test data) it shall have the '''[https://spdx.org/licenses/CC0-1.0.html CC0-1.0]''' license. | ||
# As new versions of GNU licenses are published they will be discussed by the membership of KDE e.V. and accepted via an announcement on https://ev.kde.org whether we will adopt it. This will depend on if adopting the licence would harm the future distribution of KDE, if the licence preserves freedom for our developers & users and a vote by the membership agrees to the acceptance of the new licence version. When using the SPDX identifiers '''[[#LicenseRef-KDE-Accepted-GPL|LicenseRef-KDE-Accepted-GPL]]''' or '''[[#LicenseRef-KDE-Accepted-LGPL|LicenseRef-KDE-Accepted-LGPL]]''' to express this, the respective license text must be placed according to the REUSE specification in the repository, as stated below. | # As new versions of GNU licenses are published they will be discussed by the membership of KDE e.V. and accepted via an announcement on https://ev.kde.org whether we will adopt it. This will depend on if adopting the licence would harm the future distribution of KDE, if the licence preserves freedom for our developers & users and a vote by the membership agrees to the acceptance of the new licence version. When using the SPDX identifiers '''[[#LicenseRef-KDE-Accepted-GPL|LicenseRef-KDE-Accepted-GPL]]''' or '''[[#LicenseRef-KDE-Accepted-LGPL|LicenseRef-KDE-Accepted-LGPL]]''' to express this, the respective license text must be placed according to the REUSE specification in the repository, as stated below. | ||
# ''Geographic data'', in particular data based on or derived from OpenStreetMap may be licensed under the '''[https://spdx.org/licenses/ODbL-1.0.html Open Data Commons Open Database License v1.0]'''. | |||
== License Statements == | == License Statements == | ||
Line 84: | Line 89: | ||
<pre> | <pre> | ||
This | This program is free software; you can redistribute it and/or | ||
modify it under the terms of the GNU General Public License as | modify it under the terms of the GNU General Public License as | ||
published by the Free Software Foundation; either version 3 of | published by the Free Software Foundation; either version 3 of | ||
Line 144: | Line 149: | ||
</pre> | </pre> | ||
'''Note:''' SPDX lists a half-dozen BSD-2-Clause variants, but you must use exclusively the one listed here. | |||
===== [https://spdx.org/licenses/BSD-3-Clause.html BSD-3-Clause] ===== | |||
<pre> | |||
SPDX-License-Identifier: BSD-3-Clause | |||
SPDX-FileCopyrightText: <year> <name of author> <e-mail> | |||
</pre> | |||
'''Note:''' SPDX lists a half-dozen BSD-3-Clause variants, but you must use exclusively the one listed here. | |||
===== [https://spdx.org/licenses/X11.html X11] ===== | ===== [https://spdx.org/licenses/X11.html X11] ===== | ||
Line 165: | Line 176: | ||
= Changelog = | = Changelog = | ||
== January 2023 == | |||
* Clarify usage of BSD licence variants, based on a discussion on the kde-community mailing list (https://mail.kde.org/pipermail/kde-community/2022q4/007400.html). | |||
== September 2021 == | |||
* Added ODbL-1.0 for geographic data derived from OSM, based on a discussion on the kde-communit and kde-frameworks-devel mailing lists (https://mail.kde.org/pipermail/kde-community/2021q3/007064.html). | |||
== December 2020 == | |||
* Clarified that CMake license requirements apply to all CMake code as discussed in 'CMake source files without license' on kde-devel list. | |||
== September 2020 == | |||
* Clarified that non copyrightable data shall shave CC0-1.0. | |||
== June 2020 == | == June 2020 == | ||
* Reshuffled template blobs. No longer offering templates for the deprecated header formats. | * Reshuffled template blobs. No longer offering templates for the deprecated header formats. |
Latest revision as of 08:08, 11 January 2023
This licence policy is designed to allow maximum code reuse with the community of KDE and beyond while making exceptions for the few cases which need it.
Guidelines and best practices for applying this policy can be found in the Licensing HowTo.
Policy
All new source code and related data files in KDE repositories (SVN, Git) must meet the following requirements:
- All files must be in their preferred modifiable form, or alongside the file which is the preferred modifiable form. In the 'alongside' case, there must be clear instructions for how to build using the preferred modifiable form.
- All source files must contain a copyright header which identifies the copyright holder(s) together with an e-mail address that can be used to reach the copyright holder.
- Each source file either must contain SPDX identifiers or licence headers to state under which terms the software may be used, modified and redistributed. The SPDX identifiers or licence headers stated below must be used. Inside one repository all files shall follow the same system for licence statements.
- For each used SPDX identifier, the licence text must be included compatible with the SPDX specification.
- Source files that are part of a library with a public API which is part of the KDE Platform (kdelibs, kdepimlibs, kde-runtime and KDE Frameworks) must be licensed under:
- LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL: LGPL version 2.1, or version 3 or later versions approved by the membership of KDE e.V.
- They may also be licensed under one of the following terms if it helps with license compatibility:
- LGPL-2.1-or-later: LGPL version 2.1 or later
- BSD-2-Clause: BSD-2-Clause license as listed below.
- BSD-3-Clause: BSD-3-Clause license as listed below.
Note: It is strongly discouraged to use the BSD-3-Clause license. It makes sharing code within KDE more complicated and isn’t of much benefit. Unless you must use it (for example because of upstream compatibility), use the BSD-2-Clause instead. - MIT: MIT license as listed below.
- X11: X11 license as listed below.
- Note: each bulletpoint above is a single option, it can not be licenced under just part of one bulletpoint option
- Note: code may not be copied from Qt into KDE Platform as Qt is LGPL 3 only which would prevent it being used under LGPL 2.1
- Note: the LGPL 2.1, 3 or approved by e.V. option is preferred and should be used unless there are special needs to improve code shareability
- Any other source files must be licensed under one of the terms listed under 4) or:
- GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL: GPL version 2 or version 3 or later versions approved by the membership of KDE e.V.
- They may also be licensed under one of the following terms if it helps with license compatibility:
- GPL-2.0-or-later: GPL version 2 or later
- GPL-3.0-or-later: GPL version 3 or later
- GPL-3-0-only OR LicenseRef-KDE-Accepted-GPL: GPL version 3 or later versions approved by the membership of KDE e.V.
- Code copied from Qt may be licenced under GPL version 2 or later versions or under GPL version 3 or later versions depending on the licence of the relevant Qt code
- Note: each bulletpoint above is a single option, it can not be licenced under just part of one bulletpoint option
- Note: where a KDE repository contains files which are GPL 3+ and where the licence is stated with license headers, it must be clearly marked by adding the full licence in a file called COPYING.GPL3 in the top directory of the repository
- Note: Qt modules are either GPL2+ or GPL 3+, ensure the licence is compatible with your code before copying code from Qt
- Applications which are intended to be run on a server may be licenced under the AGPL-3.0-or-later: GNU AGPL or later
- Note: the GNU AGPL is the recommended licence for server software in KDE
- Translations of text from the files described in section 4 must be licenced under one of the terms in sections 4. Translations of text from other files must be licenced under one of the terms in sections 4 or 5.
- Media files such as images may be licensed under the CC-BY-SA-4.0 or compatible licence.
- Note: Image files must be committed together with their preferred modifiable form such as SVG.
- Note: CC-BY-SA 4.0 can be one-way converted to GPL 3.
- Icons should be licenced as CC-BY-SA 4.0 or can also be licenced under any of the terms in section 4 or 5 or 8. Icons in oxygen-icons and breeze-icons themes must be licenced under the "LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL", i.e. LGPL 3 or later versions approved by KDE e.V.
- Content on collaborative edited websites such as wikis must be licensed under the Creative Commons Attribution-Sharealike 4.0 International or compatible licence.
- Documentation must be licensed under the CC-BY-SA-4.0 or compatible licence
- Note: CC-BY-SA 4.0 can be one-way converted to GPL 3.
- Documentation started before 2017 can be licensed under one of the following terms:
- FDL versions 1.2 or later versions with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
- FDL versions 1.2 or later versions approved by KDE e.V. with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
- Note each bulletpoint above is a single option, it can not be licenced under just part of one bulletpoint option
- Documentation may additionally be licensed under any of the terms in section 4 or 5.
- CMake code must be licenced under the BSD-2-Clause license as listed below or the BSD-3-Clause licence as listed below.
Note: It is strongly discouraged to use the BSD-3-Clause license. It makes sharing code within KDE more complicated and isn’t of much benefit. Unless you must use it (for example because of upstream compatibility), use the BSD-2-Clause instead. - Windows installer files using the WiX Toolset may be licenced under the Common Public Licence 1.0
- Other copyrightable data included in KDE's codebase must be licensed under one of the terms in Sections 4 or 5. If a file is not copyrightable (e.g. it is an automatically generated file, a trivial list of files, or trivial test data) it shall have the CC0-1.0 license.
- As new versions of GNU licenses are published they will be discussed by the membership of KDE e.V. and accepted via an announcement on https://ev.kde.org whether we will adopt it. This will depend on if adopting the licence would harm the future distribution of KDE, if the licence preserves freedom for our developers & users and a vote by the membership agrees to the acceptance of the new licence version. When using the SPDX identifiers LicenseRef-KDE-Accepted-GPL or LicenseRef-KDE-Accepted-LGPL to express this, the respective license text must be placed according to the REUSE specification in the repository, as stated below.
- Geographic data, in particular data based on or derived from OpenStreetMap may be licensed under the Open Data Commons Open Database License v1.0.
License Statements
The REUSE Specification - Version 3.0 shall be applied when stating licenses and when adding license files to a project.
SPDX Statements
Each plain text file that can contain comments must contain comments at the top of the file (comment header) that declare that file’s copyright and licensing information. The comment header must contain one or more copyright tags and one SPDX-License-Identifier tag.
For copyright statements either a SPDX-FileCopyrightText
tag followed by a colon can be used or the word Copyright
, in which case a colon is not needed.
The SPDX-License-Identifier
tag must be followed by a valid SPDX License Expression describing the licensing of the file (example: SPDX-License-Identifier: LGPL-2.1-or-later OR MIT
).
License Texts
The repository must include a LICENSES/
directory in the root of the repository, which contains the license text for every used license inside the repository. Each license file shall be a plain text file that is placed in this directory and the name of the license file must be the SPDX License Identifier of the license followed by ".txt" (example: LICENSES/LGPL-2.1-or-later.txt
). The directory must not include license files for licenses that are not used inside the repository.
The license files shall be taken from [1]. It is preferred to use the reuse command line tool's download option to avoid copy-paste errors.
For LicenseRef-KDE-Accepted-LGPL
and LicenseRef-KDE-Accepted-GPL
licenses, see below.
LicenseRef-KDE-Accepted-LGPL
When using the LicenseRef-KDE-Accepted-LGPL
identifier inside a project, the following file LICENSES/LicenseRef-KDE-Accepted-LGPL.txt
must be added to the project with the following content:
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the license or (at your option) any later version that is accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy as defined in Section 6 of version 3 of the license. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
LicenseRef-KDE-Accepted-GPL
When using the LicenseRef-KDE-Accepted-GPL
identifier inside a project, the following file LICENSES/LicenseRef-KDE-Accepted-GPL.txt
must be added to the project with the following content:
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the license or (at your option) at any later version that is accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy as defined in Section 14 of version 3 of the license. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Templates
GPL (GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL)
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL SPDX-FileCopyrightText: <year> <name of author> <e-mail>
LGPL (LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL)
SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL SPDX-FileCopyrightText: <year> <name of author> <e-mail>
Alternative Licenses Allowed for License Compatibility
GPL-2.0-or-later
SPDX-License-Identifier: GPL-2.0-or-later SPDX-FileCopyrightText: <year> <name of author> <e-mail>
GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL SPDX-FileCopyrightText: <year> <name of author> <e-mail>
GPL-3.0-or-later
SPDX-License-Identifier: GPL-3.0-or-later SPDX-FileCopyrightText: <year> <name of author> <e-mail>
LGPL-2.1-or-later
SPDX-License-Identifier: LGPL-2.1-or-later SPDX-FileCopyrightText: <year> <name of author> <e-mail>
BSD-2-Clause
SPDX-License-Identifier: BSD-2-Clause SPDX-FileCopyrightText: <year> <name of author> <e-mail>
Note: SPDX lists a half-dozen BSD-2-Clause variants, but you must use exclusively the one listed here.
BSD-3-Clause
SPDX-License-Identifier: BSD-3-Clause SPDX-FileCopyrightText: <year> <name of author> <e-mail>
Note: SPDX lists a half-dozen BSD-3-Clause variants, but you must use exclusively the one listed here.
X11
SPDX-License-Identifier: X11 SPDX-FileCopyrightText: <year> <name of author> <e-mail>
MIT
SPDX-License-Identifier: MIT SPDX-FileCopyrightText: <year> <name of author> <e-mail>
License Headers (Deprecated)
Traditional license headers for stating licenses in source code files is deprecated and shall only be used to maintain consistency inside a repository.
Changelog
January 2023
- Clarify usage of BSD licence variants, based on a discussion on the kde-community mailing list (https://mail.kde.org/pipermail/kde-community/2022q4/007400.html).
September 2021
- Added ODbL-1.0 for geographic data derived from OSM, based on a discussion on the kde-communit and kde-frameworks-devel mailing lists (https://mail.kde.org/pipermail/kde-community/2021q3/007064.html).
December 2020
- Clarified that CMake license requirements apply to all CMake code as discussed in 'CMake source files without license' on kde-devel list.
September 2020
- Clarified that non copyrightable data shall shave CC0-1.0.
June 2020
- Reshuffled template blobs. No longer offering templates for the deprecated header formats.
January 2020
- update deprecated SPDX identifiers
- allow REUSE.software compatible license statements as an alternative to license headers
- define SPDX compatible license statements for later version of GPL and LGPL
- define SPDX based license statements
July 2017
- Note that Qt is LGPL 3 not 2.1
- Code copied from Qt can be GPL 3 as well as GPL 2, check comparible with your code
- Allow AGPL for web apps
- Encourage AGPL for web apps
- Allow icons to be CC-BY-SA 4
- Allow media files to be CC-BY-SA 4 and no longer allow CC-BY-SA 3
- Note CC-BY-SA 4 is LGPL 3 compatible
- Documentation to be CC-BY-SA 4
- MIT text now one of the more standard variants (modern style with sublicence)
- Links to SPDX licences
- Dissallow Facebook's additional grant of patent rights
- require (L)GPL2+3+eV with option of other stuff to give a clear indication of which is preferred
- remove licence option of GPL2+3 only for FLA signers, nobody uses it and it's the same as GPL2+3+eV
- Note images must have SVG committed with it
- re-order license headers to make 2+3+KDEeV the main option