> world where software is always compiled from source code to an executable binary file which exists on the user's own computer
That is ultimately what you need to do if you want the highest level of autonomy (modulo "compilation" being optional). The FSF and the framing of Free Software is an uncompromising judgement, but you're still free to accept compromises.
Do you have a concrete framework that you think would be more worthwhile? Even for any one of the examples you've listed?
My own thinking is augmented with a tower of diminishing Freedom/Trust. My main desktop and laptop run only Free software, period. Their peripherals run proprietary firmware, but they're either isolated from the network (keyboard, mouse, etc) or not fully trusted (encrypted network traffic and disk drives).
I run my biggest use of proprietary code, web applications, in browsers in many different VMs (actually on separate machines). This also isolates their networking to defeat IP-based tracking, since I have to treat them as quasi-hostile black boxes. Similarly when I have to run MSWin apps, virtual machines.
In a third direction, I have infrastructure running Free software on less secure systems (eg VPSs).
In another direction, I have separate machines when I have to fully engage with the surveillance economy, like an Android tablet for banking apps.
Having basic Freedom in my base environment is what gives me the perspective to see each compromise clearly. I understand why I am forced to compromise, what I am giving up, and how I can best protect myself from the fallout of what I've given up.
It's true that I optimized around something other than Freedom, like say ease of use or productivity for a specific task, that I would end up with more Freedom compromises and more of what I optimized for. But I can't see how that's anything other than a Faustian bargain, especially as proprietary software has now combined with ubiquitous network connectivity to undermine Freedom 0.
And in a world where software is always compiled from source code to an executable binary file which is stored and run by the user's own computer.
There are a number of situations in modern software development which the GPL handles spectacularly badly, including:
* Software which usually runs on other people's computers, like cloud hosted services.
* Software which is exclusively delivered and executed over the Internet, like Javascript-heavy web applications.
* Software which is distributed in a form similar, but not identical, to its source code, like minified Javascript.
* Software which is written, distributed, and used in a source or source-equivalent format, like Python applications or shell scripts.
* Software which runs on embedded hardware which is not trivially modifiable.
* Software whose operating environment is another piece of software which may have an incompatible license, like browser extensions or game mods.
* Software which is not precisely executable, like web site templates or C++ template libraries.
* Software which isn't precisely software at all, like FPGA hardware designs.