Originally posted by kevmif
View Post
The crux of the philosophical conundrum is where do you choose to place the boundary between the parts of the system which run free software, and the parts which are just "peripheral components". You could argue that the free software part is basically just what runs on the CPU at one extreme, or you could require every last part in the system to only run free software at the other. However, the former is a solved problem while the latter is a completely unachieveable goal.
Firstly, the devices which are running proprietary firmware are running completely independently from the CPU where Linux is running. These range from small discrete parts on your motherboard all the way to your storage devices and GPU, and can be FPGAs, CPLDs, CPUs and MCUs all the way through to small parts which have primitive sequencers running on them. A typical computer system will have dozens of them. The CPU running Linux will use a device driver of some sort to communicate with them, but that part is completely separate to the device itself.
The assertion that the firmware should be "shipped on the device" would mean that the code would need putting into the actual masks as a ROM area, or it would need flashing on at manufacture to some persistent storage, possibly write-once. The former and write-once updating would preclude any possibility for future updating to fix problems or change behaviour without respinning the silicon or replacing the part, yet this inflexible and wasteful strategy is the preference of the FSF! The latter implies having the capability to store the firmware in a persistent manner, but not all hardware has that capability--some hardware requires the firmware loading on after powering it up, and it's lost once the power is removed, but it's flexible and better for the environment because it reduces waste.
The other aspect is that these parts are not general-purpose computers​. Many of these parts use custom and very expensive tooling to produce the firmware image. Someday we might have good open-source FPGA synthesis, but today we do not. There's simply no way to take the VHDL and have it synthesise a comparable image to that made with the original tools. In theory, this might happen eventually, but it's not at all practical to consider it today. The other parts might each need a separate custom toolchain. GCC won't work for everything here. This is a completely different world to conventional CPUs, and it's a world in which free software is not the rule, it is the exception. I'll look forward to the day we have this, but that day is not today.
Firmware is written to do very specific things, requiring intimate understanding of the problem domain and the part design. Unlike regular computers, these really are not amenable to casual tinkering by non-experts. In many cases these parts have undergone extensive validation and verification to comply with various standards, including safety standards. While they might contain firmware, the part itself is classed as hardware, and it's sold and used as such. Even if the part was fully open to modification, few people would have the capability or the resources to reproduce that effort. Possibly in theory someone might do that, but at what cost, and for what benefit?
Personally, I'd look at these parts as you look at any other electronic component: it's a black box with defined inputs and defined outputs, and you read the datasheet to understand how it all works and how to control it. What's happening inside the box is largely uninteresting from the point of view of using it. When you design your circuit you'll select an appropriate part for the job that meets the requirements and the BOM budget. Whether a part uses open-source firmware or not is not on the radar of most of the electrical engineers, and why should it be? It's a non-issue which was created by free-software fanatics who haven't really examined the problem in full detail. Their issue is a political one of their own making, and that has absolutely no bearing on manufacturing a working product that complies with the necessary regulatory and safety rules.
Looking at the options on the GR, it looks like most of them are actually acknowledging this reality to varying degrees, even if they don't say that directly.
Comment