Christopher / Licenses

Created Sat, 31 May 2025 00:00:00 -0400 Modified Tue, 03 Jun 2025 15:13:24 -0400
325 Words

Since I was making a theme that would actually get put up on qutebrowser's website, I needed to figure out licensing. Looking closer at the GPLv3, it seems that it's a little more complicated than just slapping the license in a file and calling it a day.

I'm supposed to add a bit of info to each source file, which is kind of ridiculous. I also had questions about whether GitLab should be modifying the template at the bottom of the license to include my name:

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program 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 General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.

Well it turns out that bottom part doesn't really matter. You're allowed to omit that text, according to SPDX.

Instead of adding it to each file, however, I opted to use the shorter SPDX syntax. I used REUSE, a Free Software Foundation Europe project, to automate the process.

To add files that are GPL-3.0-or-later, just run the following command:

reuse annotate --copyright="Jane Doe <jane@example.com>" --license="GPL-3.0-or-later" --fallback-dot-license <FILES>

For images that I created, I like to use CC-BY-4.0:

reuse annotate --copyright="Jane Doe <jane@example.com>" --license="CC-BY-4.0" --fallback-dot-license <FILES>

For trivial files, CC0-1.0:

reuse annotate --copyright="Jane Doe <jane@example.com>" --license="CC0-1.0" --fallback-dot-license <FILES>

After annotating files, simply run reuse download --all to download the licenses and reuse lint to confirm that everything is REUSE compliant.