4 ms·
I know this is a controversial opinion, some would strongly disagree with me, maybe most would consider me downright wrong. But as a system designer I always th
by gnulinux 4y ago
I know this is a controversial opinion, some would strongly disagree with me, maybe most would consider me downright wrong. But as a system designer I always thoughts (by always, I mean last ~5 years since I've been thinking about this) the misery we experience with C/C++ package management is an OS problem, not a language problem. The fact that some languages roll their own package manager like pip, npm, cargo etc doesn't change this for me at all. pip, npm, cargo are symptoms of OSs failing to ship dependencies in a sane way.
Ultimately I want my software to be shipped by my OS's package manager like pacman, apt, nix, or flatpak etc. The fact that I can go ahead and install dependencies in pip, npm is an implementation detail while I'm working with the code. The entire linux ecosystem should have been designed in the first place like nix, AppImage or flatpak from day 0 and going to the "shared libraries" route was simply a bug. We thought it was ok, but we quickly saw it was not ok and we should have made the observation that it's not working and switched but we didn't. Like nix does, when there are common dependencies between apps you can still optimize and install them once, but each app should define its own dependency and that version alone should be allowed to use so that a library upgrade doesn't break anything.
Unfortunately, package management is an utter mess today and I no longer have any appetite to use things like `pacman` or `apt` unless absolutely necessary. And this is not even just the fault of archlinux or Debian. Case in point, MuseScore (an app I use every day to write music) published MuseScore 4 over MuseScore 3. The fact is, MS 4 is much better than MS 3, but some workflows are different and it's not in complete future parity with MS 3 (some things they decided not to implement). Now, I want to use MS 4 and I do use MS 4 for most things, but for certain things I still absolutely need MS 3. By "absolutely": I mean for some compositions MS 4 is a dealbreaker and MS 3 is the correct tool. But most other compositions MS 4 is the superior and correct tool. But when they published MS 4 pacman immediately made the package `musescore` point MS 4 with no option to install MS 3. They're two entirely different apps. Solution? Just download the .AppImage from website and call it a day. It would have been much better if `pacman` serves MS4.pacman_exe and I click on it and it opens MS4. Then, it also optionally serves MS3.pacman_exe, I click on it and that also works. If I desire I click on MS3.6.2.alpha43432.pacman_exe and use that specific version, with every library fixed. But this is currently impossible since each version can potentially need different dependencies etc so .AppImage is the only way.
- adra 4y agoSorry for only reading a bit at t he top, but languages often need their own library installers not because (all) OSes are failing the package deployment, but that some OSes that the language targets doesn't. It just takes one bad OS (though really it's windows/OSX) that can't have good package managers. Why do chocolaty / brew exist? Because the os vendors aren't interested in propagating software that's not making them money, direct or no.
- DeathArrow 4y agoOn Windows the normal install method is by downloading an installer and executing it, almost nobody uses app stores or package managers. And it works great.
- Tanoc 4y agoI know this is going to sound like a stupid question, but does MuseScore run versioning control? Like can you use $sudo apt-get install musescore=4_0_2 as you can with other packages like Tenacity or Dolphin?
- gnulinux 4y agoSorry if it wasn't clear, this approach doesn't work since I need both versions. Besides, old versions are ultimately removed from the cache and rendered uninstallable by `pacman`. So, no that wouldn't work.
- mixmastamyk 4y agoThere wasn't enough disk space to do deliver statically-linked-like apps by default in the 90s.; I think around the time Debian started I had a 386DX40 and a 1 or 2GB hard disk. Traditional distros are able to install the same apps side-by-side, such as python2 and python3, if they put their mind to it. It is just a bit clumsy. Sounds like they didn't allow for that with your app. That's a shame, I guess you could ask or cough up a donation to help? I generally just wait for things to get packaged in the regular distro, but it is nice to have choices.
- nikau 4y ago