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.
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.
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 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.
If you switch everything you can to flatpaks and use distrobox for other apps before you switch 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.
Whoa! Distrobox looks cool! Did this come out on Android first? Seems like something I used to have fun with.
Damn, there are so many cool software I have never even seen in passing. I mean, I guess anything is possible. Hah.
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.
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 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.
That is a great point. I use the shortcut ‘code .’ to launch VSCode when I’m on the terminal a lot. Can’t do that with flatpak without an alias. I don’t live on the terminal though, so it is rarely an issue for me. It is a problem flatpak should solve though. Seems like they are focused on GUI apps and GUI launching.
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?
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 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.
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.
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.
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.
deleted by creator
Containerised everything is the future of computing and I think we’ll look back on how we do things currently with horror!
But yes, I am slowly starting to use more contained desktop applications. Server-wise, everything I deploy is now in containers.
I am happy that it is becoming more common. The first time I learned about containerization was QubesOS, which is great, and I still may try it.
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.
I’m running Ubuntu now and I’m in Snap hell.
It works well enough for some very basic apps, but for me personally, Snap has created far more problems than it has solved. With Firefox, for example, it makes it a lot harder to use some extensions, and FileBot is entirely useless without file system access (I mean, that’s the entire point of the program).
I’ve heard Flatpak is better but my experience is somewhat limited. It could hardly be worse, though…
Each snap is mounted as its own filesystem, which is messy for several reasons (try making sense of the output of
lsblk
on your system). Flatpaks don’t do that, though they sandbox in other ways. There really isn’t a “Flatpak hell”, the worst that can happen is packages that depend on different versions of the same library taking up a lot of storage space, which is a problem with snaps too.I still prefer to rely on official repos but I do use a few Flatpaks here and there. But one of the main reasons why I don’t run Ubuntu is because of Canonical’s aggressive pushing of snaps.
Its much better. Im moving off ubuntu to get away from snaps
I am sorry you are in digital hell.
No real solution but to change distros, but that is also a crappy thing to suggest.
I hope it gets better for you.
When using Fedora Silverblue, there is no other option, which I do!
Are there any other distros that are flatpak-only?
Check out VanillaOS. It’s pretty neat.
Thanks
They don’t hype it as much as (I think) they should on that webpage, but VanillaOS does this thing with it’s package manager, Apx, where it allows you to install applications from various distros via containers, and run them all side-by-side seamlessly. It’s neat.
That is actually awesome. It sound like the Fedora aliens (?) but probably more reliable. Cool. Adding VanillaOS that to the list potential new OS that makes computing easy and fun.
What about the packages that are not available in flatpak? I assume there must be some packages that are only available in certain corners of the internet?
Yeah, that’s what I mean. You can use flatpak (or snap if you swing that way) but you can also install applications via containers. They’re still not installed on the OS-- even “native” applications get installed via the container. So if the application you want is maintained for arch in aur, you can add the --aur tag to the apx command and it will install that version instead of the default, which is ubuntu. This also works for fedora applications.
Edit: More info here: https://handbook.vanillaos.org/2023/01/11/install-and-manage-applications.html
That sounds cool. Thanks for the recommendation.
Doesn’t that result in a lot of wasted space from duplicated dependencies? Don’t get me wrong, this looks great on paper, which is why I desperately need to find fault with it before I start distrohopping again.
Flatpaks aren’t the only option in Silverblue: you can also layer packages using ‘rpm-ostree’ (requires a reboot though), and you can also use toolbx (or even better, distrobox) to create an easy-to-use container that you can do anything with. With distrobox you can install an app inside of a fedora/ubuntu/arch/other container, and then use a simple terminal command to expose that app to your host system as if it was installed natively.
I’m on Silverblue and I have mostly flatpaks plus a handful of layered packages as my base system. Then I have a couple of distrobox ubuntu containers for software development (lots of libraries and build tools), music production (with Yabridge and Wine). Because the base system is immutable I’ve never had a problem that prevented my computer from booting, and if I ever do, it’s extremely easy to roll back to before the last update. I’ve had a couple of issues working with containers in the past, but not big ones, and much of that comes down to my own user error.
I definitely recommend Silverblue for anyone who wants a rock solid, practically unbreakable Linux system.
But there are other options with Silverblue.
It’s the preferred option for gui programs.
That doesn’t mean it is the only option.
Same. But I started using flatpaks for everything I could prior to moving so it was easy.
I use flatpaks mostly. Flatpak dependencies (runtimes) are stored separately from the host system so and don’t bloat my system with unwanted libraries and binaries. App data and configs are stored separately and better organized. Everything runs in sanboxes. I use overrides extensively. All these are very convenient for me.
Ah, so it is possible to customize the parameters of flatpaks set by the developer/packager? That could make it a lot more appealing.
I you are asking about permissions so yes. I often limit access filesystem paths, dbus proxy, devices and network.
That is a good deal. I was briefly under the impression that those were not accessible, but that would be totally against the principles of everything Linux is about. So permissions set by the developer are just their biased defaults, nothing permanent.