You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: devdoc/jdp/jdp-2025-01-apply-spdx-license-info-and-comply-with-reuse-specification.adoc
+25-29Lines changed: 25 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,7 +36,7 @@ Other snags or things we need to think about are:
36
36
. Documentation, like the Jaybird Design Proposal files, release notes, and FAQ, currently don't have an explicit license.
37
37
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
38
38
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.
40
40
Unfortunately, the commit history is not always easily traceable given file moves, renames, etc. not always being correctly recorded (especially during the CVS era).
41
41
42
42
=== Need for SBOM information
@@ -94,7 +94,7 @@ Existing comments which were also copied from the Firebird source code should be
94
94
For further clarification, an `SPDX-FileComment` (text TBD) should be added to these files to declare the origin and the license of the origin.
95
95
96
96
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.
98
98
These comments should be automatically added by `MessageExtractor`.
99
99
100
100
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
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:
168
160
169
161
[source]
170
162
----
171
-
// SPDX-FileCopyrightText: 2023-2025 Jane Doe
163
+
// SPDX-FileCopyrightText: Copyright 2023-2025 Jane Doe
172
164
// SPDX-License-Identifier: LGPL-2.1-or-later
173
165
----
174
166
@@ -182,27 +174,31 @@ For example, combining the previous two examples:
182
174
183
175
[source]
184
176
----
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
187
179
// SPDX-License-Identifier: LGPL-2.1-or-later
188
180
----
189
181
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.
191
185
192
186
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:
193
187
194
188
[source]
195
189
----
196
-
// SPDX-FileCopyrightText: 2023-2025 Mark Rotteveel
197
-
// SPDX-FileCopyrightText: 2001-2002 Boix i Oltra, S.L. (contributions of Alejandro Alberola)
// 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.)
199
193
// SPDX-License-Identifier: LGPL-2.1-or-later
200
194
----
201
195
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.
203
199
204
200
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.
206
202
207
203
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.
208
204
@@ -217,25 +213,25 @@ The preference of this project is to avoid those files as we think this approach
217
213
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`.
218
214
This position can change if there is a good argument/reason to record this in individual `*.license` files.
219
215
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>>).
221
217
222
218
The JAR files produced by this project will also contain the following information:
223
219
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>>)
225
221
+
226
222
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`.
229
225
+
230
226
In other words, we're not going to enumerate all contributors in the JAR file.
231
227
For reference, 2001 is the year of the https://github.com/FirebirdSQL/jaybird/commit/5e215213f916bc2c46d891da661131e18fb65f14[first commit] to the repository.
232
228
233
229
.Example fragment of MANIFEST.MF
234
230
[source]
235
231
----
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
0 commit comments