- The ABI diaspora
- Sudo nominally being for special/power use cases, but being required for many things
- Doesn't feel like it's aimed at single-user PCs, and has associated UX problems
- Non-standard hardware has limited support.
Summarized: I feel like Linux has some deep philosophical design differences from what I look for in a computer. I'm not trying to administer anything; I just want to write and launch software.I'm also more willing to solve problems in Linux. Because I primarily write web software, I've also found "Linux debugging" skills more useful to learn than "Windows debugging skills" - the Linux skills tend to translate almost directly to my career. And it usually feels worthwhile to contribute good bug reports/fixes upstream; in stark contrast to Windows OS issues (and some of the more popular Windows software).
Many things are special/power use cases. Freedom is power, and with power comes responsibility.
> Doesn't feel like it's aimed at single-user PCs
It isn't. But what you think of as problems, I consider opportunities. Switching between multiple user accounts is useful for identity management.
> I'm not trying to administer anything; I just want to write and launch software.
If you test and package and distribute your software, you necessarily administrate the environments in which the tests and builds occur.
Just the fact that installing user software still requires sudo in most distributions is very irritating to me.
Hence the rise of `curl <something> | bash` I think
The permissions are required because you will put the files in places that can be seen by all users of the system.
It's not different from UAC on Windows getting in the way of installing "for all users".
Why does software installed by a user puts stuff where it will be seen by all users?
> It's not different from UAC on Windows getting in the way of installing "for all users".
When I'm not installing "for all users" UAC isn't there, right?
Edit
For the purposes of installing software Linux is a single-user OS masquerading as multi-user.
Because the software package has its install paths predetermined. But other distribution methods absolutely are available. Flatpak works much more like what you're accustomed to; you can supply --user at the command line. Of course, this also means you get the bloat you're accustomed to; it still tries to share dependencies, but it's much harder in that world.
Also, because it is a good thing to think twice before installing any software.
> When I'm not installing "for all users" UAC isn't there, right?
Yes, and you can correspondingly put an Appimage in ~/.local/bin (or anywhere, if you don't care about having it on your PATH) without sudo, or run flatpak install --user without sudo.
> For the purposes of installing software Linux is a single-user OS masquerading as multi-user.
I am the only actual person who uses my system, but I made 7 user accounts (so far) and use at least 2 of them regularly. To say nothing of all the non-privileged users the system creates automatically, specifically so that certain background processes can run without violating privacy or corrupting anything important if they go haywire.
That really doesn't explain why this still is the case for the vast majority of distributions in 2025.
Or why these "predetermined paths" could not be transparently provided to the package and actually lead wherever.
> Flatpak works much more like what you're accustomed to
It's not "what I'm accustomed to". It's how it's supposed to work.
I, the user, am installing some software for me, myself, the user. I am not installing it for all users of the system. And that is the primary case for installing almost anything, especially in a user-facing system.
And yet...
> I am the only actual person who uses my system, but I made 7 user accounts (so far) and use at least 2 of them regularly. To say nothing of all the non-privileged users the system creates automatically
And... this somehow makes any of my points invalid?
> specifically so that certain background processes can run without violating privacy or corrupting anything important if they go haywire.
What does this have to do with a user installing software? Literally nothing. Besides implying that Linux is a single-user system masquerading as multi-user. Where the simple act of installing user software for a user can apparently break the entire system because it's always installed for all users.
If Windows of all systems could figure it out...
If you absolutely refuse to handle your own system's security ("Enter a password to do something on my own computer? No thank you!"), you really should leave the management of your computer to Microsoft, and ask their permission personally to view your own files. They'll faceid you, consider the merits of your request, and decide how much access you should have to your own life.
In that way you can avoid sudo, or the concept of a multiuser computer entirely.
As for the last one, it is simply untrue. Linux supports as much as or more hardware than Windows. Windows will more likely support the latest greatest stuff because people don't release hardware specs. But once Linux catches up, it keeps that hardware compatibility longer, and can always be reverted back to by using an old kernel even a decade or two after a piece of hardware is dropped.
I would argue that more time was spent on thinking "how we do hotplug CPU on our machine" than on "how that user will work with USB drives".
It's possible that you are just experiencing friction moving to Linux because you are used to MS.
Easily writing and launching software is something Linux excels at.
I don't want to go into the details, but I regularly experience UX problems in Ubuntu. Even things like reading/writing a USB port requires sudo, or editing system config files, which is wild to me. And adding a trailing newline to the config file in question will prevent your GUI from booting. Adding an item to the PATH is a combo of unintuitive, or filled with incorrect instructions (Including Go's home page CAO yesterday...).
Or, software I write can't be launched without using having the user go to the CLI, or creating a GUI-specific config file and placing it in a certain location. This leads to the line I hear regularly "You should publish your software on the distro-specific app store", or "You should only install software from the app store". Which immediately leads me to think I have a use-case mismatch.
None of this sounds like anything I've experienced, or heard described, in 3 years of using the Ubuntu-derived Mint.
> Or, software I write can't be launched without using having the user go to the CLI, or creating a GUI-specific config file and placing it in a certain location.
How exactly are you distributing it? If the problem is e.g. that your users download an AppImage and it isn't executable, they can most likely change the permissions from the GUI. I don't know what you mean about GUI-specific config files. I had thought that https://specifications.freedesktop.org/desktop-entry-spec/la... was pretty widely recognized.
Distros don't generally have "app stores" but rather package repositories, modulo branding. Publishing there isn't about making your launcher work; it's about letting the system handle dependencies and letting the distro maintainers patch (and build trust in) your code.
> None of this sounds like anything I've experienced, or heard described, in 3 years of using the Ubuntu-derived Mint.
To be more specific on those anecdotes I mentioned due to having hit them recently:
- Create an embedded device that talks to a PC over USB-serial. (Here you are not constrained to the whims of a GPOS! RTOSs are a dream in comparison, or forego entirely and use bare metal)
- Write PC software that talks to it (gets data from sensors etc)
- Try to run the program without Sudo on Linux. The USB won't work unless. I've heard the justification for this is that the USB might be a storage device, and storage devices should be restricted by the OS etc.
The PATH (and other environment-vars) in Linux are shell-specific. You regularly read instructions (I saw this in Go's official instructions yesterday) indicating to use the EXPORT command. This only works until you reboot; you have to hand-edit a sudo-protected file (bashrc, .profile etc), and there's a learning curve to it. I don't remember the details, but I've screwed it up multiple times.PATH works the same way in Bash, sh, zsh etc. etc. Various shells do offer some additional ways to manipulate environment variables, but you can rely on things like export.
If you meant "specific to a shell process", then yes:
> You regularly read instructions (I saw this in Go's official instructions yesterday) indicating to use the EXPORT command. This only works until you reboot
See https://stackoverflow.com/questions/1158091 . The export command is essential. But of course settings that persist between sessions, between reboots etc. will be stored in a file. How else could it work? The point is that you aren't forced to use a GUI and you can examine the file as plain text and comprehend it.
> you have to hand-edit a sudo-protected file (bashrc, .profile etc), and there's a learning curve to it.
It's only root-owned (what I guess you mean by "sudo-protected") if it's system-wide. Per-user settings only require that user's rights, exactly as one would expect. That's not different from having to be an admin user on Windows to change system environment variables. Most of these config files are actually auto-run scripts, and understanding the system is an important part of familiarizing yourself with Linux as a developer. Trust me, Bash is much more pleasant to program in than Windows Batch files.
> I don't remember the details, but I've screwed it up multiple times.
If you want a wrapper for the process, it's not hard to make one if you can't already find one. It's strange to me how many developers don't seem to have any interest in building or customizing their own toolchain.
We choose which things we want to tinker with and improve, and which we would like to use as-is for that and other goals. For me, the OS is in the latter category.
I use NixOS and I don't have UX problems because my UX is fully customized to work exactly how I want.
Plus, for every but of friction you may experience in Linix, the cons of Microsoft are much greater. They have no concern for your privacy, and exploit their workers and the environment.
Last time I used Microsoft (~8 years ago) I couldn't get that malware OS to stop forcefully suggesting and using their cloud services automatically.
There are many things that MS does that are just unacceptable.
I don't think that would be enough: adding those people to a team won't matter if the overall vision isn't there.
It needs, and I'm about to choke on my words here, a Steve Jobs at the helm saying "No, it needs to be like this".
Yes, I know that won't achieve perfection but there needs to be a coherent vision of what the OS is trying to be, or who it is aiming for.
Linux, right now is pure techie-driven. There isn't any vision at all! Every distro is subtly different and reflects the wants of the team that work on it.
It needs a company to take a distro and pick a direction, e.g. Linux for normies would have to remove almost all traces of command line, hard disk partitions, configs, package managers etc. All that shit would have to be hidden away, still in the background and available if wanted, but to use the OS it should not be a requirement.
Anyway, Linux is what it is :)
Several people at the Gnome Foundation seem to believe themselves to be this person.
The problem is, there are several such people, and they all seem to have terrible ideas on balance.
Now do the same in Windows. Messing with system files, without knowing what you are doing, is a recipe to disaster.
I think I didn't communicate something clearly: My concern isn't that misediting a system file causes disaster. It's that you need to edit system files to do routine things.
On Windows, the solution is simple: USB/serial works without editing system files or requiring launching the program via CLI with sudo. You double-click the program in GUI, and it works.
Most non-gamers probably only need a web browser, so I think a lot of people could get away with this (maybe with a distro that pre-installs drivers they need).
Microsoft is due righteous criticism as here, but let's be realistic about Linux as well.
of course there is. its just a matter of familiarity. if you only know Linux Windows is very hard to use as well.
I recently showed a client of mine how Ubuntu works out of the box. No hours of rebooting, no ads in any menus, no online account requirement, no persistent anti-malware scanning, no UI elements from the 90s showing through. Drivers can be an issue, power usage perhaps, maybe sleep is annoying (especially on shit hardware) on laptops but apart from that I don't know how you can even compare the frustration from a recent Windows system with a modern Linux desktop.
I helped some elderly friends and neighbours switch to Linux and they love it. Just a handful of programs, everything works, and nothing ever changes.
1. 3060Ti - I want to play games with all the bells and whistles that I get on Windows. I understand that for some games I'll need to boot Windows, but by and large I expect smooth experience.
2. I am familiar with Terminal and basic Linux commands because I've used Ubuntu a little, but god I love the UI of Windows 10. It's decline from Windows 7, but still miles ahead of either Ubuntu (used once in a while) or MacOS (used at work for five years, still super confused).
3. I want things to "just work".
I wouldn't recommend diving right in. There are guides that show you how to shrink existing disk partitions or boot off external drives so you don't break your existing system. Once you're comfortable enough, then you can consider making the switch permanent.
I'm on AMD and play very little (Quake Champions, Doom Dark Ages, Tempest Dawn) but some anecdotal evidence points to nvidia working okay: https://nerdburglars.net/question/is-gaming-on-linux-with-an...
Arch, once setup, is 99% "just works" with some "update and peek at what's changed every now and then".
The ARCH/UBUNTU/DEBIAN triad have been consecutively producing a bottom contender for your desktop 30 years in a row. Slavery comes in different forms.