Unify source file headers under LGPL-3.0-or-later
Summary
Nuclearizer is distributed under the GNU LGPL v3 (License.md), but the headers in the source files still carry the original, older notice that contradicts LGPL v3.
Therefore, we should replace them with a uniform, compliant LGPL notice.
What is wrong with the current header
184 of 193 source files (.cxx, .h, scripts, Makefiles) start with a variant of:
Copyright (C) by <Author>.
All rights reserved.
This code implementation is the intellectual property of
<Author>.
By copying, distributing or modifying the Program (or any work
based on the Program) you indicate your acceptance of this statement,
and all its terms.
Headers (.h) only say "Please see the source-file for the copyright-notice".
Problems:
- It contradicts the license. "All rights reserved" means no permissions are granted, while
License.md grants the rights to use, modify and redistribute under the LGPL. Anyone reading a single file gets the opposite message from the repository.
- No file mentions the license. Neither the LGPL, nor
License.md, nor a warranty disclaimer appear in any file. A file copied out of the repository carries no license information at all. The FSF recommends a per-file notice for (L)GPL projects.
- The "acceptance by use" clause is incompatible with the LGPL. "By copying ... you indicate your acceptance" is not part of the LGPL, and GPLv3 §9 (incorporated by the LGPL) states the opposite: you do not need to accept the license to receive or run a copy.
- The copyright attribution is inaccurate. Most files name one or a few individuals as sole owners, but Nuclearizer has many contributors from several institutions, and copyright in each contribution is held by its author or, where applicable, their employer. "Intellectual property of " does not reflect that.
- Inconsistent formats. Several header variants exist (with and without years, with typos, with stale file names), and headers point to a copyright notice in the source file that does not contain
one.
Proposed change
-
One header for every source file, stating the project copyright and the license:
/*
* <FileName>
*
* Copyright (C) by the Nuclearizer contributors.
*
* This file is part of Nuclearizer.
*
* Nuclearizer 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.
*
* Nuclearizer 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 Lesser
* General Public License (License.md) for more details.
*
* SPDX-License-Identifier: LGPL-3.0-or-later
*/
The same text is used as # comments in scripts, Makefiles and Python files. Leaving out years means the header never needs updating, and the SPDX line makes the license machine-readable.
- A
CONTRIBUTORS.md defines "the contributors": copyright in each contribution is held by the individual contributor or, where applicable, their employer or institution. It lists everyone currently named in the file headers plus the authors in the git history. The per-file author names move there.
- Consistent runtime text: remove "All rights reserved" from About dialogs and help texts, and show "(C) by the Nuclearizer contributors, licensed under LGPL v3+" instead.
- Branches: apply the same header to files that exist only on active branches when they are merged.
If there is any opposition, please mention it below. I did the same for MEGAlib.
Unify source file headers under LGPL-3.0-or-later
Summary
Nuclearizer is distributed under the GNU LGPL v3 (
License.md), but the headers in the source files still carry the original, older notice that contradicts LGPL v3.Therefore, we should replace them with a uniform, compliant LGPL notice.
What is wrong with the current header
184 of 193 source files (
.cxx,.h, scripts, Makefiles) start with a variant of:Headers (
.h) only say "Please see the source-file for the copyright-notice".Problems:
License.mdgrants the rights to use, modify and redistribute under the LGPL. Anyone reading a single file gets the opposite message from the repository.License.md, nor a warranty disclaimer appear in any file. A file copied out of the repository carries no license information at all. The FSF recommends a per-file notice for (L)GPL projects.one.
Proposed change
One header for every source file, stating the project copyright and the license:
The same text is used as
#comments in scripts, Makefiles and Python files. Leaving out years means the header never needs updating, and the SPDX line makes the license machine-readable.CONTRIBUTORS.mddefines "the contributors": copyright in each contribution is held by the individual contributor or, where applicable, their employer or institution. It lists everyone currently named in the file headers plus the authors in the git history. The per-file author names move there.If there is any opposition, please mention it below. I did the same for MEGAlib.