All,

I know this subject is controversial, but there were some discussion on
the Guix list that sparked my curiosity [1] and maybe the position of
linux-libre could be clarified/repeated.

My question is if linux-libre could allow some mechanism for users to
have the ability to load non-free firmware into hardware?

The explanation about Linux-libre is here:

   GNU Linux-libre is a project to maintain and publish 100% Free
   distributions of Linux, suitable for use in Free System
   Distributions, removing software that is included without source
   code, with obfuscated or obscured source code, under non-Free
   Software licenses, that do not permit you to change the software so
   that it does what you wish, and that induces or requires you to
   install additional pieces of non-Free Software.

The keyword here seems to be "induces", but I'm not sure how strong you
want that to mean.  I think this is somewhat subjective.  Compare for
example that Linux-libre in some way of interpretation "induce" users to
run non-free applications since there is no prevention of doing so.

Apparently you don't see any problem with running non-free binaries on
linux-libre, at least not strongly enough to add a DRMesque layer on top
of exec() that prevents execution of non-free applications.

If linux-libre allowed some ability for users to load non-free firmware,
then it would treat firmware similar to how the Linux-libre allows you
to run non-free code via exec(), wouldn't it?

Taking on your hat for a moment, perhaps the red line is crossed when
code is added (as done in Linux upstream) as a SPECIFIC mechanism solely
for loading of non-free blobs?  And GENERIC mechanisms for executing
code (free or non-free) is fine?  That seems to be a reasonable
position, but I'm not sure if that is the one that Linux-libre takes.

Is it possible to load non-free firmware outside of the kernel?  Some
user space tool that could do the same operation?  If the answer depends
on the driver, consider the blobs required for latest Intel WIFI as an
example.

Or would doing it from users space be "too late" and this loading needs
to happen before the kernel driver starts?

If so, did anyone consider a shim approach which would load the drivers
after GRUB, and then re-exec() linux-libre, starting the system?  The
shim blob would be non-free (perhaps running upstream Linux loading
non-free firmware) but at least then I'd be running a Linux-libre kernel
and a FSDG operating system below it.  I would consider that situation
better than using Linux and a non-FSDG OS.  Running purely Linux-libre
and a FSDG OS is not possible on some hardware, so with a shim like this
we would give users an ability to transition to linux-libre and a FSDG
OS.

Thoughts?

/Simon

[1] https://lists.gnu.org/archive/html/guix-devel/2025-04/msg00128.html

Attachment: signature.asc
Description: PGP signature

Reply via email to