1) Somehow both GNOME and KDE got much better in the last 2 years. It's very smooth and polished experience that I now prefer to both MacOS and Windows. I only need to install 1 or 2 extensions and it's good to go for me.
2) AI! It's orders of magnitudes easier to fix any Linux issue now compared to 3 years ago. The issues that would take a whole afternoon of fighting are now just a couple back-and-forths with the LLM like ChatGPT or Gemini.
3) Valve and SteamOS. The large and mostly successful push by Valve to make Linux be the platform for gaming has cleared many Linux issues and hurdles on the way. I think this will have ripple effects in the industry. My prediction is that thanks to Valve and SteamOS we will see a viable, widely used Linux based phone in the next 3 years.
Isn't there already a viable, widely used Linux based phone OS called Android?
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
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.
The other path I can see (looking at https://docs.jj-vcs.dev/latest/install-and-setup/#windows) is that you could maybe instead use winget directly.
Though honestly IMO this is more of a failure on the jj devs to not provide something that can be installed straight using apt, I guess (looking at https://docs.jj-vcs.dev/latest/install-and-setup/#linux). For Arch for example you just install it from the official repos.
"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.
Not giving a supported upgrade path between version N and N+1 of your operating system is unacceptable, user hostile, and not something a home user could deal with. "Install from scratch, wipe all your files, and set everything up again" is not OK. You can upgrade Windows from 1.0 through 11 without Microsoft saying "nah, this is impossible": https://www.youtube.com/watch?v=cwXX5FQEl88
> 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/:
"the binaries" are a tarball whose instructions refer back to the previous document, whose "Install > Linux" section starts "from source" and says "go obtain Rust > 1.88", so all of the previous problems still apply.
Again with the assertions without checking things. This is the path of "the binaries":
https://github.com/jj-vcs/jj/releases/tag/v0.39.0
I downloaded the file myself and extracted to see:
$ > ls -l jj-v0.39.0-x86_64-unknown-linux-musl.tar.gz
-rw-r--r--. 1 xxxx xxxx 10373711 Mar xx xx:xx jj-v0.39.0-x86_64-unknown-linux-musl.tar.gz
$ > tar xzvf jj-v0.39.0-x86_64-unknown-linux-musl.tar.gz
./
./README.md
./LICENSE
./jj
$ > ls -l jj
-rwxr-xr-x. 1 xxxx xxxx 27122184 Mar 5 02:33 jj
$ > file jj
jj: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, BuildID[sha1]=70d48428bc2100069e6813aff97e3dce8d2bb4a0, not stripped
$ > ./jj version
jj 0.39.0-d9689cd9b51b4139d2842fcf6c30f65f4eed8cd1
$ >
It is overconfident low-skill users like you that bring a bad name to Linux.Not "figure out how to extract a tarball, find somewhere unspecified on your path to put things blah blah" but "to get started go read this doc whose first step is to install rust, which your package manager isn't capable of".
This is a fairly standard Linux experience, not one reserved for developer tools.
On Windows, if you're not going through an app store you get an EXE or MSI installer that you double click and it does everything else necessary. Every time.
I note you also dropped the line of argument about the OS updating, where you were chiding them, saying they did need to follow instructions in that case. Of course, the instructions in that case are indefensible - you cannot seriously suggest an OS is production-ready for the real world if the instructions are "this cannot be updated. Seriously, don't even try.".
Yes, because as per the poster, they are not a novice:
> 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).
No one is expecting a novice to know how to run curl, untar and compile. This is not that situation by the very admission above.
> For somebody who just started using it, "following the install instructions at the top of the page" is a perfectly reasonable thing to be doing. It is not the user's fault if those instructions are bad and you could totally get it working more easily if only you already knew what you were doing.
Did you actually go to jj's github which the poster mentioned? This is what is literally the top of the Installation page:
Installation 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).
I demonstrated in this thread that if you download and untar the pre-built binary, it works perfectly. No curl command or compilation necessary. Again, I don't expect a novice to know this but for someone proclaiming to have wrestled with XF86Config config, this should be par for the course.> I note you also dropped the line of argument about the OS updating, where you were chiding them, saying they did need to follow instructions in that case. Of course, the instructions in that case are indefensible - you cannot seriously suggest an OS is production-ready for the real world if the instructions are "this cannot be updated. Seriously, don't even try.".
I admit that I was shallow on this point. I did research further and Raspberry Pi situation isn't great when it comes to upgrades. Most people are using separate SD cards to host the OS and doing a hard upgrade. I admit and apologise to @Arainach for not checking further on this point and ignoring it.
Edit: I guess today was the day I couldn't ignore Linux bashing from an experienced user and got somewhat carried away. My tone could and should have been softer.
I'm not the guy who wrote that, but I had the same use-case myself. (Except that I happened to choose the correct networking stack so I didn't have a problem). I wanted to set up a Raspberry Pi in my parents' house that would run Tailscale so I could use it as an exit node. (With my parents' full knowledge and permission). I wanted to pre-configure it with their WiFi password so that when I showed up for Christmas, I didn't have to spend any time configuring the device, just plug it in and go have dinner. (Then they changed ISPs, got a new router with a new WiFi password, and I had to ask them to plug it into the wired network so I could connect to it remotely and change the WiFi password again, so I had to do that work twice. But thankfully, I didn't have to walk them through the steps, just say "Hey, please plug it into the router with an Ethernet cable until you get an email from me telling you I've reconfigured the WiFi".)
As a separate point, it seems quite feasible to run Android apps in VM on Linux based phone and make the experience fairly seamless. Something like what Waydroid provides.
But why?
The premise of Waydroid seems to be to bring Android apps you want to your Linux desktop. But why would you want the phone in your pocket to run Desktop Linux so that you could then run Android apps on your Desktop Linux mobile phone instead of just running Android on your phone?
What desktop Linux features do you want on your phone that would justify this complexity?
My hope is that installation of the Android apps on Linux phone could be made seamless.
I’m sure Google would deny Google Play Services to any popular fork that didn’t follow their rules. But they would do the same to any Linux desktop or whatever that didn’t follow their rules, too, if it became popular.
There are open UI shells from KDE and GNOME, multitouch gesture support, Android emulation... it's all there.
I don't know what it is, but UI on Linux always feels too disjoint from the rest of the system.
It's a bit like how Windows 3.11 was just UI-on-DOS. I get the same feeling.
Don't get me wrong - I love Linux for all its CLI use but for some reason I've never been able to primary drive it without going insane after a week.
Windows just seems to feel more put-together and I guess that's because the kernel probably has hacks to support Office, and Explorer probably has hacks to support the kernel, etc.
The only other system I've felt this level of unity in is FreeBSD with its userland+kernel harmony.
Maybe I need to try a Linux desktop again as I haven't done it in ~10y but the other comment here about Fedora not feeling production ready doesn't inspire much hope...
Any ideas?
Many Linux users seem to like upgrading (if you can call it that) to the latest eye candy every time Gnome or KDE or whoever puts out a new release. I'm the opposite. I do think much of the UI work in Linux has done more harm than good. But that's the nice thing about Linux: I don't have to care, precisely because of the lack of such close coupling between the GUI and the underlying OS. I can't stand the GUI that comes by default with Ubuntu, but I just don't use it; I use something else instead.
I felt the same as you, up until quite recently, although I was using Xbuntu which uses a very barebones desktop environment. Since changed to CachyOS + KDE Plasma late last year and haven't booted up Windows for 3 months other than to extract a few files. I"m a MacOS laptop user, Windows desktop user, but these days I much prefer CachyOS for speed, responsiveness, easy customisation. You may still find you prefer Windows but it's worth a revisit I think and easy to try via a USB Boot as you know (although running it off USB is way more sluggish I find).
I can’t place my finger on it, but Bazzite feels more “coherent” despite using the exact same GUI.
I had the misfortune of using a Windows 11 machine the other day and I didn’t even recognise it. They’ve taken a huge misstep with the Copilot rollout.
You really should, yeah. I've given up Linux as a daily driver in favor of a MacBook but I do have a work mandated Windows machine and I hate that thing with a passion. I cannot think of a single thing that's better on it than on my MacBook or any Linux distro I've ran as a daily driver.
In fact, most of the time I want to do any tasks which are not directly Teams or MS office related I find it easier to just use WSL.
But every Linux distro has its own UI, and pretty much every distro makes it easy to configure it to look how you want, with tens of thousands of themes out there developed over the past 20 years by people wanting their os to look a certain way.
The most glaring inconsistencies are going to be user-inflicted. If I spend a weekend tweaking defaults to look just right I need to be ok with possibly tweaking any new software I download to fit my theme.
But even from a non-power-user perspective, if my mom runs into problems with her computer it's much easier to walk her through a fix over the phone if she's on Windows or a Mac.
My dad, who is very tech-literate, once tried Linux and all the trouble shooting guides required him to open a command prompt (because there isn't a consistent GUI you can use to fix things across distros). He never forgave it.
You can run KDE but depending on the app and containerization you open you'll get a Qt environment, a Qt environment that doesn't respect the system theme, random GTK apps that don't follow the system theme, random GTK apps that only follow a light/dark mode toggle. The GTK apps render their own window decorations too. Sometimes the cursor will change size and theme depending on the window it's on top of.
Right up until you try to access any settings menus.
I installed Linux instead, Fedora specifically, and everything just worked. It actually cleared up some weird hardware issues I had on Windows that I could never manage to track down. I'm pretty sure I didn't need to do any CLI or config file tinkering for anything that wasn't getting an actual CLI app I wanted to use running. Beats the dozens of different registry hacks and powershell scripts downloaded off random Github repos people kept telling me I needed to do to make Windows 11 work and not be too annoying.
I want to have a computer with stable vendor supported OS so _I can do my stuff_ not tweak some os level configs.
I _don’t_ want to spend my time playing an os systems programmer.
OS is a _component_. Like the wifi driver. I think it’s great some people love developing wifi drivers but personally I just want network that-just-works because there are billion other cool things you can do with a computer.
Similarly I want an OS that just works! Without asking me to do a anything! Because _i don’t really care_. (I mean i care it works but i expect the engineers actually developing an os offering to have a far better idea than myself what is a good stable default config for the system)
This is exactly why modern Windows is problematic. MacOS is better. A right Linux distro (e.g. Fedora Silverblue) on right hardware (e.g. Thinkpad T series) also just works™; this basically the same kind of limitation as with MacOS.
I wish they issued a Windows Rock Stable edition. Ancient as rocks (Win7 look, or maybe even WinXP look), every known bug fixed, every feature either supported fully, or explicitly not supported. No new features added. Security updates issued regularly. It could be highly popular.
That is an unforgivable sin in my eyes.
I think it’s the role of the software vendor to offer a package for a modern platform.
Not the role of OS vendor to support infinite legacy tail.
I don’t personally ever need generational program binary compatibility. What I generally want is data compatibility.
I don’t want to operate on my data with decades old packages.
My point of view is either you innovate or offer backward compatibility. I much prefer forward thinking innovation with clear data migration path rather than having binary compatibility.
If I want 100% reproducible computing I think viable options are open source or super stable vendors - and in the latter case one can license the latest build. Or using Windows which mostly _does_ support backward binaries and I agree it is not a useless feature.
Enterprise Windows config that comes eg in Thinkpads is more ready out of the box than the consumer OEM configss.
proxomitron is a rewriting proxy, which I always thought was a very nice approach to webpage filtering. again, I remember it having very good UI/UX as well as being fast and capable.
When I need to compare large text files I use diffuse instead of meld.
This is one of the points where people have vastly different experiences. I'm one of those that has fewer issues with Linux, and I definitely don't spend hours fixing problems. And this despite the fact that I use Arch, which is supposed to be an unstable distro. Why is that different users report so different experiences I don't know. I think that this might be partly due to perception: we tend to forgive more the OS we like. But your case doesn't seem to be just about perception. So I wonder how much the hardware could play a role here. I think Linux has quite good hardware support nowadays, but maybe I was just lucky so far.
You don't have problems with Arch presumably because you've avoided building your system into a neutron star of corporate shitware, while that's the default state for most distributions.
I'm not blaming anything on the kernel (other than memory management). The userland ecosystem is part of what makes an OS, a perfect kernel with no userland is of no value to the general populace. You don't really get to discount everyone's complaints about the Linux experience because they aren't complaints about the kernel, or at least you won't convince anyone by doing so. It is clearly possible to solve many of the issues I have on top of the Linux kernel, because Android used to be decent, but it seems the desktop ecosystem is just locked in to too many bad choices at this point.
The vast majority of complaints about Windows have nothing to do with the NT kernel, either, which by most accounts is actually quite good.
Not sure I can buy that one
MS has made hacking out the BS harder and harder with each new version of Windows. Back in the Windows XP days, yes, I could avoid a lot of the BS on my home Windows computer (although I still had to deal with it at work because work computers are usually locked down so employees don't even have admin rights to them--if I have an issue with my work computer I have to put in a support ticket to the IT department). But even then there was enough friction on my Windows home computer to make me start using Linux at home. For a few years I was running both OSs at home, but even that got to be too difficult, and I simply stopped using the Windows computer at home, at least for my own use (see below). I've never looked back.
I do still have one Windows laptop at home, because some of the Python programs I write (I write them on the Linux computer) have to run on Windows, so I have to have a way of testing them. Even that is clunky compared to how easy it is to do things on my Linux computers. That laptop runs Windows 10, and if I am ever forced to upgrade it to Windows 11, I will probably just stop testing my programs on Windows (fortunately my livelihood does not depend on being able to do that), because Windows 11 is a nonstarter for me; the BS level has just gotten too high.
> Linux frequently demands that I spend hours chasing down issues.
As someone who has been running Linux at home for well over twenty years now, this has not been my experience. Back when I still had Windows computers at home, I spent more time dealing with issues with them than I have spent dealing with issues with my Linux computers at home.
I would make similar comments about the rest of your post.
The hardware is great and it's impressive Asahi Linux works at all but it's not for everyone.
macOS though, that's getting worse each year.
But it has regressed so far from where it was 25 (or more) years ago that every day I'm still infuriated and depressed that I've had to return to it for work. The idiotic UI blunders alone must waste hours of my life per week.
Aside from the absolutely baffling functionality removals, there are the hateful petty ones. Great example: the removal of Remote Desktop. I erred in getting my parents Windows laptops, thinking they'd benefit from the familiarity. NOPE. And when they encounter some defective bullshit that stops them from doing what they're trying to do, they call me for help but I can't log in from 2400 miles away because MICROSOFT REMOVED THAT ABILITY. Disgraceful.
1. Lots of rough edges "yeah it almost works if you tweak it a little" yeah thank you but no.
2. CLI is better for doing the thing you want, but GUI is better for discovering what options you have in the first place. The fact that GUI is an afterthought on Linux says a lot.
"Claude, change the libre office file picker to the system default"
"Beep boop it is done"
Linux has a big leg up over windows in this regard because all the GUIs are essentially wrappers around CLIs and text files that LLMs can deal with quite well.
Unless the GUI buries what you want to do in five or six levels of menus and options--and then changes where they're buried in the next release, so you have to re-learn everything all over again. That's happened to me with work computers more times than I care to remember.
By contrast, my collection of shell scripts on my home Linux computers is still serving me well after more than twenty years.