RMS printer moment, but it's about my fridge failing to run the ice maker fill tube heater for long enough so it freezes so the ice maker gets no water and makes no ice, but also the software controlling this is in ROM so the FSF says it's fine even though there's no way I can fix it even though I am entirely capable of reverse engineering and patching it otherwise
Yeah great ok the manufacturer also has no ability to patch my fridge but how does that help me this differentiation between software in ROM and software in flash is absolute bullshit, it's all software and it should all be free and modifiable
@mjg59 While I agree with the sentiment, I am suddenly thinking that software running on, say, a security chip in a credit card, or a Yubikey, or on a TPM2, should maybe not be possible to ever be modified.
@liw I actually have a bunch of use cases for wanting to modify that, which pushes us into an interesting space
@mjg59 imagine if someone made a phone following these guidelines lol.... lmao
@mjg59 what the fuck. actual ROM? as in, like, .....? we didn't think they made actually fully read-only chips anymore. Surely it's a fucking SPI flash module
Real ROM is fairly rare, but embedded shops tend to use microcontrollers and SoCs which support DEBUG e-fuses. When the DEBUG fuses are burned, the pins on the chip that allow for dumping or programming flash are permanently disabled.
So, same difference.
@Suiseiseki Software doesn't stop being software just because it's in ROM
@Suiseiseki Code that executes on a general purpose core is software, end of discussion
@Suiseiseki Hardware executes things. Software is what is executed. Making software immutable doesn't make it not software.
@Suiseiseki whoops, managed to post as a top level rather than a reply, but:
The ROM is hardware, what the ROM contains is software. Otherwise you end up arguing that software on a pressed CD is hardware, which is clearly nonsense.
@Suiseiseki If I give you a computer that only has a CD drive and the computer boots from that, is the computer running software?
@Suiseiseki So there's no need for a device that boots from CD to run free software, since it's actually hardware and therefore out of scope?
@Suiseiseki It seems like the FSF disagrees with you - RYF hardware can't include a pressed CD that include proprietary drivers (https://ryf.fsf.org/about/criteria), and it's also made clear that software in ROM is, well, software
@Suiseiseki you're ignoring the bit where software in ROM is called software
@Suiseiseki so why does the FSF call it software?
@Suiseiseki "The exception applies to software delivered inside auxiliary and low-level processors and FPGAs, within which software installation is not intended after the user obtains the product"
@Suiseiseki so, by the FSF's definition, my fridge contains software
@Suiseiseki and if it contains a ROM encoding CPU instructions, it also contains software, as the FSF makes clear in the quote I provided
@Suiseiseki It's talking about CPU microcode, which is stored in ROM.
@Suiseiseki the CPU microcode ROM contains software, as the FSF makes clear.
@Suiseiseki "This can include, for instance, microcode inside a processor, firmware built into an I/O device, or the gate pattern of an FPGA. The software in such secondary processors does not count as product software."
Things that are in ROM are still software. The FSF says so.
@freetar @Suiseiseki "In aspects that relate to their design, those things are software; but as regards copying and modification, they may as well be hardware" - they're software, the FSF just argued that they be treated in the same way as hardware.
@freetar @Suiseiseki further, the description of microcode may have been true in the 8086 days, but it's not for modern CPUs. Look at how microcode updates were used to provide mitigations for Spectre vulnerabilities - that wouldn't have been possible if its functionality was so constrained.
@freetar @Suiseiseki what has changed is that microcode is now software targeting the CPU's underlying instruction set, and that merely happens to be fixed in ROM.
@freetar @Suiseiseki your understanding of modern microcode is simply incorrect, and whether something is software or not is not determined by the tangible form it is fixed in
@freetar @Suiseiseki software in ROM is still software, just as software on a CD is still software
@freetar @Suiseiseki right. Modern microcode is software written for the CPU's native instruction set. It reads state from flash. It performs cryptography. It is built from source code. It is the code that brings up the CPU when power is initially applied. Nobody manually lays out the transistors that embody the version of it stored in ROM.
@freetar @Suiseiseki the base microcode loaded from ROM is what validates the signature on any ACMs that are loaded from flash. It is not simply an instruction lookup table, it is software.
@freetar @Suiseiseki software doesn't stop being software if it's on a pressed CD-ROM.
@freetar @Suiseiseki "commonly implemented as a hardwired finite-state machine" ok where are you getting this from because it hasn't been true in decades
@freetar @Suiseiseki so a computer booting from a pressed CD isn't running software?
@freetar @Suiseiseki yeah this is a ridiculous position to hold and results in bad outcomes like not believing that it's an ethical requirement that the code a system runs be modifiable as long as that code is in a physically immutable form
@lxo @freetar @Suiseiseki The perspective I take is that someone choosing to design a system such that the software is sufficiently hidden you could maybe describe it as hardware is in itself a hostile act - it's a choice to take control of that system away from its owners. By choosing to treat that as acceptable we provide a perverse incentive for vendors to make devices that are harder to modify to meet the owner's needs.
@lxo @freetar @Suiseiseki I don't think expectations have anything to do with it - most people who buy a TV have no expectations that the code it contains can be modified, but we both know that code is used to restrict them and they should be able to modify it. If hardware vendors know they can escape the FSF's attention by putting code in ROM then that's a disservice to everyone who receives that code, and we should expect better from them.
(As of yesterday I'm unemployed, who are my masters?)
@Suiseiseki @freetar systems should be designed such that there is no immutable software store
@lxo @freetar @Suiseiseki We're talking about material that even the FSF describes as software! It just chooses to place it out of scope as a result of it being in a fixed form, which provides a perverse incentive for manufacturers to assert that they're aiding freedom by making it *impossible* for users to modify it. All executable code should be modifiable by the owner of a device.
Again, who do you believe my "masters" to be?
@lxo @freetar @Suiseiseki GNU was originally built on top of proprietary kernels, because that was the only option at the time. The FSF should acknowledge that basically all viable free software platforms rely on some amount of proprietary software embedded in hardware, and encourage people to find solutions to that instead of encouraging vendors to make it harder for those solutions to exist.
@Suiseiseki you're missing my point - whether something should be modifiable by the owner is unrelated to whether the owner knows that's possible or is capable of doing it themselves. Most people are unaware of the benefits that free software would give them, but that doesn't justify devices they own running proprietary software.
@lxo @freetar @Suiseiseki you're arbitrarily declaring that some non-free software is acceptable because there's no alternative. I think this is self defeating.
@lxo @freetar @Suiseiseki I'm saying it's unreasonable to draw a distinction between software in ROM and software on disk. It's all software, it should all be free.
@lxo @dan @freetar @Suiseiseki a direct consequence of this position is that vendors attempting to cater to the free software market have deliberately made it more difficult to alter the software that their hardware runs, because by doing so they can achieve RYF compliance. The nature of the underlying software is not changed by nature of the form it's fixed in, and the hardware's owners should be afforded the same freedoms regardless.
@lxo @freetar @Suiseiseki using hardware that runs non-free software is an acceptable compromise in the course of achieving the long-term goal of all software being free, just as using SunOS to develop GNU was an acceptable compromise at the time.
@lxo @freetar @Suiseiseki much free software has been written by using non-free software to reverse engineer other non-free software and reimplement it
@lxo @dan @freetar @Suiseiseki what? RYF refuses any components with EEPROMs that contain non-free software, but accepts components with ROM that contain the same software. I've spoken to vendors who chose to use ROM in order to obtain RYF certification.
@lxo @freetar @Suiseiseki I'm always going to take a pragmatic attitude here. If using non-free software is the only way we get free software, I'll do it. If using hardware running non-free software is the only way we get free software, I'll do it. But the goal has to be to replace *all* that non-free software - the non-free software that helped people write free software, and the non-free software that runs on the hardware we depend on to write and run that software
@lxo @dan @freetar @Suiseiseki in some cases, RYF certified devices run exactly the same non-free software as non-RYF devices, but it's harder for the owner to replace it. That's a direct consequence of FSF policies. It makes no sense to care about the freeness of a blob loaded at runtime but not care about an identical blob in ROM. If it's to the user's benefit to be able to modify one, it's to the user's benefit to be able to modify the other.
@lxo @dan @freetar @Suiseiseki sigh. The point of the conversation is that my fridge, which contains buggy software I can't fix, would meet the RYF criteria in this respect, and that's not a sensible outcome.
@lxo @dan @freetar @Suiseiseki all software should serve the user, but we don't achieve that by locking the software away and pretending it isn't there
@lxo @dan @freetar @Suiseiseki I can't fix it because the manufacturer chose to put it in ROM, not flash. It's not the FSF's fault that that's the case for my fridge, but it *is* the FSF's fault that analogous situations play out in RYF certified hardware.
@lxo @freetar @Suiseiseki the path is easier to walk if it's technically possible to replace the non-free software, which means we should prefer runtime loadable blobs over non-free software in ROM.
@Suiseiseki @freetar Not at all - traditionally CPUs would simply start executing code from the reset vector without any code executing on them beforehand. What's at the reset vector (ROM, flash, RAM that's had instructions bitbanged into it by hand) is irrelevant.