Clarify usage of BSD-3-Clause license with (CMake) code
Open, Needs TriagePublic

Description

KDE's Licensing policy (https://community.kde.org/Policies/Licensing_Policy) currently states that "CMake modules must be licenced under the BSD licence listed below". Where below there is a list entry "BSD-2-Clause". Which sounds as if only the 2 clause variant is possible. Which itself is explicitly stated for other sources, like saying for "Source files that are part of a library with a public API" the license option is "BSD-2-Clause: BSD License as listed below."

Reading closer one can see in the entry for "BSD-2-Clause": "A third requirement is sometimes included: BSD-3-Clause ".

As a matter of fact, several CMake files in KDE repos currently use "BSD-3-Clause". Motivation is said to be compatibility with CMake, so code could be upstreamed.

The current text on the license policy page is unclear to me when it comes whether BSD-3-Clause is possible or not.

Perhaps "BSD-3-Clause" should become an own list item instead and be explicitly referenced for the sources where it is allowed?

kossebau created this task.Jun 28 2020, 1:32 PM

I'm not a fan of BSD 3 clause because it often includes the name of the copyright holder, and that can get complex when new copyright holders come along or if you don't care much and just want to copy and paste.

But it's a good idea to use BSD 3 clause for cmake stuff for compatibility with them indeed so it would make sense to recommend it, preferably with neutral word for the their paragraph like ". The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission."

There's lots of places where we still use external COPYING-CMAKE-SCRIPTS files, these are problematic because they can get lost and there's no problem just including the full text or using SPDX. It might be worth going over and removing them en masse.

adridg added a subscriber: adridg.Jun 29 2020, 2:56 PM
  • If we allow BSD-3-Clause, it should be a separate explicit entry in the alternative-licenses list.
  • The official SPDX text has "3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission." where the italics indicate that variants exist; the sample text is pretty generic IMO.
  • CMake upstream specifically instructs "We do not require any formal copyright assignment or contributor license agreement. Any contributions intentionally sent upstream are presumed to be offered under terms of the OSI-approved BSD 3-clause License. See Copyright.txt for details." (here)

Note that, if something is 2-clause licensed, and you offer it upstream there's still no problem. The GPL would call this "additional restrictions", but unlike the GPL, BSD-2-clause doesn't bother about that: the no-endorsement "restriction" may be added by the recipient.

tl;dr: add BSD-3-clause explicitly to the list and be done.

Ade makes an interesting point, if Kitware wants to add the 3rd clause then they can just add it to the BSD-2-clause code which has been sent upstream. But adding in 3rd clause BSD in places could limit where it gets used. And if we use the wrong name for the author then it's incompatible anyway and blocks use.

So I now think don't add BSD-3-clause as a permitted licence.