I am currently using Linux Mint (after a long stint of using MX Linux) after learning it handles Nvidia graphics cards flawlessly, which I am grateful for. Whatever grief I have given Ubuntu in the past, I take it back because when they make something work, it is solid.
Anyways, like most distros these days, Flatpaks show up alongside native packages in the package manager / app store. I used to have a bias towards getting the natively packed version, but these days, I am choosing Flatpaks, precisely because I know they will be the latest version.
This includes Blender, Cura, Prusaslicer, and just now QBittorrent. I know this is probably dumb, but I choose the version based on which has the nicer icon.
I don’t like flatpak or snap or any of them. System libraries exist for good reason, just because your computer is stupid fast and you have enough disk for the library of Congress a couple times over doesn’t mean you should run a veritable copy of your whole operating system for each program. IMO it’s lazy.
Sandboxing is a different thing though, if that’s the purpose then it’s doing it right.
I have a ton of flatpaks which means packages are shared between them, so no it’s not lazy or a copy of the whole system. It makes a ton of sense for stability.
Updates are diff’s so downloading and updating is fast. Not entire packages.
Making every package work with only a certain version of a dependency and hoping it is stable doesn’t make a lot of sense.
You’ve just moved the packaging problem from distributions to app developers.
The reason you have issues is historically app developers weren’t interested in packaging their application so distributions would figure it out.
If app developers want to package deb, rpm, etc… packages it would also solve the problem.
Sure. Except you gain universal compatibility for all distros that have flatpak and aren’t building all the different package formats. Makes it much more attractive for actual developers to package since it’s only done once.
There’s no right answer here, but there are definite benefits.
I’ve had many little issues since I moved to Linux years ago, most of which would never have been an issue if flatpaks were there at the time. My experience has been better with them.
Makes it much more attractive for actual developers to package since it’s only done once.
I maintain a few apps that are included into some distributions with no participation from my side apart from tagging what I consider releases in my git repo. How is doing something only once is more attractive as not doing it at all?
Because you can make sure it was done right. You don’t have to worry about bugs or other issues being the result of faulty packaging if you’re the one doing the packaging. Plus It makes reproducing bugs easier when everyone’s using the same package, and declaring the flatpak as the official package makes it much more likely that people will use the flatpak.
You know you can have many versions of a library on your system at once, right?
As long as they don’t cause conflicts. You know dependency hell is a thing right? The reason flatpaks were thought up in the first place? Right?
Nice out of date dependencies with those lovely security vulnerabilities!
Touché
Developers shouldn’t be out of date, but yes.
That got so spicy so fast.
Besides that it’s only partially true (unless we speak Nix systems) That’s also not the point of it. It’s more about having runtime environment that an app was built against and tested with.
Yeah, that’s why Arch is almost the only distro that keeps everything installed natively. All other distros either have a troublesome workaround or only support flatpaks.
Rolling release just keeps everyone on the same pace. Yes, they break sometimes, but on the long run it just works.
As a long time Arch user, it’s not perfect, but it is perfect for me.
I see your point, and I agree. No need to spend resources just because we have them.
Sandboxing is definitely a benefit, but alas as I am learning I have no control of it’s permissions, so that can potentially go wrong.
You can manage Flatpak permissions with Flatseal.
Great! I knew it was possible. That is one less argument against it.
Flatseal is super easy for anyone with a tech background to use. You can very quickly expand or reduce the access an app has to your system. Even below what the app comes with by default.
I do kinda wish the guis for installing flatpak apps were more forthcoming with the permissions, and possibly integrated some of the features of flatseal so you could modify the permission set before installing.
It does seem pretty intuitive.
Honestly I just sometimes want the app to see a file outside of Downloads.
I like them for the opposite reason. I’m still quite new to Linux, so I’m figuring out which software is best for me. I set up my server with Xubuntu and installed everything through Apt. I uninstalled a lot of software, but inevitably missed some things like libraries and config files.
Using Flatpak seems to keep track of everything, so uninstalling gets rid of everything that I would otherwise miss.
If it’s doing what it says on the tin, Flatpak is making my life much easier :)
Trying to purge orphan dependencies is absolutely annoying. Talk about wasting space!
For a long time now, if a flatpack is available and maintained, I use it.
Same. Better stability, frequent updates, no building from aur, and permission management with flat seal are great.
If you use mostly flatpaks they share packages which means they don’t take nearly as much space overall as single packages do.
Updates with only downloading diff’s is fast and works well.
I also like them just for the sake of tidiness. Some apps like Steam tend to make a big mess of dependencies all over the place, so it’s nice to have that all contained in one place. It does take up more space but I have a reasonably big hard drive so it’s kind of negligible for me.
I briefly considered getting into Fedora Silverblue, and I still may for this very purpose.
I’m getting into OpenSUSE Aeon (MicroOS desktop) and it’s been really great with Flatpaks and Distrobox. You should consider that one too :)
Sounds dope. I love OpenSuse. I almost made it my main OS, but got kicked in the ass installing graphics drivers and the fixes were many and too annoying.
MicroOS. Never head of that. I am excited now.
I had a reasonably good time getting NVIDIA drivers installed. I found the instructions here. I installed the newest drivers using the following command + a reboot.
transactional-update -i pkg in nvidia-driver-G06-kmp-default nvidia-video-G06 nvidia-gl-G06 nvidia-compute-G06 nvidia-utils-G06 nvidia-compute-utils-G06
The OpenSUSE guide doesn’t include compute-utils, which is needed if you want to run nvidia-smi. I haven’t tried installing a full CUDA SDK, so ymmv there.I think I just need to follow the guides more closely. I must have missed something.
If you switch everything you can to flatpaks and use distrobox for other apps you’re pretty close (better than toolbox and recommend layering it if you do switch to Silverblue).
Anything can be layered onto Silverblue if it can’t be installed another way. I’ve found it works well.
Quite the opposite, after fiddling with it for six months I fully uninstalled flatpak and deleted the directory to get away from the fact it kept downloading copies of nvidia drivers when I had moved to an AMD a year ago, and the drivers were locked from being manually removed even after I uninstalled all flatpak packages.
I’m an Arch user, trust me when I say I read the documentation.
After wasting hours on it I nuked it.
Damn, alright. I am starting to get the hate for it. I think I am blinded by the sheer convenience of it. Also, I am probably sleeping on more up to date repositories that gets me what I want without using flatpaks.
Linux Mint has been babying me though. I love the comfort, and cinnamon is everything I need in a DE. I will need to see what I can do.
Mint is an excellent starting point, and there’s good reasons to use flatpaks. If it works for you use it until it doesn’t.
I have been using Linux exclusively for maybe 8 years now? I just never dived to deeply into power user territory. I can get around okay, and am comfortable with the terminal and all that, I was just never interested in spending too much time trying to customize everything.
For a period I was obsessed with alternative operating systems. I read that Haiku is basically ready for evey day use. I wonder how Redox is coming along…
Anyways, I hope flatpaks keep working.
I accept that I’m in the minority on these things, but I value simplicity really highly, and I mean “simple” as a very specific concept that’s different from “easy”. It can be harder to resolve library dependencies on a system where everything is installed using the native package manager and common file systems, but nothing is as “simple” as ELF binaries linking to .so files. Nested directories branching off of
/
is “simpler” than containers.Do I have any practical reason for preferring things this way? Not really. There are some ancillary benefits that come from the fact that I’m old and I already know how to do more or less anything I need to do on a Unix system, and if you tell me I need to use flatseal or whatever, I’d rather just use users and groups and tools that have been fine for me for 25 years. But that’s not really why I like things this way. I have no issue with embracing change when it otherwise appeals to me --I happily try new languages and tools and technology stacks all the time. What it really is is that it appeals to the part of my brain that just wants to have a nice orderly universe that fits into a smaller set of conceptual boxes. I have a conceptual box for how my OS runs software, and filling that box with lots of other smaller little different boxes for flatpack and pyenv and whatever feels worse to me.
If they solved practical problems that I needed help solving, that would be fine. I have no problem adopting something new that improves my life and then complaining about all the ways I wish they’d done it better. But this just isn’t really a problem I have ever really needed much help with. I’ve used many Unix systems and Linux distributions as my full-time daily use systems since about 1998, and I’ve never really had to spend much effort on dependency resolution. I’ve never been hacked because I gave some software permissions it wouldn’t have had in a sandbox. I don’t think those problems aren’t real, and if solving them for other people is a positive, then go nuts. I’m just saying that for me, they’re not upsides I really want to pay anything for, and the complexity costs are higher than whatever that threshold is for me.
Your knowledge of Unix systems is incredibly powerful, and I highly respect that. You are in control of your system, which is the ultimate goal of personal computing. It is even more powerful that your mental models are reflected in your system. That is super cool, I hope to get their some day.
I am also very happy you enjoy trying out new technologies, and don’t have the grumpy jadedness of just using what you always use.
For me I thoroughly enjoy learning new skills that unlocks the power of all my many computers, and put them to use. Computing should be fun and empowering, and too often people deprive themselves of fun.
I too have been using native packages for 25 years and I wouldn’t say it have been “fine”.
I’ve had to deal with outdated packages, where to have the latest version of a software you had to compile from source.
I had to deal with 3rd party repositories that broke my system.
I had to deal with conflicting versions of a library.
I had to deal with the migration from libc5 to glibc and God that was horrible.
So yes containers might be a little more complex in its implementation, but it means I can install apps from third parties without touching my system and I love that. My OS stays clean, and my apps don’t mess with it.
It’s not that I’ve never had any problems. It’s more that those are infrequent one-time problems, and if something happens once every two years that takes me 30 minutes to solve, I’m willing to do that if it makes the day-to-day use of my system smoother. Flatpak feels like I’m rubbing just a little bit of sandpaper across my face 20 times a day, and the promise is, “yeah, but look how you’ll never have to solve this minor one-time things again”, and that’s just not a trade I want to make.
I also like flatpak because it keeps everything more orderly. My OS fits into one box, and my userland applications all get their own little box. I don’t have to worry about the choices I make for my OS dictating the options I have for applications. And I don’t have to worry about installing an application polluting my OS with libraries that only it will ever use.
The same is true with containers like Docker. Sure, I could install web apps directly on the server, or make a VM for every service I wanted to spool up, but with Docker Config(or the many other ways to wrangle docker) I have a predictable input/output. I never have to worry about the requirements of one service conflicting with another. And the data and logs generated by the service rest in an exact place that I can ensure is uniform for all services, even if the developers do wacky things.
Taken to the extreme you get NixOS, which I really like the concept of, but can’t bring myself around to learning, as I know it will take over my life.
/var/lib/flatpak/app/org.gnu.emacs/current/active/export/bin/org.gnu.emacs
is not what I expect a Unix system to want me to type if I want to run Emacs. Nor isflatpak run org.gnu.emacs
. These are tools built by someone whose mental model of running Unix software is “click the icon in the Gnome launcher”. That’s one aspect what I’m describing as not being “simple”. I don’t want my mental model of how to run Unix software to include “remember how you installed it and then also remember the arbitrary reverse-FQDN-ish string you need to use to tell flatpak to run it”. If I’m honest, that alone is sufficient to signal it wasn’t built for me. I could work around it for sure with shell aliases, but I could also just not use it, and that seems fine for me.This. Having to open a console to run a flatpak in bspwm is annoying as all hell. PWA’s are just as bad, I ended up writing a script I could run from dmenu:
#!/usr/bin/env bash PWA_PATH=${HOME}/.local/share/applications for app in $@ do DESKTOP=$(grep -i "Name=.*${app}" -lm 1 ${PWA_PATH}/*.desktop) if [ ! -z ${DESKTOP} ] then APPID=$(basename ${DESKTOP} | cut -d- -f2) /usr/bin/google-chrome --profile-directory=Default --app-id=${APPID} & fi done
I agree that launching flatpaks outside of a GUI is stupidly verbose. I certainly would never use flatpak for cli tools, and I think that is a problem for it. I would love to see more tools bundled up that way, but flatpak is far from the solution. And Docker has the same or bigger problems.
And in a way, everything is a CLI tool on most normal systems. Evince or Acroread or whatever you prefer to read PDFs is not “a CLI tool”, but if I want to use LaTeX to create a document, I want to be able to do something like
$ xelatex myfile.tex $ evince myfile.pdf &
I don’t want to have to build my document, bring up my app launcher, click on the Evince icon, hit Ctrl-O, navigate to my pdf file, and double click it.
9/10 desktop applications I use are flatpaks. Am on Arch and even when there’s an AUR for a package I’d prefer to use Flatpak. Just so I can use Flatseal to control permissions access on my applications.
Love it! I am starting to feel good about this then.
I’m glad to see you’ve gotten a ton of feedback here, and I just wanted to add another comment in support of flatpaks and image-based computing. I’ve been using Linux extensively for about 15 years now, mostly Arch and Debian Sid. I’ve been a distro packager, and I’ve compiled plenty of my own apps over the years.
This past year I took Fedora Silverblue for a spin after following the project for quite some time, and I am convinced that the image-based system approach, coupled with containerized and sandboxed userspace applications, is the future of Linux for most users. It makes so much sense from nearly all perspectives; whether security, reliability, or flexibility.
Integral parts of the system are mounted read-only by default. Simple commands can rollback unwanted changes, upgrade to a new distro release, or even sideload an entirely different OS. System updates are automated, as are flatpak updates, and there is little-to-no risk to stability due to the very nature of the essentials-only system images. And if something catastrophic did happen, you’re just a reboot away from rolling it back.
Consider for a moment the collective energy and time that distro package maintainers must undertake on a weekly basis. Much of it simply repeated by each distro, building the same applications over and over again. Flatpaks are built once and deployed everywhere. Think of the collective potential that could be directed elsewhere.
Couple this with containers and the choice of distro matters even less. Arch, Debian, Ubuntu and Fedora are just a keystroke away. Yes, you can run containers on any distro of course, but you don’t gain any of the other ostree benefits mentioned above.
I have since moved all of my workstations to Silverblue and I don’t see myself ever going back to a traditional system again. If anything, I may start automating my own image deployments, similar to Universal Blue.
Yes, flatpak as a platform still needs some work, and so does ostree, but both are evolving quickly and will only get better with time.
To others who complain about needing Flatseal…in my opinion, this is a feature to be embraced, not loathed. Sane defaults are rarely sane for everyone, and Flatseal exists to give you complete control over what an app can or cannot see and do.
Thank you for writing all this! Innovation is absolutely necessary not just in Linux, but all computing. People are comparing this to Window installs, and honestly it is probably more similar to MacOS installs. Yet, the difference is that the packages are audited by a community, and are not proprietary wildcards that might bite you in unexpected ways. Flatpaks are an options, not a replacement.
Dealing with software that does not work first try is a loathsome experience. Many people here are wearing their gray colored classes, opinions influenced by decades of tinkering, and are forgetting about the curse of knowledge.
If we want more people to adopt linux, Flatpaks absolutely help.
Lastly, saying image-based reminds my a lot about Smalltalk, which is nice. I like the idea of having hot-swappable operating systems to switch between that have all the work isolated in that image. Great for experimentation, and perhaps security.
I will definitely be checking out Fedora Silverblue. Going to download and make a VM for that now.
I’ve been using NixOS with flatpaks and distrobox and have had pretty much the same experience. NixOS provides rock solid base system, services, and CLI tools that are easy to configure and flatpaks provide the rest of the desktop applications.
One neat feature of installing eveything through flatpak is that you can update applications individually without having to upgrade the whole system.
Yes, but only for apps that which I want to be on the very latest versions. One might ask why I don’t use a rolling release distro, that’s because I prefer a solid LTS base.
That is absolutely the best usecase. There are only a handful of apps I need to be the latest version.
I am mostly using native packages.
@DidacticDumbass
You can set Debian to prefer installing from stable unless you explicitly request otherwise. That works on a per-package basis.Presumably you could do the same with any apt-based distro, but I’ve not tried it.
@agelordFlatpak is the simplest solution for me.
I usually use the terminal, so that is something I need to make sure of. Otherwise, using the Software Store I can explicitly choose which version to use.
@DidacticDumbass
This runs you through the setup: https://unix.stackexchange.com/questions/8049/how-to-install-some-packages-from-unstable-debian-on-a-computer-running-stabl#8051Once it’s in place, I’ve had no issues.
Neat. I was wondering how to do that.
Debian stable + flatpaks.
I want to be on the latest Firefox and to have the latest LibreOffice and some other apps. I want the latest applications, but I don’t want them come at the expense of having my system randomly lose its Wifi at the next boot or some other trash.
FreeBSD had this figured out 25 years ago. Separate the base from the user apps. When I was a teenager, I built -current ports on top of -stable FreeBSD and it was fine.
Now we have the equivalent option in Linux, and it comes from a centrally managed repository i.e. I’m not downloading tarballs and managing my own packages. I’m too old for that crap.
ag to be honest I’m so frustrated by having to remember what package manager was used for installing which binary. I don’t have time for this horse shit
Man, no one’s got time for anything.
I use Flatpaks for everything I can. I like how Flatpak keeps apps in a container isolated from my system. Also, Flatpaks contains every lib in every version I need for my installed apps, which means It does not rely on my system libs, and I like It, cause my system libs is to make my system works only.
Flatpaks are just the future of packaging
Great explanation and rationale for using Flatpaks! I hope others with questions see this.
I understand how people may be annoyed by the redundancy of every app packaging their own lib, but I swear those are measured in kilobytes, and people tend to be so obsessively minimalist it is a non-issue. Then again, minimalist are probably compiling their software.
I disagree. The other day I wanted to install some audio app that came in flatpak install format (I’ll check and add the name later). The app was less than 30MB in size, but the installation included 300MB of a previous version of org.freedesktop!
I think that is one time download of a library so the app can run. Also, any other app that needs it.
It seems to me that the biggest complaint people have with flatpaks are the space it takes.
I wonder if the blow up in GBs was an early buggy behavior?
Probably never. They’re my third option after native packages and built-from-source packages/installs either manually or using the AUR. They’re convenient and the only option I tolerate of those newer package styles (Flatpak/Snap/AppImage), but seemingly having to download a new 800+MB runtime for small 32MB applications is ridiculously wasteful and I wouldn’t touch them if I didn’t have at least a TB of storage.
That is a fair take. The universal package systems seem to disregard space outright, which is unfortunate.
100%. I just wrote a long post surmising this somewhere, but I’m switching my 5 year old Arch install to something like Debian Stable/Testing because I use almost entirely Flatpaks for my user applications (I would do 100% of them if every app I used had a Flatpak), and it’s really just a much better idea to run bleeding edge on only the stuff you care about instead of an entire system.
I personally run Debian in Testing and I have not the latest version but I think it’s still fine.
If you find it please link it. I would love to read it. I think I am happy with my setup, and Flatpaks make it possible.
Here. It’s more of a longform stream of thought on why I’m doing the same sort of thing.
For sure. I think I rolling distros are great, and I may consider it in the future. Right now Linux Mint is amazingly solid for me, and has evaporated any interest for experimentation, because I have had literally 0 problems, and it magically takes care of my Nvidia card.
I hope you find the distro you are looking for!
I want a stable OS, but I want the latest versions of applications (programs) without messing up anything. For me flatpak and snap meet that need, but I prefer flatpak.
It seem that whatever problems Flatpaks may have, due to sandboxing, is truly isolated. I think as a non-power user, I do not have strong opinions about any kind of technology, I just enjoy the magic of things working without effort on my part. I will dive deeper as my needs change, but my needs are kind of simple too.
Nope, don’t like them. Nor snaps. I find the sandbox nature annoying and many developers don’t actually seem to understand it correctly anyway meaning you have to use flatseal etc. Then having to deal with some apps writing config within the sandbox and some writing it outside the sandbox…
My order of preference is generally I pick the “official” supported version as opposed to any community maintained ones. Then within that:
- Install via the language’s package manager (cargo, npm, pipx, cabal etc.)
- Appimage
- Native package (.deb, .rpm etc.)
- Plain binary
- Build from source
- Snap
- Flatpak
Out of interest why do you favour snap over flatpak?
I’ve just had fewer issues with snaps. Honestly I don’t care for either of them so the difference between them for me is pretty slim but I just find Flatpak to be particularly annoying, Snaps just haven’t caused me any real issues other than polluting my device list with endless loop devices.
True. I have run into a lot of dumb issues with sandboxing, mostly in choosing a folder other than downloads for file interaction.
I have overlooked Appimage, and I will consider it. I am intrigued that you put it before native package. I had not considered using the package manager of the language it is built in, which honestly is probably the optimal way to install a package.
Alright, I have some reading to do. I love learning new ways to do things. I am glad I asked!
There is a bit more nuance to it I suppose - I like Appimages for “complicated” apps, i.e. big GUI apps like Inkscape where I prefer native packages for terminal tools. The nice thing about Appimages is that there just isn’t much in the way of integration and therefore its really easy to just try something out with no risk of installing a bunch of extra dependencies and no way of breaking your system - I use Appimagelauncher for managing them but have been considering swapping to something like Appman/AM.
The other thing that sometimes puts me off of native packages is having to deal with excessive numbers of PPAs or other repos when they aren’t in the main ones.
That is a great consideration that I have not looked into in awhile. It seems to be the ultimate third, or perhaps second, solution for getting software to just work. I will look into Appimagelauncher, and try out that version is native or flatpak fails me somehow.
Yeah, user submitted packages are such a risk sometimes.
I handle it by spinning up an lxd container to try new apps… then they have the whole machine to do what they like, and if the install doesn’t work or I hate the app, just delete the entire container.
lemmy was one of the harder ones to deal with because it needs docker… I have a special profile that runs docker in a container for apps like that (I never run docker bare, it f…s around with the firewalling and breaks stuff).
This is exactly what flatpaks were meant to do. Simplify the program deployment across all distros
It certainly has simplified things for me! To get anything so up to date, I would need to use something like Arch or the AUR, which is fine but I find unappealing (using Arch).
AUR is also insecure. I’d rather use a Flatpak from a trustworthy source.
I have been burned by the AUR so many times. It is not the perfect endless repository people advertise it to be.
I personally still prefer native, but flatpak is my goto for whenever something isn’t working or when the official repos are outdated.
The other day I tried to use Malt for blender but it wouldn’t work on the native version because it was using the wrong version of python. The flatpak version works perfectly with Malt, but for some reason I don’t feel like troubleshooting, the OptiX denoiser doesn’t work.
Still though, flatpak is a welcome option and is way better than snap.
That is so strange. I think people are underestimating how important up-to-date packages are for certain kinds of workflows, and short of reinstalling everything onto a rolling distro, the only sane solution is something like Flatpak, or directly installing every new binary as it comes out, which can suck and does not guarantee having all dependencies.