> <i>The maximalist position is not to compromise at all - all software on a system, whether it's running at boot or during runtime, and whether it's running on the primary CPU or any other component on the board, should be free.</i><p>As stated, I don't think this actually makes for a consistent position. The author throws out the terms "system" and "board" and hopefully assumes they define a good boundary, but they actually don't. PCIe expansion cards and hard drives are both not "on the board" but still part of the "system". Peripherals and other support devices (keyboard/usb switch/UPS/serial server) are not "on the system" or perhaps not even part of "the system" at all, yet significantly [ae]ffect the system.<p>Defining that bound is important, because without it you end up with a wishy-washy escape hatch like "<i>within which software installation is not intended after the user obtains the product</i>", making the definition completely fail at being a maximalist position. (and then when taken as a maximalist/hardline position ends up causing strife...)<p>The original FSF position was based on the copyright license status of what they shipped on distribution media. This is neatly consistent, but completely outmoded in today's globally networked software-pervasive environment. The spirit of this lives on in things like linux-libre.<p>I'd say that any modern definition of software freedom <i>must</i> pull in a larger scope that focuses on effective individual freedom in the face of pervasive global networking. A mouse, a video card, and an IoT device can all have proprietary updateable firmware, but <i>drastically</i> different affects on your individual freedom - I've never wanted to change my mouse firmware, if/when video card firmware is updated is (almost) completely under your control and the card lacks easy backhaul, whereas a a proprietary IoT device is essentially a rogue agent on your network.<p>My own definition involves something like a much more fine-grained definition of <i>device</i>, analyzing how easy it is to modify/inspect code on each <i>device</i>, as well as analyzing trust/security relationships between devices. This ends up being independent from maximalism, as you can choose how important it is for any given device to be libre or not, and see how any compromise specifically affects your freedom.<p>For example I recognize that my hard drives themselves are completely and utterly non-free. But also my desire for libre hard drives is pretty low as well. The libre device/system those drives store data for protects itself by the use of full disk encryption, and the drives are unlikely to become active attackers due to lacking any network connections besides SATA/SAS to the libre system. Meanwhile the system they're attached to is a KGPE-D16 running libreboot, which has nearly zero proprietary code running in its main CPU domain. I compromise on CPU microcode because the small binary size means low complexity, I choose if/when to update, and it's similar trust to the unavoidable shipped silicon. But no javascript (I run web browsing on another machine with virt-viewer =). I'd say this is a much healthier way of analyzing software freedom, whereas the traditional way kind of lumps many things together and then finds reasons to ignore inconvenient details.