Subject: bug#76932: Missing or ambiguous license headers in several files

From: Vagrant Cascadian <[email-masked]>
Date: Tue, 11 Mar 2025 11:38:53 -0700

On 2025-03-11, Sharlatan Hellseher wrote:
>>  gnu/packages/python-graphics.scm
>> 
>> Again, no license declaration, but a list of copyright holders including
>> Adam Kandur <[email-masked]>, Daniel Meißner
>> <[email-masked]>, Morgan Smith
>> <[email-masked]>, Adam Faiz <[email-masked]>, Simon
>> Tournier <[email-masked]>, and Sharlatan Hellseher
>> <[email-masked]>.
>
> May you clarify what exactly do you mean under "no license declaration"?
...
>> grep license gnu/packages/python-graphics.scm
>   #:use-module ((guix licenses) #:prefix license:)
>       (license license:expat))))
>     (license license:expat)))
>     (license license:bsd-3)))
>     (license license:bsd-3)))
> --8<---------------cut here---------------end--------------->8---
...
> And each package has a valid license in the definition, or maybe it's
> something else?

Something else indeed!

While each package has a proper (license) listed, the file
"gnu/packages/python-graphics.scm" contains no license declaration for
itself.

Every package definiton in guix is guile code that requires a license in
order to be able to use, study, modify and share that has it's own
license independent of the license of the resulting package it produces.

Most files in guix gnu/packages/*.scm contain a header such as:

;;; This file is part of GNU Guix.
;;;
;;; GNU Guix 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.
;;;
;;; GNU Guix 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 GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

It may seem a bit excessive and verbose to include it in each and every
file, but it is to my understanding, considered best practice, at least
within GNU projects (and also the GPL itself recommends this), to
include the above or equivalent in each file to make it absolutely
clear.

One of the hardest things to track is when some code was grabbed from
some random other project and it refers to a non-existent COPYING or
LICENSING file in project it foind a new home in. Keeping the headers in
the file generally helps with that.

> I've initiated python-graphics (similar to crates.graphics and
> java-graphics) module to collect and move anything which requires messa
> or similar low level bindings for Python. There a lot in python-xyz
> which would be moved in this module.

If you are copying package definitions from other existing modules with
the above licensing declaration, then the licensing headers for the file
itself definitely should also be copied. :)

Hope that clarifies what I am getting at!

live well,
  vagrant