That's the point I stopped reading.
That's the point I stopped reading.
It's easier to add to the system than remove redundant packages, and if the distro developers focus on the repositories and package management software it benefits everyone much more. That's one of the big reasons people go for Arch.
Nobody cares if LibreOffice or Inkscape or whatever is preinstalled. Just put a usable appstore on the taskbar by default, it works for smartphones too. Many distros are about as necessary as Samsung's or LG's customized Android builds.
Some people want to build everything from source.
Some people want a preconfigured Gnome enviornment.
Some people want a preconfigured KDE environment.
Some people want a distro with the latest version of packages.
Some people want a distro that is conservative about upgrading packages.
Some people are running in VMs and don't need all that extra crap.
Some people want a version that pedantically sticks to the spirit of the GPL.
Some people want a version that is maximally convinient GPL be damned.
I'm sure there's more reasons.
I get on with my day and you can barely see the blood dribble out of the corner of my mouth when I put the verb in the wrong position. systemctl rofl restart ... [fuck] backspace etc ... [bollocks][arse] ... hit enter.
I use Arch (formerly Gentoo) on my work and home PCs/laptops because I like rolling releases with a bleeding edge. I generally run Ubuntu LTS minimal installs for servers because they are tiny and stable and guarantee to be upgradeable to the next LTS release. I run Home Assistant IoT wranglers on Debian because that's what HA insists on for "Supervised".
My wife uses Arch because I look after it and she doesn't care. It simply has to just work and it has for years now without skipping a beat.
Upgrading hardware for laptops and PCs means dumping the filesystems to files on a server or whatever and blatting them onto the new device. If there is physical space, put the old HD/SSD/whatevs into the new box and use a live CD like system rescue or Clonezilla. All the drivers are built in out of the box. These days most things simply work with minimal fiddling. I can't remember the last time I fiddled with xorg.conf. OK I disabled the touchscreen on this laptop when I cracked it and that involved fiddling with xorg. I remember setting modelines by hand in XFree86 ...
IMO it's about time we converge on just 4-5 languages -- each with unique benefits that can't be had easily in the other ones! -- and finally start to be truly productive.
Programming is mostly a complete mess today and everybody loves their own ugly disabled baby. Sigh.
Small footprint systems language - C, Zig, Ada/SPARK; Higher level dynamic language - CL, Scheme, JS, Clojure; Full Spectrum Language - Rust, Red + Red/System; Basic low level embedded - Forth; Higher level static language - Haskel, SML, Java;
But already these start breaking down, particularly static languages are a minefield. Lazy vs eager evaluation, nominal vs structural typing are two major axis of differentiation there. Then for both static and dynamic languages the question of immutable by default vs immutable as an add-on. Further there's a question of do you need 3 languages for system, high level, and full spectrum vs picking one of the two approaches? And even this binning of 5 completely ignores to what degree concurrency should be a first-class concern of the language. Then there's the whole question of VMs and is there value to building your whole ecosystem on a shared VM? And further, now there's the problem of exposing functionality to non-developers. Should we include a tool like Lua or R that targets non-devs, use a tool like Racket or Red with their very explicit support for creating small custom DSLs, or is that a total non issue because the correct solution is to write GUI tools for that market?
Then the bigger question is, to kitchen sink or not. Languages like CL, Scala, and C++ have taken an approach of implement a ton of features and then trust the developers to sort it out. Other languages are laser focused on a single feature and then take it to its extreme, kinda like how Clojure does with immutability or Pony with actors. Yet if we don't embrace multiparadigm languages, we're leaving a ton of research on the table or accepting the zoo of programing languages.
Yeah programming is a shitshow.
This is an even more true argument today (minus the concrete language names). We desperately need such a curated subset.
The problem is of course us the pesky humans with short-sighted feelings we cling to as if our life depends on it. Desired job security is a big offender as well.
The pertinent questions today with regards to a language are:
- Is the runtime fast (if it's interpreted)?
- If it's compiled ahead-of-time, does it produce efficient machine code? (Golang is one example of machine code that can be better, whereas OCaml and Rust are known to produce some seriously fast machine code.)
- Are the runtime's performance characteristics predictable, e.g. latency remains stable under load? (Especially if the runtime has a garbage collector.)
- Does it run on a reasonable amount of platforms? ARM, x86 (32/64 bit), AVR, and a few more? Can it run on embedded devices?
- Does the language/runtime/ecosystem give you good parallel/concurrent abilities? Preemptively scheduled actors and/or green threads is probably the best idea for servers (Erlang / Elixir are good example do due to the underlying BEAM VM). IMO this is hugely important nowadays. Stuff like parallel iterators and parallel map/reduce/join/various-transform operations are other important enablers.
- Does the language help you avoid various bugs? Examples are Rust's borrow checker or many languages' support for sum types.
---
Additionally... why do we even use languages that don't get compiled by GCC or LLVM, at all? I am tired of listening to people's stories about their beautifully simple and genius compiler... which of course can't even do SIMD intrinsics or properly unroll loops. Yeah, "genius" and super simple indeed. /facepalms
Will we ever learn? Gods.
---
I've been around and I can claim that many times people get attached to the language simply because it has good libraries and good community. I fully relate to that and it's the reason why I want to work with Elixir even after 5 years of mostly uninterrupted career with it but... at one point, after many other problems are solved, you inevitably start hitting brick walls and you question your career choices.
I can't claim any strong experience or authority even after almost 20 years in the industry but so far only Rust seems to be a very good all-around language with a dead-serious and dedicated community that's trying to penetrate basically everywhere. The good news is that they might just succeed because the language is that good -- although it too started showing some warts but so far they're bearable.
But I don't see the world putting their differences aside and starting to work on a common cause. It's sadly not how humanity works. :(
But, among the small set of relatively user-friendly distros, sure, it doesn't actually matter that much. A generous reading would take that meaning from it, I think.
I totally agree with the "uselessness" of too many distros but not with your conclusion.
There are multiple reasons for linux not being Mainstream on the desktop.
Windows comes preinstalled on 99% of all non self built laptops/desktops.
Installing an OS is not something the average user does.
It's different and people hate change, unless it's popular
Ubuntu you just use gnome, and I've don't think I've ever actually seen redhat (or any centos) attached to a desktop environment.
They think about the GUI, the command-line programs that ship with it (curl/grep/ls/etc.), the driver support, and the package manager it ships with. These are all trivial abstractions built on deeper facilities.
The farther down you go, the less people understand. Who actually can express the difference between X11 and Wayland that isn't full of weasel words and equivocation? What about mesa, or dbus, or pulseaudio? These are all core components that alter the "flavor" of a desktop Linux system. And yet, all distros basically use the same off-the-shelf components. They only change the higher level GUIs and package managers and stuff.
And people GROSSLY underestimate how much the kernel contributes to the "flavor" of Linux. (I could go on and on about how the GNU GPL directly impacts how drivers are developed for the kernel, or how the small number of core devs are overwhelmed by additions for hardware drivers which move rapidly and break things, and the subsequent vulnerability patches, leaving little time for desktop-focused improvements).
People tend to say things like "the kernel just manages the hardware" or "the kernel is just an interface layer for the hardware" or "MacOS and BSD are the same, only the kernel differs". If only they knew. The kernel is like a seed crystal that defines what can grow outward from there (without massive painful compatibility shims).
Lastly, people OVERestimate the importance of things that are entirely irrelevant to a desktop OS. Just look at how many desktop Linux users are arguing over SystemD vs SysV vs whatever else. Are desktop Linux users really digging into log files, and are annoyed that the log files are now in a binary format? Are desktop Linux users really annoyed that sudo is now part of systemd, instead of a standalone binary that they can swap out? I think the number is low, but the number of desktop Linux users arguing about such things is high.
New users probably shouldn't use a rolling release because updates can cause the install to be unbootable, leaving a bad impression of linux.
I've had a way better experience with desktop Linux when using a managed rolling release like Manjaro.
I’d like to know because I am interested in trying different distros but don’t want to have to keep setting up machines.