In my experience people respond better when you actually explain and provides arguments to why you think “package management is a stupid way to manage applications” and not simply say this blanket statement.
For instance, I believe that *not* having a package system is a stupid way to manage applications because:
- you have to trust many more parties than a single repository;
- you incentivize people to do unsafe things like running downloaded exes from sites;
- now you need to also trust that no one tampered with the websites and have to manually checksum and verify authenticity of each application whereas a good package manager should do this for you;
- Removing applications without package managers is a worse experience.
Now I would love to hear your arguments and, maybe, change my mind.
I have done this many times on HN, and it almost universally results in downvoting.
> Now I would love to hear your arguments and, maybe, change my mind.
Fine, whatever. I don't need the fake internet points. Let me start by saying my complaints here are specifically in regards to the way Linux packages, repos, and managers work to avoid someone from Haiku showing up to tell me I'm wrong:
- Repos are no better than walled gardens except that they are typically maintained by unpaid third parties
- Said unpaid third parties sometimes introduce bugs or arbitrary changes to the software
- You can't install applications to different disks or have multiple versions of the same application
- Copying applications from one computer to another is massively complicated because most package managers never consider this use case at all
- Package managers encourage the kind of interdependency hell and reliance on fixed paths that makes them necessary in the first place
- The proliferation of package formats and package managers has made packaging binaries for Linux an incredible pain in the ass
To address your points specifically:
> - you have to trust many more parties than a single repository;
This is true even in the repo world. You have to trust the developer of the application and the maintainer of the package for that repo at the very least. There is no reason someone cannot curate a repository of software that is not managed by and tied to a package manager and, in fact, there are many of these to choose from.
> - you incentivize people to do unsafe things like running downloaded exes from sites;
Yes, but I think that speaks to a failure of non-mobile OSs to implement proper application sandboxing once the internet became the dominant distribution medium for applications. I also think this threat is given far too much weight in comparison to being constrained in your choice of software.
> - now you need to also trust that no one tampered with the websites and have to manually checksum and verify authenticity of each application whereas a good package manager should do this for you;
Yes. Again, I don't think this is a big deal, especially when compared to restricting my choice in software. The thing I think makes personal computers valuable is that people can install pretty much whatever they want, make their own stuff, and easily pass it around. Package management and repos overcomplicates this.
> - Removing applications without package managers is a worse experience.
Only under "installer/uninstaller" paradigms. "Portable Applications" in Windows, or Application Bundles on Mac or NeXT, or the original Macintosh's single-file applications, or RiscOS AppDirs, or even DOS's buncha-files-ina-folder paradigm make removing an application as simple as deleting a single object. Not to mention they make copying or moving applications, or running them on different media, as trivial as any file operation.
I probably won't change your mind as a lot of this is subjective, equally your arguments do not sway me. Suffice it to say, the Linux community agrees with you, and that is part of the reason I don't want to use Linux.
Jokes aside, I am mostly in a complete agreement with you on it. I'd only add that both approaches should exist, and that the package-people should (learn to?) provide a more portable variant of their software. I don't have much experience with Linux (which some of my comments just might show), but all that "black box magic" that happens behinds the scenes never sat right with me... especially since I have a supernatural ability to hit some edge cases where install fails halfway, and now you can't deinstall nor reinstall, and you're stuck in limbo. (Or finishes, but just won't run on account of something not working in the background, and, well, good luck finding out what exactly and how.)
Sure, portable-style applications on Windows are not immune from not working here and there, but across two decades now - it's mostly been set it and forget it. Different versions of software can usually co-exist, or even the same one (e.g. I specialize one for specific purposes), some even co-run.
I do miss some features of the Linux (file system versatility, mostly), but I've grown to live with it. And while Microsoft is increasingly making Windows unbearable, as long as I can bypass/block their idiotic decisions (Start menu, telemetry, updates) and make them work when I want, and how I want... I guess I'll stick to it.
[[Now, when the hell does Microsoft plan on fixing up the Exporer shell and its antiquated 25X-char path issues? (LONGPATH is enabled, but Explorer still shits itself on such a path. But I try to use DOpus, anyway...).
Also, custom(izable) open/save dialog replacements, I'd kill for those.]]
The great thing about portable applications is that you can still put them in a repo and use software to manage them, you just don't actually have to!
The RPM Package Manager itself is an example of this. It can be configured to be installed to a custom location via the build system, but it has hard-coded paths in some scripts so the package manager would break when it hits this code months after appearing to work correctly.
At the end of the day, it's the same difference to me.
The proliferation of formats is pretty irrefutable; you're meant to put your source code out there and let the distro maintainers worry about it. That's no help of course if you want to ship closed-source binaries, but Linux emphasizing open source goes a little deeper than package managers.
Anyhow, maybe these are counterarguments and maybe it's just "some people who agree with you wrote a package manager." The main thing is the downsides can be fixed, and have been.
If you ask me, it's an incredibly overengineered solution to a problem that is entirely self-inflicted. Still, it might eventually be preferable to Microsoft's current direction with Windows.
I get that snaps are easier for developers because managing versions can be painful. Pushing that pain onto the users isn't the solution.
The difference is there is a set of base windows libraries that you can expect, so if you just use those with your win32 program then it's good. But most dotnet apps don't do this. It's just like using Appimage.
AppImage is pretty great, I wish more projects used it.
It's a garden alright but there is no wall. I've made packages out of my own programs and installed them on my system. Arch Linux literally has a repository of user packages.
> Said unpaid third parties sometimes introduce bugs or arbitrary changes to the software
Yeah. Debian is famous for their patching. Not all distributuons do this though. Arch Linux offers unpatched software.
> You can't install applications to different disks or have multiple versions of the same application
I don't get the multiple disks thing. Personally I want to virtualize disks away into a single magical root file system. Do you mean like portable Windows applications? That's possible, but would require a lot more static linking than distributions are comfortable with.
Windows makes this easy because the application's directory is magically added to the library search path. Applications can just dump all their DLLs into the same folder as the EXE and it will work. They essentially statically link their dynamic libraries. Users end up with tons of duplicated DLLs, distributions don't like that.
Multiple versions of applications and libraries is technically possible, some distributions have attempted this. Most reject this idea because it would increase maintainer workload.
> Copying applications from one computer to another is massively complicated because most package managers never consider this use case at all
This use case is strange to me as well. When I set up a new computer with Linux, I download the applications from the repository.
> Package managers encourage the kind of interdependency hell and reliance on fixed paths that makes them necessary in the first place
Yes. Linux users and distribution maintainers usually look at the operating system like a complete system, not just a support layer for applications. When maintainers package software, they integrate the software's parts into the overall system, every file in its proper place, every link is maintained. I believe this is cultural.
> The proliferation of package formats and package managers has made packaging binaries for Linux an incredible pain in the ass
It's better to just release your software. The community will package and integrate it for you if there's enough demand.
Alternatively, I've found that Arch Linux packages are really easy to create. Just one simple shell script and there's plenty of documentation and examples online. I just ignore all the other distributions.
What I'm saying is, you have to go out of your way and put in a bunch of work to install something if it isn't in the repo. This is not the case on Windows or MacOS (or DOS, or RiscOS, or the original Mac, or NeXT, or basically any desktop operating system that has ever existed except for Linux).
> I don't get the multiple disks thing. Personally I want to virtualize disks away into a single magical root file system.
It's a bad abstraction that hides the true origin of files and causes significant problems if one of those disks ever disappears. In sane desktop operating systems I can run applications off of a USB drive and remove it when I'm done. This is possible in Linux, of course, it's just that absolutely nothing is designed to handle it so you have to put in a ton of work to make it happen.
> but would require a lot more static linking than distributions are comfortable with.
You don't even need static linking, you can use LD_LIBRARY_PATH and a custom startup script in a lot of cases, it's just a lot more work than it should be and fails in weird ways because no one expects this kind of thing. Trust me, I've been doing this for years and years now.
> Windows makes this easy because the application's directory is magically added to the library search path. Applications can just dump all their DLLs into the same folder as the EXE and it will work. They essentially statically link their dynamic libraries. Users end up with tons of duplicated DLLs, distributions don't like that.
Which is silly in my opinion, and also an artifact of Linux Desktop never having the concept of separation between platform and application. This makes Linux great for appliances and shitty for a personal computer. When you have a reliable base system of commonly used libraries a lot of the problems go away, you get security updates for libc and openssl and whatnot, and chances are whatever other DLLs you're using you are the only application on the system using them anyway[0].
> Multiple versions of applications and libraries is technically possible, some distributions have attempted this. Most reject this idea because it would increase maintainer workload.
Yeah, poorly thought out ways of doing things have consequences like that. In sane desktop OSs you don't need an army of unpaid third party maintainers. I've used some of those distributions you're talking about (Gobolinux, for instance) and they never caught on because the community hates the concept.
> This use case is strange to me as well. When I set up a new computer with Linux, I download the applications from the repository.
What about computers not connected to a network? One that I have to drive several miles away from a non-metered network to get to? This is my point, many such use cases are never considered.
> Yes. Linux users and distribution maintainers usually look at the operating system like a complete system, not just a support layer for applications. When maintainers package software, they integrate the software's parts into the overall system, every file in its proper place, every link is maintained. I believe this is cultural.
I agree, and it's why I think Linux will never make a good desktop because all that neat and orderly curation means things will break the second the unpaid third party package maintainer leaves, or a core library makes a non-backwards-compatible ABI change, or someone dared to try and install a library that "conflicts" (usually by being more up to date) with one you already have installed. This is why you only have a choice between crusty-but-stable distros and rolling release distros that break frequently. I can run almost every program available for Windows today on Windows 7, which is nearly 12 years old. I can run applications compiled for Windows 95 on Windows 11 without writing a single line of C or changing a build script.
> It's better to just release your software. The community will package and integrate it for you if there's enough demand.
If it is open source, and if there's a enough demand. I think that's bullshit. I should have the freedom to put any license I want on my software and the user should still be able to have a low-effort install experience. I shouldn't have to kowtow to some unpaid third party package repo for distribution, I should be able to mail my application to you on an SD card. That, to me, is the freedom of personal computing.
> Alternatively, I've found that Arch Linux packages are really easy to create. Just one simple shell script and there's plenty of documentation and examples online. I just ignore all the other distributions.
I don't think I should have to setup finicky build environments and compile software from source to make my own package just to use some goddamned software. I honestly don't know why Linux desktop people think this is a reasonable expectation.
Needless to say, I have a very strong opinion on this point, and you haven't made any arguments I haven't seen before in my 20 years of using Linux. You are not going to change my mind, just as I am not going to change yours, because we have different priorities and culture regarding the tradeoffs of the different methods.
Knowing this, you felt for some reason it was necessary to argue with me, why? The only reason I can think of is that you want to argue for the sake of some imaginary "undecided" reader, as a form of advertisement for Linux. Unfortunately this happens literally every time I mention not liking Linux, hence my initial reluctance to even mention why I don't like Linux. Because another reason I hate the Linux desktop is that its community is full of people who feel the need to engage in performative argumentation.
I didn't see it as an argument, more like a conversation. I wanted to understand your opinions better. Your post mentioned several points I had never thought about before and it was interesting. Certainly made me rethink a few things such as offline software sources. I even agree with you that many of these differences are cultural and those are slow to change.
> The only reason I can think of is that you want to argue for the sake of some imaginary "undecided" reader, as a form of advertisement for Linux.
I don't do that. I'd rather Linux remained an obscure programmer's operating system, actually. I don't really care about the Linux desktop.
You don't even need a startup script to adjust the library search path, ELF binaries have the DT_RUNPATH field for that where '$ORIGIN' refers to the directory containing the executable. Using the -Wl,-rpath,$ORIGIN flag when linking gives you more or less the Windows behavior, just make sure to escape the $ORIGIN appropriately so it is passed as is and not expanded by the shell/make/your build system. And if you want, you can even put libraries in a subdirectory.
At any rate, I would be genuinely curious to hear what specifically you don't like about Linux beyond tautological statements like not liking its paradigms and calling package management "stupid" without any supporting rationale.
I have repeatedly complained about Windows[0] in this thread, and the very second I mention not liking Linux people really seem to want to recommend me Linux distros or ask me to tell them why. I have never seen anyone do this for any reason other than performative argumentation.
> At any rate, I would be genuinely curious to hear what specifically you don't like about Linux beyond tautological statements like not liking its paradigms and calling package management "stupid" without any supporting rationale.
I don't even need supporting rationale for an opinion. I could say I don't like any of the distro logos and that would still be a perfectly valid reason not to want to use Linux. At least in a sane world it would, but Linux users apparently have some bug up their ass about needing everyone to agree with them about how great it is.
[0] With great hostility and in the context of expecting it to eventually drive me to use Linux
It's not perfectly valid if the purpose is to have a discussion that's meaningful to other people who don't have your exact set of preferences and pecadilloes. Saying you don't like a logo isn't a useful piece of information because for 99% of people that's not going to be a reason to use or not use a piece of software. Either you don't realize that or you're being willfully combative for its own sake.
I don't see how what other people find meaningful has any bearing at all on whether or not I want to run Linux. Remember, before everyone crawled out of the woodwork to talk about Linux in this 'fuck Windows 11' thread I only said this:
> Don't get me wrong, I have plenty to complain about in Linux too which is why I'm still on Windows
An offhand remark about not liking Linux is apparently an open invitation for every evangelical Linux desktop asshole to berate me until I give them arguments to attack.
> Saying you don't like a logo isn't a useful piece of information because for 99% of people that's not going to be a reason to use or not use a piece of software.
By that reasoning everyone talking about privacy and security in regards to their choice of Linux should shut the hell up too because the market is pretty clear it doesn't care.
This whole "blah blah blah other people blah blah blah 99% blah blah" is what I mean by performative argumentation. It isn't about my preferences, which are really all that matters when it comes to what I should choose to run, it's about putting on a show for other people, evangelising and advertising your favorite OS.
I happen to disagree with that opinion. However, it makes no difference to me whether you run Linux or Windows (or CP/M, RSX-11 or AmigaOS for that matter) as your daily driver.
It's both rude and obnoxious to pound on you for your unpopular opinion, especially since that's based solely on your personal preferences and not objective facts.
As for the downvotes, they are just shorthand for "I disagree with you but don't feel like putting the time and effort into rebutting your argument."
And the obverse (WRT upvotes) is also the case.
tl;dr: I think you're wrong and disagree wholeheartedly. That said, I'm glad you chose to express yourself and hope you continue to do so in the future.
While I disagree strongly with GP, your argument seems to completely miss their point. GP expressed her opinion as to the utility/viability of Linux for their use case.
We both disagree with GP's arguments, but even we almost certainly don't share the same "set of preferences and pecadilloes."
Mostly, I think it's pretty closed-minded to denigrate someone who expresses an opinion (unrelated to facts presented in an objective reality).
Give the GP a break. If their "preferences and pecadilloes" don't match yours, why is that any skin off your nose? As such, why do you feel it necessary to belittle the opinion of some rando on the 'net?
I'll say it again just to make sure you understand that it's your tone and attitude that disturbs me and not the content of your argument: widespread use of package managers have completely changed Linux for the better IMHO. What's more, I find the arguments provided by GP to be both weak and unpersuasive.
You're right, that specifically is not skin off my nose or anyone else's. By the same token that you're not disagreeing with the content of my argument, I'm not disagreeing with GP's[0] opinion per se, but just pointing out that the hostility they're getting is a self-fulfilling prophecy brought about by the way they're expressing it. I'm not belittling their opinion, I'm belittling the fact that they are coming to this discussion with a position of 'Linux is bad because I don't like it for Reasons™ and if you disagree with that you're just another hater I don't have to explain myself to'. It's lame and unproductive and combative and not a quality contribution.
[0] Sidenote: I've never seen the term "GP" before - clearly you're referencing u/AnIdiotOnTheNet in some fashion similar to "OP" but would be curious to know what exactly that means.
> I'm belittling the fact that they are coming to this discussion with a position of 'Linux is bad because I don't like it for Reasons™ and if you disagree with that you're just another hater I don't have to explain myself to'.
I didn't come in to this thread to argue about things I don't like about Linux or convince anyone that my unpopular opinions are right [0]. I offhandedly mentioned I didn't like Linux, and then people came out of the woodwork to ask me why. As I've mentioned I've been through this many, many times and the result is always the same: they ask me why, then they engage in performative argumentation with my reasoning. They don't care why I don't use Linux and aren't interested in changing my mind, it's all a performance to sway others and I'm pretty damned sick of it.
[0] Which is not to say I haven't done this in other threads where it is more on topic.
Except they did explain[0] themselves. Granted their arguments were unpersuasive (at least to me), but claiming that they're not at least attempting to justify their assertions is flat wrong.
>[0] Sidenote: I've never seen the term "GP" before - clearly you're referencing u/AnIdiotOnTheNet in some fashion similar to "OP" but would be curious to know what exactly that means.
"AnIdiotOnTheNet" was spot on in their reply about this[1] to you. I guess using "grand" for previous up-levels of comments isn't as pervasive as I thought. Apologies for any confusion.
While on Linux I type in my terminal:
paru -S <software name>
and install it. If the software for some reason is not packaged (very rare, since with the AUR repositories of ArchLinux there is everything) it's trivial to make a package and publish it so other people that have to use the same software can install it.On Windows each time I install the system from scratch I have to spend a day downloading and installing all the programs, on Linux I can install all the software that I need by simply launching a single one line command.
Or I could just keep using Windows where I don't have to do anything so silly.
Having to setup build environments and compile applications from source absolutely takes significantly more time than simply downloading and running a binary.
Again: I didn't come in to this thread to complain about Linux, I came here to complain about Windows. I offhandedly mention not liking Linux and people practically begged me to complain further. If you don't like it, talk to them.
Edit: I realize now that it is possible you mean make AppImages for my own programs, not other people's. In which case: A) I rarely release on Linux for other reasons but B) when I do, I release static portable executables.
Also, HN points are meaningless. It's better than reddit but people will still downvote good posts for the stupidest of reasons. It's better to just speak your mind and ignore the "consequences", if you can even call downvotes that.
Only if it has been compiled and/or packaged for such a use by someone, which is rare. The problem isn't technical, it is cultural. I don't know why I keep having to repeat this point.
One of the issues with Linux is that it is no more "an operating system" than an automobile engine is a car; myriad operating systems exist which contain the component named "Linux", and most of them are designed to cater either to people who love getting into all the possible customisations or to people who share most of the same preferences as the designer(s).
The extreme customisability of most operating systems which include the Linux heart (kernel), tends to lead to inconsistent software behaviours and user interfaces. For instance, one OS with Linux might have _most_ applications respond to Ctrl-Q for "quit/exit", while a few stubbornly insist on Alt-F4, and sparse few use something else entirely. One result of this is that people's choice of a particular Linux-based OS and particular options (KDE vs. Gnome, Emacs vs. vi, ported vs native to their OS, and thousands more…) can also become a holy matter dear to their hearts.
It's perfectly reasonable for anyone to turned off by or annoyed by aspects of a system that clash with their familiarity or use-case. I hope you get more gentle responses in the future. Cheers.
No judgment, just bemusement. I will always choose the freedom to configure over a set-in-stone approach.
I also strongly disagree with the "limitless variations". Most Linux distros are just another distro (usually Ubuntu) pre-bundled with a specific set of packages. Almost all of them use the same shells, the same application distribution model, and roughly the same set of disparately developed software. The differences are largely cosmetic.
> I will always choose the freedom to configure over a set-in-stone approach.
Ironically, this is why I don't like package management and repos: I like to have complete freedom over what software I install and that model is restrictive. One of the things I like about Windows is that if I go to some rando's site where they've written some niche application, I have nearly 100% certainty that the executable I download from them will work without me doing anything special. In Linux I usually end up having to go through the hassle of creating a whole build environment (in a container because I'm not insane) to compile their github repo... after I hunt down and compile their dependencies that also weren't in my distro's repo of course.