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.