I think it all comes down to the death of what was, in the 90s, called the "power user."
There have always been two kinds of computer users: Administrators--those who can be trusted to administer their own systems; and Users--those who cannot, who need someone else to Administer their system for them.
The Power User emerged as a gross hybrid because of the limitations of Personal Computer OSes. In Windows 98, for example, everyone was implicitly considered an Administrator, even if they had no idea how to Administer anything. (They were Users with the full Power of an Administrator.)
What would frequently happen is that one person in an extended family would have such knowledge as to be capable of actually Administering computers, and would frequently have to drop in to perform Administrative maintenance for relatives, who had no idea they had to do such things themselves. Nobody would be looking out for the computer in the interstice.
This era is thankfully over. What do we have now? No greater number of people capable of Administering their own computers, certainly.
Instead, what happens now is that the hardware manufacturer provides hooks (the Secure Boot certificate store et al.) such that the computer's Owner can delegate Administrative power to the OS distributor (Microsoft, Apple, Canonical, etc.), leaving the Owner as a plain User. "That guy in the family who knows computers" no longer has to be involved--effectively, the OS distributor is "that guy."
This is only really a problem for people who want to Administer their own computers (though in any form-factor where you can buy a motherboard separately, all these protections can be disabled.)
Frankly, though, I see less and less of a need for people to Administer personal computers. PCs (I'm including both desktops and mobiles in this set), these days, are basically the equivalent of VT-100 terminals: fancy screens you buy, take out of the box, and plug directly into the internet.
This is what I would call the "modern tinkerer mindset":
• "Real Software" runs on Impersonal Computers: servers, either racked in your office, or existing nebulously in "the cloud." When you are developing this software, you keep a VM that simulates such an Impersonal Computer running on your Personal Computer, and interact with it as if it were a network resource.
• Development of new Operating Systems occurs using a hardware emulator (really a more precise VM), like qemu. It then moves to ordinary VM software. Everyone else who tries your hobbyist OS will only want to run it in a VM themselves. Getting it running on Real Hardware is a 1.0 feature.
• If you want to fiddle with hardware yourself, you get a Raspberry Pi, or any of innumerable other devices aimed squarely at tinkerers. You could develop an OS using these, too, although it's a much greater hassle than just using emulation software. These devices are open in ways Personal Computers never were, having everything from schematics to JTAG pins available.
Given that mindset, what do you gain by having Administration rights to your new-age VT-100 Personal Computer?
You might answer "the surety that Microsoft/Apple/etc. will never ban VM software from its platform", but no OS distributor would dream of doing this: after all, how, then, would its first- and third-party developers do their jobs? They rely on VM software just like the rest of us.
> Given that mindset, what do you gain by having Administration rights to your new-age VT-100 Personal Computer?
The freedom and power to control what's yours. A chance to explore, to learn more about the system you're using and possibly adapt it to fit your needs. IMHO giving users that chance is very important: how many experienced developers started out as power users - who also were originally only users? By taking away these chances, keeping regular users relatively oblivious, fewer of them will want to go through the increasing hassle of "becoming a developer"; it becomes an abrupt decision instead of the continuum of knowledge it once was. This divide between "users" and "developers/administrators" only makes it harder for users to cross that gap, and takes control away from them.
> If you want to fiddle with hardware yourself, you get a Raspberry Pi [...] These devices are open in ways Personal Computers never were, having everything from schematics to JTAG pins available.
Funny you mention the RPi, as it's nowhere close to being as open as the PC/AT was.
You seem to be conflating "developer" with "administrator", which I just don't understand.
Want to be a developer? Download https://love2d.org/, open Notepad and write some Lua, save it in the same directory and run the executable. Or write some text that starts "<script>", save it as HTML, and double-click it. Or download Racket and follow the tutorials. Or, if you really insist on writing low-level code, download {Visual Studio Express, XCode Command Line Tools, Debian build-essential} and open up a shell. Learning to program has only gotten easier and easier over the decades.
But wanting to be an Administrator? What for?
Do you want to Administer your DVD player? It's an appliance. It plays DVDs. It works well because it only plays DVDs.
PCs are appliances. They run, in sandboxed environments, "application software", which are binary packages code-signed-by-proxy by the OS developer. They work well because they only do this. And within the framework of these restrictions, you can still program new software, or an entirely new OS. These are tasks this appliance lets you perform.
You can build your own computer. It won't be an appliance. You can also build your own DVD player. It won't be an appliance either. Is it so bad, then, that DVD players exist for playing DVDs? Is it so bad, then, that PCs exist for running sandboxed code-signed applications?
<sarcasm>
What do you have a kitchen for? You can microwave TV dinners all you want. If you want to make your own recipe, say because you want to be healthy, or don't like the flavor of TV dinners, you can just make a simulated Real Recipe out of pieces of TV dinners. It's almost as good.
Just let someone else more qualified than you, or well maybe not more qualified, but more in charge than you, decide what you should eat. Selecting a restaurant or frozen dinner has only gotten easier and easier over the decades. But wanting to be a cook? What for?
And why do you need a camera? People should be able to sell you pictures of whatever you want a picture of. There should be enough pictures of everyone on Facebook already. Or, if you really insist on having a picture of something or someone that a Big Corporation doesn't have, just get out some crayons and sketch them. Buying crayons and coloring books has only gotten easier and easier over the decades. But why take your own pictures, what for?
And what do you need musical instruments for? Want to be a musician? Just download some songs that have already been written and play them in a different order on your DRM-closed player. Or, if you really insist on having your own choice in music, just call a radio station and request something. Calling and requesting songs has only gotten easier and easier over the decades. But wanting to make your own music or start your own band? What for?
And that address bar on your web browser? Just go to yahoo.com, and click all the links there. They already know what's good for you. If you really insist on having your own, post to a social network. Starting a web page on Facebook/google has only gotten easier and easier over the decades.
But wanting to go to whatever websites you want - or make your own websites? What for?
</sarcasm>
Er, did you miss the part where I said "You can build your own computer. It won't be an appliance"?
Most kitchens have microwaves in them. Sometimes a microwave is the best tool for a job. (For defrosting red meat, for example.) But chefs don't insist on forcing their microwave to somehow do all their kitchen-related tasks; they use other tools, each with its own affordances, each with a best-suited task, together, to get done what they want done.
Likewise, a home-entertainment system usually has a DVD player in it. You don't try to use your DVD player as a PVR, or a video-game machine. You use separate devices for each of those tasks.
A capital-c-Computer is an amazing machine that can do many things equally well--it's sort of like an undifferentiated stem-cell. I completely understand wanting to use a capital-c-Computer, just for the sheer neatness-factor of it.
But a PC? The modern PC isn't a capital-c-Computer. The modern PC is a microwave, a DVD player. Like the microwave, like the DVD player, you likely have one in your toolkit--in fact, you likely use it for a lot of things. But it'd be silly to expect it to do everything.
You can have your capital-C-Computer and a PC too. Neither of them is going anywhere.
My new-age VT-100 PC is still a general purpose computer, and if I want to use it as such I should be able to. I see the advantage of shipping it as a VT-100, but I don't see any advantage in blocking power users from unlocking its full potential.
Nobody wants to work on hobby projects that have no chance of ever running on real hardware. What's the point then? Even if you'll never get to run your hobby OS on real hardware, that possibility still serves to motivate the developer. Nobody likes to work on things they know beforehand nobody will ever use for anything.
As an example, coding a toy shell in JavaScript that runs in a web browser and prints some text to a canvas is not the same as coding a toy shell that can touch the actual file system and be used for real work.
Life is too short to write toy software for emulators, I want to write software that people use and get something out of. I'm an engineer, if I buy a computer it's because I want to make cool things with it and for it, not because I want a dumb terminal to connect to some rented server.
> Nobody wants to work on hobby projects that have no chance of ever running on real hardware.
I never said hobbyist OS projects won't run on real hardware; I said running on real hardware is a "1.0 feature." Which is to say, around the 0.9, you start taking some real test machines, disabling their boot protections, and putting your OS on them. You get it polished.
And then, only after that, you go and apply for a boot-signing certificate from the hardware makers. Which, because you now have a real, polished OS instead of a hobbyist project, they will give you. It's sensible enough: if they gave a cert to every hobbyist developer, one of them might just be a virus-writer; but there are only so many groups who actually end up with real, working, polished Operating Systems that Users will want to run. And it's easy enough to tell when a group has made one of those, and to sign their bootloader.
This is, if you'll note, pretty much the same logic behind the iOS development workflow. First, you deploy to test devices that are specifically configured with an "I am an Administrator, obey me" flag. Then, once you've proven out your software on those devices, you get it signed with a "this is allowed to run on regular User PCs" cert.
---
Also: if a "toy shell in Javascript" can both connect to the network, and use the browser's Javascript data-storage APIs to store data, then what makes it incapable of getting Real Work done? It's basically a (really slow) VM.
So what happens if the people in charge of giving certificates, approving marketplace apps, etc. decide they don't like me and give me the boot even if my product is perfectly fine? They're human, and humans screw each other for petty reasons and out of self interest all the time.
If someone buys a computer, why do there have to be barriers from getting and using software directly from the developer? This has everything to do with milking money from developers and making users' alternative choices as difficult and unpractical as possible. It's discouraging choice and diversity.
--
> Also: if a "toy shell in Javascript" can both connect to the network, and use the browser's Javascript data-storage APIs to store data, then what makes it incapable of getting Real Work done? It's basically a (really slow) VM.
So who wants to play with "basically a (really slow) VM"? Why should hobbyist developers be content with only having access to second rate capabilities? No thank you.
> So what happens if the people in charge of giving certificates ... decide they don't like me
Then the developers get angry and throw out the people in charge. Imagine, for example, what would happen if IANA arbitrarily stopped just a few people from getting domain names. We'd get a new IANA. (We can't do this with the "apps marketplace" vendors, though, and that is a problem. It's probably something that should be solved with an anti-trust suit or two.)
> If someone buys a computer, why do there have to be barriers from getting and using software directly from the developer?
Because--and this is the whole point of the Users/Administrators distinction--Users don't know enough about computers to distrust malicious software.
We put barriers between people and phishing sites, so they can't be tricked into giving their money away. We put barriers between children and in-app purchases, because they don't understand the consequences.
This is the same idea. Most people would go through whatever series of scary dialog boxes it took to run "cat_videos.exe". If you, an Administrator, were standing right there beside them, you'd grab the mouse from their hand and stop them, for their own good. We can't be there all the time. We want the OS to grab the mouse from their hand for their own good.
> Users don't know enough about computers to distrust malicious software.
Then the solution is to educate them, not mollycoddle them and keep them locked up. But knowledge is power, and educated users are difficult to control and deceive, so the "developers", the ones who want to remain in control, don't want that happening.
> We put barriers between people and phishing sites, so they can't be tricked into giving their money away.
The same people who would then fall for a different scam, before even more barriers are erected, and would think "security software X doesn't think this is a phishing site, so it must be safe."
> We put barriers between children and in-app purchases, because they don't understand the consequences.
A "think of the children" argument? I agree a lot of young ones haven't developed to that point yet, but if you make it so they never experience any bad consequences, they'll never learn from them too.
> If you, an Administrator, were standing right there beside them, you'd grab the mouse from their hand and stop them, for their own good.
No, I'd just tell them "you're very likely not going to like the outcome, but the ultimate choice is yours."
"We do not truly have freedom if we do not have the freedom to make the wrong choices."
> We want the OS to grab the mouse from their hand for their own good.
Solutions which protect the user from cat_videos.exe can also "protect" them from subversive_essay.pdf (or competitor.com). It's maybe not that practical a vector, at least where there's democracy and competition, but still something to consider.
> Then the developers get angry and throw out the people in charge.
The developers aren't the ones giving these companies money. The users are. The developers aren't their customers. The users are. The developers have little power to "throw out the people in charge" as long as the users keep giving the companies money.
There have always been two kinds of computer users: Administrators--those who can be trusted to administer their own systems; and Users--those who cannot, who need someone else to Administer their system for them.
The Power User emerged as a gross hybrid because of the limitations of Personal Computer OSes. In Windows 98, for example, everyone was implicitly considered an Administrator, even if they had no idea how to Administer anything. (They were Users with the full Power of an Administrator.)
What would frequently happen is that one person in an extended family would have such knowledge as to be capable of actually Administering computers, and would frequently have to drop in to perform Administrative maintenance for relatives, who had no idea they had to do such things themselves. Nobody would be looking out for the computer in the interstice.
This era is thankfully over. What do we have now? No greater number of people capable of Administering their own computers, certainly.
Instead, what happens now is that the hardware manufacturer provides hooks (the Secure Boot certificate store et al.) such that the computer's Owner can delegate Administrative power to the OS distributor (Microsoft, Apple, Canonical, etc.), leaving the Owner as a plain User. "That guy in the family who knows computers" no longer has to be involved--effectively, the OS distributor is "that guy."
This is only really a problem for people who want to Administer their own computers (though in any form-factor where you can buy a motherboard separately, all these protections can be disabled.)
Frankly, though, I see less and less of a need for people to Administer personal computers. PCs (I'm including both desktops and mobiles in this set), these days, are basically the equivalent of VT-100 terminals: fancy screens you buy, take out of the box, and plug directly into the internet.
This is what I would call the "modern tinkerer mindset":
• "Real Software" runs on Impersonal Computers: servers, either racked in your office, or existing nebulously in "the cloud." When you are developing this software, you keep a VM that simulates such an Impersonal Computer running on your Personal Computer, and interact with it as if it were a network resource.
• Development of new Operating Systems occurs using a hardware emulator (really a more precise VM), like qemu. It then moves to ordinary VM software. Everyone else who tries your hobbyist OS will only want to run it in a VM themselves. Getting it running on Real Hardware is a 1.0 feature.
• If you want to fiddle with hardware yourself, you get a Raspberry Pi, or any of innumerable other devices aimed squarely at tinkerers. You could develop an OS using these, too, although it's a much greater hassle than just using emulation software. These devices are open in ways Personal Computers never were, having everything from schematics to JTAG pins available.
Given that mindset, what do you gain by having Administration rights to your new-age VT-100 Personal Computer?
You might answer "the surety that Microsoft/Apple/etc. will never ban VM software from its platform", but no OS distributor would dream of doing this: after all, how, then, would its first- and third-party developers do their jobs? They rely on VM software just like the rest of us.