MSI on Windows is completely fucked, PKG on Mac has a few footguns, but at least they're universal, decades-old standards supported by mature tooling. You release an MSI/PKG, and you're done. Works on every Windows/Mac system, no issues.
On Linux, an OS with 3% market share, there are more competing standards to count: Deb, RPM, snap, FlatPak, AUR, AppImage and probably a dozen other semi-popular ones. Every individual user has their opinion (and they'll voice it!) as to which standard is the best. At best, this leads to God knows how many man-hours of duplicated work packaging and QAing. At worst, it leads to the dev abandoning the thought of Linux altogether.
Linux on Desktop simply can't move forward by continued bike-shedding over frankly irrelevant details. Even if the only rationale for a standard is "Because Mike Shuttleworth said so, and he got a phone call from Mandela in space", that's a massive improvement over the current status quo.
Maybe true for proprietary software, but for FLOSS it is a non issue once your software has traction and gets picked up by distributions. I wrote a piece of open source in ~2002 and it is still found in pretty much all distros AND I never spend a minute in pain over packaging difficulties.
IMHO, the basic package managers work REALLY well for FLOSS. The gave me a peak into the AppStore/PlayStore(tm) experience (but then without all the spyware), waaaaay before they even existed.
At the same time snap packages have serious downsides for end users.
AUR is explicitly a community-driven effort. The others are packing standards, some of which (like DEB and RPM) are also used in community-driven efforts. Debian and RedHat derivatives have repositories that use DEB and RPM, respectively. There's not a lot of bike-shedding, here. Availability of functional software is a pretty big feature of Linux distributions.
And there is a big difference between those community efforts and the likes of Snap, AppImage, and FlatPack, which are developer-centric. User preferences on software distribution aren't always or even usually based on irrelvent arguments, but fundamental ones. The community efforts centralize dealing with compatibility and, to an extent, security with community standards, while the developer-centric model largely leaves this work to software developers alone. This is a meaningful distinction.
DEB vs RPM is an ancient debate, each comes with its pros and cons. Flatpak and Snap try to solve a different problem (sandboxing + dependency hell vs stable system-wide dependencies).
MacOS has PKG, but most software I've seen actually comes through DMG images or ZIP files. Windows has MSI, which, if you use it correctly, actually elegantly solves most problems; the features that were added to allow developers to bypass the declarative installation process are what usually breaks MSI installers.
But then modern Windows now features has packages installed through .appx, .appxbundle, .msix, .msixbundle, and plain old .exe. Windows Mobile (based on Windows CE) had .cab; Windows Phone 8/8.1 (based on Windows 8) had .xap; Windows 10 Mobile had .appx. Now Windows 11 also supports .apk files from Android!
In the end, the package method doesn't matter. Users don't care where the package comes from, they just want to install the application and run it. Deb, Flatpak, RPM and Snap all work fine from tools like Discover or GNOME Software; it really doesn't matter to normal users what kind of packaging system they use.
AppImage and Flatpak are fine, and AppImage is the first choice amongst this "everything included" bundle formats.
However, Ubuntu is forcing snaps as a power move. Both the software, and the treatment from Canonical is off-putting a lot of enthusiasts right now.
I know what I’m saying can be regarded as “+1 different standards”, but Nix is the only truly novel approach to package management that can reliably install a huge-ass behemoth package group like Gnome, install Plasma next to it and remove both without a single garbage file laying around afterwards.
I think we really should embrace this uniquely good solution.
Just ship an ELF binary in an archive. Include any files and libraries you need. Compile against the oldest glibc found in any system you care about supporting. That's all you need.
[0] https://download-installer.cdn.mozilla.net/pub/firefox/relea...
The sooner we all begin treating Ubuntu and Red Hat Enterprise Linux as separate Operating Systems the sooner we can all move on from the "single standard" and "Linux on Desktop" debates. As an application vendor I always find it amusing when customers ask if we support Linux. My response is no, we don't support Linux but we do support Ubuntu 18+ and RHEL 8. Linux distros are so wildly different these days, not just in software but in ideologies, that this distinction is important, and there's nothing wrong with that.
Yeah, the year of the Linux desktop isn't coming, but it's not 2001 either. We've standardised onto a few technologies pretty much everyone adopt except the ones that want to be different: systemd, Flatpak being the most used cross-distro system, pulseaudio (and pipewire offers a 100%-compatible shim for it), dbus, NetworkManager and now finally with GNOME 42/libadwaita we can have even standardised UI design.
And like many other things frontend, things move at a pretty rapid pace. Ubuntu 18 is ancient, might be good for a server, but it's not a good idea to use that as a metric for where the Linux desktop is.
This is why my daily driver isn't Ubuntu (or Debain, because I also hate apt - it also sucks).
How to Fix Firefox Crashes on Ubuntu 21.10+ https://www.mikekasberg.com/blog/2022/03/21/how-to-fix-firef...
> ..The snap version of Firefox currently suffers from several problems that can lead to a bad user experience, including crashes.
Their recommendation is to backup everything (bookmarks, settings), remove the snap, and install via apt or self-contained zip.
I tried using the snap, I really gave it an honest attempt, and it stinks. The final straw was when removing and reinstalling the snap deleted my Firefox profile. That was really unacceptable. Removing Firefox via apt doesn't wipe out ~/.mozilla
Snapd is now removed and pinned with negative priority on my Ubuntu systems so it will never be installed.
I'd like to find a PPA that builds vanilla Firefox but so far I've only come across ESR and Beta.
I've considered switching to Chromium over this nonsense though I'll try running tarball Firefox first, I didn't realize it could update itself. Maybe Librewolf is an option too.
I have to say that coming from Arch, it's a very Windowsy experience: lots of software has to be installed by searching for "install XYZ on Ubuntu", and following some instructions that involve scary-looking command lines that mess with cryptographic keys and add repos to my configuration, or, for a real Windows experience, install from a deb and hope you remember where you got it from when it needs an update.
I know the AUR is no more secure than that, but at least if someone makes a bogus package full of evil, it'll be flagged on that platform. If I install whatever from some random third-party repo, how will I ever know if it's gone bad?
Also, PKGBUILDs are just so easy.
Ironically this is exactly the problem that snaps solve; what you describe is exactly why others complain about it.
>scary-looking command lines that mess with cryptographic keys
>for a real Windows experience, install from a deb and hope you remember where you got it from when it needs an update
Yeah I guess you didn't use Windows recently cause that never happens there
Strongly eyeing NixOS and patiently awaiting real work experience from a co-worker who already did the plunge.
In case you want some inspiration or to take an existing config and run, feel free to take a peek at or use mine: https://github.com/jakehamilton/config
The nix language is indigestible for me, so I eye Guix System but so far Guix does not have things I like/need so still on NixOS in a calm state: systems updated, automated, reproducible without thinking and babysitting them continuously.
I use fedora since long time and so far is quite stable without any non-sense
Honestly after that I never tried it again.
Currently running manjaro but really wanna give fedora a try cos seems people who use it swear by it.
In the same vein I installed openSuse Thumbleweed and Fedora; as I'm looking for a way out. I hope Fedora allows me to install all opensource packages without Flatpack or I also ditch them. BTW Fedora's F35 installer has a horrible partition configurator, worst experience in two decades of installing Linux.
But apparently I'm some bastard n00b that does not care about security enough! Can you imagine trying to access your files from your editor like you've been doing for decades? This guy doesn't get it!
Apparently flatpak et al have the same problems.
In my case, I'm not sure where to switch. I want easy of use, I don't really enjoy meddling with the OS. I use Xubuntu because it works better out of the box for me, but if I have to deal with this, I'm not interested.
Then for apps that have dotfile-type directories where you can put config files and other stuff, those simply exist in app-specific directories under .var in your home directory, so they're not difficult to find either.
firefox breaks if you overwrite its files. therefore installing "normall" via dpkg is bad while firefox is in use (especially on a multi user system). running via a container ensures that the existing running processes don't break while allowing you to upgrade and have any new instance get the new version.
there are reasons to dislike snap, but the usage of containers (even as simply a packaging mechanism, not any form of isolation) can improve user experience.
I also feels more confident trying new applications with snap. I know I can easily install different versions and uninstall them without breaking the system.
https://bugs.launchpad.net/ubuntu/+source/firefox/+bug/19620...
> This was ultimately Mozilla's decision as part of the redistribution agreement. Mozilla could have just pulled it from being redistributed at all. This was the only way they were willing to allow Firefox to be redistributed as part of Ubuntu.
which seems at least odd (if not contradictory), given that Mozilla and Linux Mint have partnered to distribute Firefox as deb package, compare https://news.ycombinator.com/item?id=30777066 .
This is what made me switch off ubuntu.
When Ubuntu dropped 32-bit support, I relatively easily switched my old 32-bit netbook from Ubuntu to Debian (by changing the sources and some manual fiddling with packages). OTOH, I'm using Fedora on my work computer, just for the fun of it, and I'm really satisfied with it.
Any problems I have had have been with my desktop machine and I blame Nvidia 100%.
So far they are still kind of corporate free in the spirit of doing a desktop distribution keeping things as a normal or dev user would expect without pushing stupid changes in order to advance a corporate agenda.
Also, they are currently based on Ubuntu that they debloat but there is a debian based variant (LMDE) that show future perspectives if Ubuntu become not really usable anymore as a base in the future.
Or use official PPAs for all the snaps that Canonical is forcing on users.
Example 1, Fedora ships with zram swap by default instead of allocating a separate swap partition. Basically it's compressed ram, good enough because when you start to swap your system is already on its knees, but orders of magnitude faster than reading from disk, and you don't need to allocate a separate partition.
Example 2, On Fedora when you format with / with btrfs, it'll enable a really fast zstd (level 1) compression on your volumes. It might save you a few gigabytes, it consumes a imperceptible amount of CPU time, and reduces the write amplification effects on SSDs and NVMe.
Fedora gives you these out of the box, while on Arch you have to be aware of them, and I bet you don't have any of these free wins enabled on your system.
I love Arch Linux, but Fedora is IMO a better desktop experience.
All of that said, snaps are unfortunately not a good solution. The implementation sucks, the tooling sucks, the distribution channels suck. Ubuntu Core is an abomination. The lack of ability to control updates or publish a private repository are basically unforgivable and obvious manipulations of the platform. I don't think it's possible to say too many bad things about how bad the ecosystem is generally and how poorly Canonical have behaved.
The whole situation honestly sucks, because there there really is a need for a comprehensive and open solution for the challenges that the "snap" ecosystem is trying to address. All it's currently managing to do is get me off of Ubuntu as quickly as possible, which is probably not the goal.
Once Windows installed updates against their users' preference I switched my main desktop to Linux – this was a significant amount of work but has saved me a lot of frustration over the past years. Similarly, once I experienced UI stutter in Gnome and noticed that it moved towards Javascript, I switched to i3. Again, huge setup cost (e.g. I had to implement alt-tab behaviour myself), but things ran smoothly since.
The FLOSS world works with
- devs :: who write and publish code without the need to support any specific distro, packaging etc, many also package for their own favorite distro but that's a mere choice, many others just manually build their own code to have is hyper-fresh;
- packagers :: who package "upstream" code, some are distro core developers who package system things, others more or less casual packagers who package various software they use/need/like. They all provide patches as needed, ideas, well done bugreports to devs, they are not "a burden" but the core of the model, the ones who provide quality testing and reporting to devs, something no end-users do without a tremendous background noise, something no commercial software devs can get, the key to hi quality of FLOSS;
- generic users :: who profit from a complete distro, the one that fist their need most, offering casual bugreports, ideas, background noise as any casual user do, but filtered by distro community itself and distro packager the best kind of "data lake" that matched to packages form the best kind of automated expert system;
"modern" app-only packages serve a sole purpose: cut the packagers, cut off the distro variety pushing distros to mere cargo ship of apps, well separating "code producer" to "customers", something harmful for FLOSS but vital for commerce, the sole way a proprietary software house to stay afloat without the need to give code to a community, without the need of a community that help, of course, but also demand and pretend useful features and not anti-users lock-in.
IMVHO FSF should write a formal statements: supporting those limited and limiting (they can't work at system level) package systems means supporting commercial crap against FLOSS so distro who choose them must be considered Troy Horses in the FLOSS land. Unfortunately FSF receive too many funds by some interested party so I doubt that happen and that's another good reason to discuss the actual FLOSS sorry state reviving classic models from usenet to email-based development, modernized in UI/frontends terms for young devs, with modern video-tutorials etc, but pushed as much as possible to teach people the FLOSS model not the commercial model in disguise.
In short: what are you talking about?
The process: no developer can interact with a vast community, there is too much noise. No developer can prune bad bugreports, poorly formed questions etc. The multi-level community can. No developer can alone design the best software, good interactions with other people expert enough to interact well can.
With the classic FLOSS model:
- developers just concentrate on their code, there is no noisy community pushing messages to them, there is no issues about packaging, distro-specific stuff etc to care about;
- packagers just grab code and package it for a distro they know so an easier task for them than for the developer that might know just another distro/OS;
- community interact users-with-users and users-with-packagers and packagers-with-packagers that's keep the noise low enough to all parties profit and makes ideas flow from a cohort to another, processed and adjusted at any passage.
The outcome is: all users get help, at a level no other system can give, all face easier tasks than others development models, developers get the best feedback possible, all involved interacts each others creating new ideas, resolving issues, improving.
In the "direct" model: devs do not care of distros, they give something to anyone, as a result community is so noisy that they can't get good feedback, patches, bugreports, they get some, but mixed with countless other bad to a point no one can keep up the information flow. Developers do not care much about deps they use, so, as you can easily see in the wild, most "packages" are full of old vulnerabilities no one care about. Various cohort of people involved are "isolated" between each other. There is no real community just a mechanical hierarchy unable to improve itself BUT able to be steered by big players who decide founding a developer or another what ideas will grow and what will be pushed into oblivion.
It's essentially the very same thing you see in our society, from the classic internet, with usenet, minitel, mailing lists and the modern platform era. In the modern era there are flock of sheep and some shepherd, in the classic era there were peoples, peer between peers. In the classic era innovation was a thing, nowadays nothing really new born and most things fall apart.
> What's the difference between an RPM package and a Flatpak package?
The level of crappiness. An RPM can't normally work alone, so for instance it should not run an old openssl vulnerable version just because the developer of a small chat client have no time nor interest to update it. A flatpak can and normally do: see actual repos, classic packaging systems tend to have all deps up to date, flatpak, appimages, snap tend to be abandonware from the day 0.
Also an rpm can package a kernel, the modern ones can't, but still need a distro to run. So the classic systems are complete, the new one can't exists alone, can't form a system.
They have exactly NO REASON to exists from the FLOSS or the end user point of view.
> In short: what are you talking about?
About the reality, just look around and see. If you can't see there are two options: you are inexperienced enough to not notice anything, perhaps inhabited to the commercial model "go to a website, download a program, install it" single app per single app with the system pre-installed by someone else or rarely installed by hand in a day-long manual and painful process. Or you have commercial interests. I see no other options.
Try to see NixOS or Arch repo, then see Snap, Flatpak, AppImage repos and compare them: what about the real freshness of them? What about the completeness and options? What's the outcome? Do you want a containerized chat client 158Mb instead of 2.5Mb due do the gazillion of copies of multiple version of same deps that when you exchange a file demand a long process to being able to see it with another application? Or do you prefer have no files at all, all on someone else computer, like Google Drive etc and you just run a WebVM "the endpoint must be just a dumb terminal of modern cloud-mainframe"? Because that's is.
https://www.ghacks.net/2022/03/17/each-firefox-download-has-...
I understand why they do it - as browsers have become kitchen sinks, their API surface has become enormous. But at the same time, the stuff you actually want to read on the web is really getting few and far between, making constant x GiB browser updates uneconomical from an information theory standpoint, so to speak. Especially with FF updates in the habit to require restarts (why?) at the worst possible points in time for me.
One year it meant we didn't save enough grain and our goats had an out of season extra birth, it got so cold so quick that the mothers died and we were only able to save one baby. The stew we ate through that sad, hard, cold winter was bitter... emotionally... and because the baby goats were so lean.
Something that kept us going was Pachintix being able to very slowly render old Sierra games to a tube oscilloscope that was for timing engines in the 50s that I adapted to render the terminal. We would all be so thrilled when we could enter our just barely two commands every day so Buck Rodgers could escape that alien night club and tell some jokes about Star Trek. To fill the time at night, I would regale my children with tales of the old shows. How one time Data started dreaming and cut Troi up like a cake but it turned out it was all fine and I forgot why. To think, all this difficult bliss was started by just how much it sucked to use Snap.
Hopefully soon I'll move off Ubuntu to greener pastures. Fedora Silverlight seems particularly intriguing.
"Pay your maintainers" should become the norm to all users of FLOSS. We must lobby our bosses to make regular donations to maintainers of the FOSS software used by the company. That's a purely rational business decision, not an ideological one.
Firefox on most other distro (debian based or otherwise) can be installed with the proper system package manager.
Additionally Mozilla offers a flatpak version of Firefox which I strongly prefer over snap.
It's just Canonical's disdain to anything not homegrown that's behind this move.
They are committed to continue distributing Firefox as a .deb package, following upstream as closely as possible.