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
signature.asc
Description: PGP signature