helenos icon indicating copy to clipboard operation
helenos copied to clipboard

Reorganize licensing information according to REUSE guidelines

Open le-jzr opened this issue 3 years ago • 7 comments

Had a free afternoon, so I dedicated it to solving my longstanding gripe with the repository :)

For a basic explanation of the guidelines I'm following here, see https://reuse.software/. Effectively, I replaced all the verbose licensing headers with

/*
 * SPDX-FileCopyrightText: <year> <author>
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

This was done mostly automatically, with exact matching used to make sure I'm not nuking variations in wording I didn't inspect. In the case of the few source files that have different licenses in them, those are of course reflected in the header properly.

Now, I'm no legal professional, but I'm fairly confident that the above change does in fact comply to both the spirit and the letter of the 3-clause BSD license we use. The header retains the copyright notice explicitly, and the list of conditions and disclaimer by a clear and unambiguous reference to a standardized license text.

There are a number of files in the repository which do not have an explicit license associated with them. With these, I dealt according to my best judgement:

  • Assigning CC0-1.0 and a generic "HelenOS Project" copyright to those that are clearly too trivial to copyright.
  • To most of the other unmarked source files, I assigned BSD-3-Clause with either my best guess as to the original author, or "HelenOS Project" where the origin is ambiguous.
  • READMEs and other explanatory text files have been assigned CC-BY license.

There are a number of files remaining where I'm not bold enough to guess what the intended licensing is supposed to be. Here's the current report from verification using the reuse tool:

# MISSING COPYRIGHT AND LICENSING INFORMATION

The following files have no copyright and licensing information:
* contrib/artwork/HelenOS-bw.svg
* contrib/artwork/HelenOS.svg
* tools/deploy/hikey960/hi3660-hikey960.dtb
* tools/deploy/hikey960/hikey960.rd
* uspace/app/launcher/gfx/helenos.tga
* uspace/app/modplay/demo.xm
* uspace/app/viewer/logo.tga
* uspace/app/wavplay/demo.wav
* uspace/dist/data/font/helena.tpf
* uspace/dist/data/web/helenos.png
* uspace/dist/src/bithenge/gif/blue_1x1.gif
* uspace/dist/src/bithenge/gif/helenos.gif
* uspace/dist/src/bithenge/gif/loader.gif
* uspace/drv/nic/ar9271/ar9271.fw

The following files have no licensing information:
* contrib/tools/font/u_vga16.bdf


# SUMMARY

* Bad licenses:
* Deprecated licenses:
* Licenses without file extension:
* Missing licenses:
* Unused licenses:
* Used licenses: Apache-2.0, BSD-2-Clause, BSD-3-Clause, CC-BY-4.0, CC0-1.0, FSFAP, GPL-2.0-only, GPL-3.0-only, LicenseRef-GetOptLicense, LicenseRef-InflateLicense
* Read errors: 0
* Files with copyright information: 5704 / 5718
* Files with license information: 5703 / 5718

Unfortunately, your project is not compliant with version 3.0 of the REUSE Specification :-(

le-jzr avatar Aug 13 '22 15:08 le-jzr

Dear Jiří,

generally, I support this change. I don't particularly enjoy the full license text in each source file.

However, I see one major benefit of the full license texts: They are self-describing and self-explaining. In other words, by reading the license text, it is obvious to the reader that they are actually reading a license text and that said license text governs the redistribution and the use of the file at hand. Contrary to this, the SPDX lines are defined by an external convention and thus they are (without any additional information) neither self-describing nor self-explaining.

I think that this is the reason why many projects, while adopting the SPDX lines for their clear benefits, still retain some additional wording that explains in plain English that the SPDX lines represent a shorthand to a license agreement and I would really appreciate something like this in our case as well. Including an explicit link to the SPDX specification would definitively not hurt. So if you propose a brief additional paragraph like that, I would happily approve this MR.

martin-decky avatar Sep 05 '22 15:09 martin-decky

Regarding the "CC0-1.0 for files that are clearly too trivial to copyright", why not use the BSD-3-Clause license instead? Since the BSD 3-clause license is the customary default license for all files of the project, I really see little reason for introducing a different license here. I guess nobody who created those "trivial" files had the CC0 on their mind.

If those files are indeed "too trivial to copyright" (which is plausible, but we are probably not the authority to say so), the license does not matter anyway. So why not keep the set of licenses minimal?

martin-decky avatar Sep 05 '22 15:09 martin-decky

contrib/artwork/HelenOS*.svg: This rendition of the logo was recreated by @martin-sucha, thus he is the one to ask about the license of the files. Regarding the copyright on the original design, only @jermar can help here.

tools/deploy/hikey960/hi3660-hikey960.dtb: The file is generated from this source, thus it is GPL-2.0 by HiSilicon Ltd.

tools/deploy/hikey960/hikey960.rd: This is a file full of 0xFF bytes created by me. Thus please assign it the customary default license :)

uspace/app/launcher/gfx/helenos.tga, uspace/app/viewer/logo.tga, uspace/dist/data/web/helenos.png, uspace/dist/src/bithenge/gif/helenos.gif: Derived from HelenOS.svg.

uspace/app/modplay/demo.xm: The original file name wrath_of_the_djinn.xm has been released as public domain by Drozerix.

uspace/app/wavplay/demo.wav: The file is a combination of an output from a text-to-speech engine (which is no longer available and I have hard time even remembering the name) and the beginning of the Seikilos epitaph (the "most public domain" composition ever :)) rendered using some default software instruments in some DAW (again, I am not even sure which one). I admit this is a bit murky, but the samples are so short and unrecognizable that they are surely covered by the de minimis doctrine and fall under fair use. But I am not quite sure what should be the license.

uspace/dist/data/font/helena.tpf: The author @jxsvoboda should give it a license.

uspace/dist/src/bithenge/gif/blue_1x1.gif, uspace/dist/src/bithenge/gif/loader.gif: The genesis of those two files is described in uspace/dist/src/bithenge/gif/readme. So probably @vhotspur can help with the license.

uspace/drv/nic/ar9271/ar9271.fw: The original source of the firmware points to its custom redistributable license.

contrib/tools/font/u_vga16.bdf: The author's web site says that the "font can be distributed and modified freely, according to the X license".

martin-decky avatar Sep 05 '22 17:09 martin-decky

Regarding the "CC0-1.0 for files that are clearly too trivial to copyright", why not use the BSD-3-Clause license instead? Since the BSD 3-clause license is the customary default license for all files of the project, I really see little reason for introducing a different license here. I guess nobody who created those "trivial" files had the CC0 on their mind.

If those files are indeed "too trivial to copyright" (which is plausible, but we are probably not the authority to say so), the license does not matter anyway. So why not keep the set of licenses minimal?

That is a good point. I'll change that.

le-jzr avatar Sep 05 '22 18:09 le-jzr

[...] I think that this is the reason why many projects, while adopting the SPDX lines for their clear benefits, still retain some additional wording that explains in plain English that the SPDX lines represent a shorthand to a license agreement and I would really appreciate something like this in our case as well. Including an explicit link to the SPDX specification would definitively not hurt. So if you propose a brief additional paragraph like that, I would happily approve this MR.

Humm, yeah, that makes sense. Do you have an example in mind that I can see for inspiration?

le-jzr avatar Sep 05 '22 18:09 le-jzr

@martin-decky How about this?

/*
 * SPDX-FileCopyrightText: <year> <author>
 * SPDX-License-Identifier: BSD-3-Clause
 * 
 * For terms and conditions governing the use of this source file, please refer
 * to the full license text in the LICENSES subdirectory of the distribution's
 * root directory, according to the SPDX identifier(s) listed above.
 */

le-jzr avatar Sep 06 '22 16:09 le-jzr

Thanks for your suggestion, I was indeed thinking in very similar terms. And I actually couldn't find a better example. Here is a slight reformulation of your proposal where I try to preempt some possible misinterpretations by a devil's advocate.

/*
 * SPDX-FileCopyrightText: <year> <author>
 * SPDX-License-Identifier: BSD-3-Clause
 * 
 * For terms and conditions governing the use of this file, please refer to
 * the full license text according to the SPDX identifier(s) listed above.
 * The license text can be found in the LICENSES subdirectory of the HelenOS
 * project root directory.
 */

martin-decky avatar Sep 07 '22 15:09 martin-decky