Skip to content

Commit 3d07d1a

Browse files
committed
#746 Consistency of including Copyright in SPDX-FileCopyright
1 parent f76a51d commit 3d07d1a

File tree

1 file changed

+25
-29
lines changed

1 file changed

+25
-29
lines changed

devdoc/jdp/jdp-2025-01-apply-spdx-license-info-and-comply-with-reuse-specification.adoc

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Other snags or things we need to think about are:
3636
. Documentation, like the Jaybird Design Proposal files, release notes, and FAQ, currently don't have an explicit license.
3737
We need to consider if we want to simply state them as LGPL (a license not really applicable to documentation, IMHO), or apply a license like Firebird's PDL (Public Documentation License), GFDL (GNU Free Documentation License), CC0-1.0 (public domain), CC BY-SA 4.0, or something else
3838

39-
The REUSE specification (see also below) generally expects copyright to be assigned individually, with `SPDX-FileCopyrightText: Copyright <year-range> <contributor-name> [, <contributor-name>]...`, or multiple `SPDX-FileCopyrightText` -- one per contributor, and preferably not wholesale with "`the firebird development team`" or similar (unless `SPDX-FileContributor` is also used).
39+
The REUSE specification (see also below) generally expects copyright to be assigned individually, with `SPDX-FileCopyrightText: Copyright <year-range> <contributor-name> [, <contributor-name>]...`, or multiple `SPDX-FileCopyrightText` -- one per contributor, and preferably not wholesale with "`the firebird development team`" or similar.
4040
Unfortunately, the commit history is not always easily traceable given file moves, renames, etc. not always being correctly recorded (especially during the CVS era).
4141

4242
=== Need for SBOM information
@@ -94,7 +94,7 @@ Existing comments which were also copied from the Firebird source code should be
9494
For further clarification, an `SPDX-FileComment` (text TBD) should be added to these files to declare the origin and the license of the origin.
9595

9696
For the error messages and SQLSTATE files, we consider them "`Executable`", derived by mechanical translation (by `MessageExtractor`), and as such -- as stated in the IDPL -- can have their own license, i.e. `LGPL-2.1-or-later`.
97-
The `SPDX-FileCopyrightText` will declare `2000-<build year> Firebird development team and individual contributors`, and also -- like the constants -- a `SPDX-FileComment` (text TBD) should be added to these files to declare the origin and the license of the origin.
97+
The `SPDX-FileCopyrightText` will declare `Copyright 2000-<build year> Firebird development team and individual contributors`, and also -- like the constants -- a `SPDX-FileComment` (text TBD) should be added to these files to declare the origin and the license of the origin.
9898
These comments should be automatically added by `MessageExtractor`.
9999

100100
We admit this has a shaky legal foundation, but given this formalizes the current situation which has existed for the past 24 years without complaints, we think this is acceptable.
@@ -137,7 +137,7 @@ All source files will provide a comment or comments (generally using line commen
137137

138138
[listing]
139139
----
140-
SPDX-FileCopyrightText: <first-year> <author-name>
140+
SPDX-FileCopyrightText: Copyright <first-year>[-<last-year>] <author-name>
141141
SPDX-License-Identifier: LGPL-2.1-or-later
142142
----
143143

@@ -152,23 +152,15 @@ For example, in Java files, if contributor "`Mark Rotteveel`" authored or contri
152152

153153
[source]
154154
----
155-
// SPDX-FileCopyrightText: 2023 Mark Rotteveel
155+
// SPDX-FileCopyrightText: Copyright 2023 Mark Rotteveel
156156
// SPDX-License-Identifier: LGPL-2.1-or-later
157157
----
158158

159-
or
160-
161-
[listing]
162-
----
163-
SPDX-FileCopyrightText: <first-year>-<current-year> <author-name>
164-
SPDX-License-Identifier: LGPL-2.1-or-later
165-
----
166-
167-
For example, in Java files, if contributor "`Jane Doe`" authored or contributed to a file in 2023 and 2025:
159+
or, for example, in Java files, if contributor "`Jane Doe`" authored or contributed to a file in 2023 and 2025:
168160

169161
[source]
170162
----
171-
// SPDX-FileCopyrightText: 2023-2025 Jane Doe
163+
// SPDX-FileCopyrightText: Copyright 2023-2025 Jane Doe
172164
// SPDX-License-Identifier: LGPL-2.1-or-later
173165
----
174166

@@ -182,27 +174,31 @@ For example, combining the previous two examples:
182174

183175
[source]
184176
----
185-
// SPDX-FileCopyrightText: 2023 Mark Rotteveel
186-
// SPDX-FileCopyrightText: 2023-2025 Jane Doe
177+
// SPDX-FileCopyrightText: Copyright 2023 Mark Rotteveel
178+
// SPDX-FileCopyrightText: Copyright 2023-2025 Jane Doe
187179
// SPDX-License-Identifier: LGPL-2.1-or-later
188180
----
189181

190-
When we're unsure if we know all contributors (e.g. because of broken file commit history), we also add a `SPDX-FileCopyrightText: <file-creation-year>-<last-modified-year> Firebird development team and individual contributors`.
182+
New `SPDX-FileCopyrightText` should be added _below_ already existing `SPDX-FileCopyrightText` and related `SPDX-FileContributor` entries, and _above_ the `SPDX-License-Identifier`.
183+
184+
When we're unsure if we know all contributors (e.g. because of broken file commit history), we also add a `SPDX-FileCopyrightText: <file-creation-year>-<last-modified-year> Firebird development team and individual contributors` to the top _above_ all other `SPDX-FileCopyrightText` entries.
191185

192186
In the special case mentioned earlier, where copyright of contributions of Alejandro Alberola must be attributed to "`Boix i Oltra, S.L.`", this will be recorded as:
193187

194188
[source]
195189
----
196-
// SPDX-FileCopyrightText: 2023-2025 Mark Rotteveel
197-
// SPDX-FileCopyrightText: 2001-2002 Boix i Oltra, S.L. (contributions of Alejandro Alberola)
198-
// SPFX-FileContributor: 2001-2002 Alejandro Alberola
190+
// SPDX-FileCopyrightText: Copyright 2023-2025 Mark Rotteveel
191+
// SPDX-FileCopyrightText: Copyright 2001-2002 Boix i Oltra, S.L.
192+
// SPFX-FileContributor: 2001-2002 Alejandro Alberola (Boix i Oltra, S.L.)
199193
// SPDX-License-Identifier: LGPL-2.1-or-later
200194
----
201195

202-
Related `SPDX-FileCopyrightText` and `SPDX-FileContributor` should be kept together when possible.
196+
That is, the copyright is registered to the company, and the actual contributor is listed together with a reference to the company.
197+
198+
Related `SPDX-FileCopyrightText` and `SPDX-FileContributor` should be kept together.
203199

204200
These comments should be placed at the top of a file (e.g. `.java` files), or as soon as syntactically valid (e.g. after the XML preamble).
205-
If a file has a lot of different contributors -- say four or more -- the line comments may be replaced with a block comment.
201+
If a file has a lot of different SPDX entries -- say four or more -- the line comments may be replaced with a block comment.
206202

207203
If a file cannot contain the copyright in itself (e.g. binary files, CSV files), or if adding the comment results in undesirable behaviour (e.g. files which contain expected results for tests, and thus can't contain the comment), the copyright and license should be added to the `REUSE.toml` file.
208204

@@ -217,25 +213,25 @@ The preference of this project is to avoid those files as we think this approach
217213
In other words, we only record the information in the file itself, or -- if not possible for any valid reasonfootnote:[The main contributors are the judge of what are valid reasons ;)] -- in `REUSE.toml`.
218214
This position can change if there is a good argument/reason to record this in individual `*.license` files.
219215

220-
Compliance with REUSE will be enforced with `reuse --lint` through a GitHub Action (see also <<compliance-check>>).
216+
Compliance with REUSE will be enforced with `reuse lint` through a GitHub Action (see also <<compliance-check>>).
221217

222218
The JAR files produced by this project will also contain the following information:
223219

224-
* `Bundle-License` with value `LGPL-2.1-or-later AND BSD-3-Clause` (or whatever SPDX identifier is the correct one, see earlier mention of dual-licensing in <<context>>)
220+
* `Bundle-License` with value `LGPL-2.1-or-later OR LGPL-2.1-or-later AND BSD-3-Clause` (or whatever SPDX identifier is the correct one, see earlier mention of dual-licensing in <<context>>)
225221
+
226222
The `Bundle-License` is specified by OSGi, but this is also commonly used by non-OSGI projects to communicate the license of a project
227-
* `SPDX-License-Identifier` with value `LGPL-2.1-or-later AND BSD-3-Clause` (see also previous item).
228-
* `SPDX-FileCopyrightText` with value `2001-<build-year> Firebird development team and individual contributors`.
223+
* `SPDX-License-Identifier` with value `LGPL-2.1-or-later OR LGPL-2.1-or-later AND BSD-3-Clause` (see also previous item).
224+
* `SPDX-FileCopyrightText` with value `Copyright 2001-<build-year> Firebird development team and individual contributors`.
229225
+
230226
In other words, we're not going to enumerate all contributors in the JAR file.
231227
For reference, 2001 is the year of the https://github.com/FirebirdSQL/jaybird/commit/5e215213f916bc2c46d891da661131e18fb65f14[first commit] to the repository.
232228

233229
.Example fragment of MANIFEST.MF
234230
[source]
235231
----
236-
Bundle-License: LGPL-2.1-or-later AND BSD-3-Clause
237-
SPDX-License-Identifier: LGPL-2.1-or-later AND BSD-3-Clause
238-
SPDX-FileCopyrightText: 2001-2025 Firebird development team and individual contributors
232+
Bundle-License: LGPL-2.1-or-later OR LGPL-2.1-or-later AND BSD-3-Clause
233+
SPDX-License-Identifier: LGPL-2.1-or-later OR LGPL-2.1-or-later AND BSD-3-Clause
234+
SPDX-FileCopyrightText: Copyright 2001-2025 Firebird development team and individual contributors
239235
----
240236

241237
[#compliance-check]

0 commit comments

Comments
 (0)