The happy path has improved a lot. When Linux is working it's reasonably usable. But once something breaks it breaks HARD and recovery is still miserable.
For reference I've been using Linux since Red Hat 5.2 circa 2000. I cut my teeth debugging problems without internet access. I ran an LTSP lab at my high school. I remember the hell that was XF86Config (I was there, Gandalf, I was there 3000 years ago).
....and like the previous commenter I run Windows on my personal machines because I want to spend my free time using them, not debugging them.
....which is why Chromebooks took over the consumer market. Oh, wait.
I’ve certainly run into some odd situations on my desktop Linux machine over the past 6 years since I started using it full time, but I think most of them were related to the nature of how I use the machine more than inherent instability. I think I’ve spent many more hours of my life unwinding piles of malware and bloat from non-technical folks’ Windows machines than debugging this one.
They don’t know what Linux is, and know nothing about tech, they just know that we had a 30 minute lesson on “here’s Firefox, this icon means you need to install updates, here’s how you print”.
Oh and this was Linux Mint back in ~2016
Things have only gotten easier since then
When something breaks,
Fixing Linux means running some commands that LLM suggests.
Fixing Windows means downloading some shady .exe that may or may not fix the problem and it may or may not backdoor your machine.
Fixing MacOS means paying $5 for some app that maybe does the thing.
I have been using Linux since 2000s as well. I do remember the rpm hell, dealing with x config issues etc. It is NOT the same experience now a days. I don't have the time or inclination to mess around so I use Fedora + KDE and that basically stays out of my way. I don't rice my desktop or do any hacking around beyond basic automation and I have had zero instances of the system just breaking.
* I wanted to update a Raspberry Pi from Ubuntu LTS 22 to LTS 24. Turns out this is basically impossible. Ubuntu themselves tell you not to do it and their recommended solution is to wipe the system and try again. I ignored them and tried to do it anyway and my Pi ended up refusing to boot. Great.
* I needed to update a Raspberry Pi to change the list of WiFi networks it knew about. Except apparently there are two different networking stacks for Linux with different config files and I edited the wrong one.
* I built a new TrueNAS server. Turns out that you absolutely cannot configure the networking from the GUI. There's a section there, sure, but every time it refuses to save the information until you "test the changes" and that fails to reconnect every single time. You have to locally plug a monitor into the machine, boot it, and log in with a keyboard to get to the config there.
* Not strictly a bug, but I installed Debian in WSL and it doesn't include `man` by default. So I get a command line and no help for it. Brilliant.
* I want to install jj
* Its docs say to use cargo-binstall
* How do I get that? With cargo, so sudo apt install cargo
* `cargo binstall --strategies crate-meta-data jj-cli` -> `error: no such command: `binstall``
* `cargo install binstall` -> `error: cannot install package `cargo-binstall 1.17.7`, it requires rustc 1.79.0 or newer, while the currently active rustc version is 1.75.0`
* `sudo apt install rust` -> E: Unable to locate package rust
* `sudo apt install rustc` -> `rustc is already the newest version (1.75.0+dfsg0ubuntu1~bpo0-0ubuntu0.22.04).`
Apparently the guidance is to manage your rust versions with a tool other than apt that you install with `curl ... | sh` because no one ever learns anything about security
.....yep, just as user friendly as I remember.
"Ubuntu themselves tell you not to do it" - you do see it right? Let us see how you forgive Windows for breaking things by ignoring Microsoft's advice and blame them anyway when it breaks.
> * I needed to update a Raspberry Pi to change the list of WiFi networks it knew about. Except apparently there are two different networking stacks for Linux with different config files and I edited the wrong one.
Why? Why not connect it to the network you want so that it just connects to that going forward?
> * I built a new TrueNAS server. Turns out that you absolutely cannot configure the networking from the GUI. There's a section there, sure, but every time it refuses to save the information until you "test the changes" and that fails to reconnect every single time. You have to locally plug a monitor into the machine, boot it, and log in with a keyboard to get to the config there.
And TrueNAS's shortcomings are somehow Linux's fault just like every Windows thirdparty software issue is Windows' fault?
> * I want to install jj * Its docs say to use cargo-binstall
No, they don't ask that as the first choice - this is what they say in https://docs.jj-vcs.dev/latest/install-and-setup/:
Installation¶
Download pre-built binaries for a release¶
There are pre-built binaries of the last released version of jj for Windows, Mac, or Linux (the "musl" version should work on all distributions).
Cargo Binstall¶
If you use cargo-binstall, ....
You could have just used the pre-built binaries as per their advice. But if you didn't, you should have atleast bothered to click on that cargo-binstall link to see that it is an add-on which has its own instructions - it is not bundled with cargo by default. Unlike you, I did follow the steps and was able to install jj without issues: $ > curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
+ set -o pipefail
+ set -o pipefail
+ case "${BINSTALL_VERSION:-}" in
++ mktemp -d
+ cd /tmp/tmp.8IdPJtQBlE
+ '[' -z '' ']'
...
+ case ":$PATH:" in
+ '[' -n '' ']'
$ > cargo binstall --strategies crate-meta-data jj-cli
INFO the current QuickInstall statistics endpoint url="https://cargo-quickinstall-stats-server.fly.dev/record-install"
Binstall would like to collect install statistics for the QuickInstall project
to help inform which packages should be included in its index in the future.
If you agree, please type 'yes'. If you disagree, telemetry will not be sent.
...
INFO resolve: Resolving package: 'jj-cli'
WARN resolve: When resolving jj-cli bin fake-bisector is not found. But since it requires features test-fakes, this bin is ignored.
WARN resolve: When resolving jj-cli bin fake-diff-editor is not found. But since it requires features test-fakes, this bin is ignored.
WARN resolve: When resolving jj-cli bin fake-echo is not found. But since it requires features test-fakes, this bin is ignored.
WARN resolve: When resolving jj-cli bin fake-editor is not found. But since it requires features test-fakes, this bin is ignored.
WARN resolve: When resolving jj-cli bin fake-formatter is not found. But since it requires features test-fakes, this bin is ignored.
WARN The package jj-cli v0.39.0 (x86_64-unknown-linux-musl) has been downloaded from github.com
INFO This will install the following binaries:
INFO - jj => /home/xxxxx/.cargo/bin/jj
Do you wish to continue? [yes]/no yes
INFO Installing binaries...
INFO Done in 7.549505679s
$ > jj version
jj 0.39.0-d9689cd9b51b4139d2842fcf6c30f65f4eed8cd1
$ >
Again, a) this is third party b) just because you don't know how to follow the instructions, doesn't make the OS bad. Hell it doesn't even make cargo-binstall or jj look bad. By now, you should see that years of experience != knowing how to use things.Having said all that, none of this stuff you mentioned even remotely resembled an average user's workflow who just uses his computer for listening to music and browsing the internet with some occasional document editing thrown in. Despite its warts and shortcomings, Linux does a much better job today than it used to.