Subject: Re: [bug#44557] [PATCH] gnu: Add gputils.

From: Simon South <[email-masked]>
Date: Tue, 10 Nov 2020 18:04:06 -0500

Ekaitz Zarraga <[email-masked]> writes:
> I packaged GPUtils...

I hate to jump in here with bad news, but I didn't expect anyone would
package gputils before I got around to sharing this:

While gputils itself is free software, I suspect some of the header
files contained in its distribution may not be, which makes the
licensing status of the project as a whole somewhat dubious. (This is
similar to the problem that affects SDCC[0].) I think gputils should be
reviewed carefully before the decision is made to include it in Guix.

As evidence, I submit the following:

- The "*.inc" files in gputils' "header" subfolder that are intended for
  use with PIC devices carry a copyright notice from Microchip[1], the
  current owner of the PIC design, but I have found no mention of any
  special terms for the files' distribution, nor any notice that they
  too have been released under the terms of the GPL.

- SDCC, a free C compiler for microcontrollers, distributes header files
  of its own that are also derived from files originally provided by
  Microchip. When they approached the company[2] in 2010 to verify they
  had permission to distribute their derivative versions under the GPL,
  Microchip responded[3] to say the files could be distributed but with
  the requirement they be used only with "authentic" PIC-compatible
  controllers produced by Microchip themselves. This violates freedom
  0[4], making the files non-free and (worse) any software compiled with
  SDCC that relies on these files non-free as well.

  Consequently, the SDCC project moved these files to a "non-free"
  section of their source tree and added build and run-time options to
  control their use.

Now here's where things get a little murky:

- The Microchip-copyrighted files from which the SDCC project derives
  their non-free header files are... the same Microchip-copyrighted
  files gputils provides in its "header" folder. This is clear from the
  SDCC manual[5] in section 4.7.10, "Adding New Devices to the Port",
  which gives instructions on converting gputils' supposedly free
  "*.inc" files into "non-free" header files for use with SDCC.

How is it, then, that these files can be distributed freely under the
GPL with gputils, while files produced from them cannot be freely
distributed with SDCC? I suspect the answer is that _neither_ project
has permission to distribute these files under a free license, and in
the case of gputils, no one has raised the question yet.

Obviously I feel we _should_ raise the question before deciding to
include gputils as a package in Guix. Unfortunately, it is looking to me
as though there may not be a place for PIC-compatible controllers,
Microchip-branded or otherwise, in the free-software world.

[0] https://issues.guix.gnu.org/44374
[1] See e.g.
    https://sourceforge.net/p/gputils/code/HEAD/tree/trunk/gputils/header/p10f200.inc
[2] https://sourceforge.net/p/sdcc/mailman/sdcc-devel/thread/4C508624.8000308%40siol.net/#msg25835011
[3] https://sourceforge.net/p/sdcc/mailman/sdcc-devel/thread/1DB7F50D3A07E6439E44C13B1A4470520D09F306%40CHN-CL-MAIL01.mchp-main.com/
[4] https://www.gnu.org/philosophy/free-sw.html
[5] http://sdcc.sourceforge.net/doc/sdccman.pdf

-- 
Simon South
[email-masked]