Wack Playstation Sup! ๐Ÿ™Š ๐Ÿ‡ฎ๐Ÿ‡ธ ๐Ÿ is a user on mastodon.xyz. You can follow them or interact with them if you have an account anywhere in the fediverse. If you don't, you can sign up here.

So, Fediverse!

Flatpak? Snaps?

Which one deserves space in my limited brain?

@HerraBRE neither, use tarballs that adhere to the FHS. Then it's super easy to use fpm to create standard distro packages from.
@HerraBRE that is, create tarballs that you can just unpack them into /usr inside the package.
Wack Playstation Sup! ๐Ÿ™Š ๐Ÿ‡ฎ๐Ÿ‡ธ ๐Ÿ @HerraBRE

@kurisu That's only realistic for trivial apps with no "interesting" dependencies.

I'm considering this for , which is well outside the complexity that a binary tarball can handle.

ยท Web ยท 0 ยท 0
@HerraBRE what do you mean be interesting dependencies?
@HerraBRE just looks like a python app to me, what's special?

@kurisu Dependencies on compiled Python libraries. And Tor. And GnuPG, ideally a specific version so I don't have to worry about the shifting API.

@HerraBRE wow, thats a heavy set of dependencies. Static compilation with musl should fix the python libraries, but hard-depending on tor and gnupg seems like more of an architectural problem and probably layering violation.
@HerraBRE developers should be creating quality packages which integrate with the rest of the system, instead of boxing themselves away and including a second copy of everything, I think.

If you've made your application so difficult to package that it'll never be included in distro repositories because it has unmanageable dependencies, that's *your* problem, and flatpak and snaps are just ways that developers push that problem on users.

@kurisu Hi, I asked for opinions, but now you're just lecturing.

Thanks for your input, please stop now.

@HerraBRE my bad for lecturing.

I hope you see that users really do dislike appimage, flatpak and snaps though. Dismissing users expressing their opinion as just being smug is unhelpful imo.

@kurisu Yes, I see that opinionated people who don't know what I'm dealing with or what I've already considered, are still quite eager to preach and tell me my question is wrong.

I hear that people don't like it, but honestly, every tech has haters. Saying you dislike something has almost zero signal, it's just noise.

Tell me WHY, and I'll listen. If you just tell me something sucks, I probably won't.

@HerraBRE @kurisu here's why: both take all of the worst parts and none of the best parts of static linking, all of the worst parts and none of the best parts of package repositories, and combine that with empty promises of security and a ticking timebomb of actual security problems

@sir @kurisu The security problems depend on how good a job I do shipping updates. This is indeed a concern.

The security benefits of sandboxing are very real and I disagree with you on that point.

But thank you for having a real opinion! ๐Ÿ˜„

@HerraBRE @kurisu that's the problem, you're shipping security updates. You're a random. I trust my distro package maintainers WAY more than I trust random applciation developers.

@sir @kurisu Later in the app's lifecycle, I fully expect the distros to take over.

At this early stage though (the app is honestly a bit shit and will need frequent fixing), I expect being able to ship updates faster than the distro release cycle has a lot of value to my users.

So I'm considering what options I have for doing that.

@HerraBRE @kurisu people who want fast updates should use fast distros

@sir @HerraBRE shipping fast updates is still possible on a slow distro once you run the package repositories. And as long as you're not packaging the dependencies yourself, that's fine.
@kurisu @sir @HerraBRE

my dream package manager stores individual packages in their own special path that includes information that can be used to verify the integrity of the build. dependencies are overlayed into the runtime path for a particular application. app can only write into a sandboxed path. app cannot escape.

i have a proof of concept for parts of this idea. i'd like to find a way to extend APK to work with this idea so i can reuse the alpine packaging tools.

https://source.heropunch.io/tomo/grid/src/branch/latest/grid
@kurisu @sir @HerraBRE

nix does a lot of things that i like, but nix expression are shit.

@kurisu @sir This is what I am doing now, for Debian derived distros.

And from a security POV, I feel REALLY bad about it. Once you add my repo to your apt sources, I can update any package on your system. I can do so selectively based on your IP address.

Shipping a Snap or Flatpak does imply bloat and does put the onus on me to rebuild and ship when dependencies have security flaws - but at least I can't replace your /usr/sbin/sshd.

Everything has pros and cons.

@sir @HerraBRE @kurisu my other big problem is my distro already has a great package manager. If I can't get packages from my package manager, I can either build from source (and I think possibly the people who will most care about your product will be capable of this), or use the AUR. It's easy, simple, and efficient. Flatpak et al. Require something like a 200mb download, along with the software. It's massive. It's bloated. It doesn't fit with my philosophy.

@HerraBRE I dislike these solutions because I like having a single method to manage the software I install. On linux, this is the distro package manager. If appimage or flatpak or snap produced the exact same output, but put it in a distro package I could tolerate it.

Being in a distro package is to me a guarantee that I can remove it safely from my system. None of the above three systems have gained my trust that they'll do the same.

Hope that helps.

@kurisu That does help, those are criteria I would like to consider. Thank you!

And FWIW, I'm already building proper Debian packages.

I'm considering what else to teach the build-bot that is likely to give me the most bang for my buck.

@HerraBRE I think the most bang for your buck will be to work out how to easilly make your current debian packaging distro-agnostic and create distro packages. If you have debain packages, aren't you already most of the way there?

@kurisu Maybe I am! But I'd still like to understand the alternatives out there.

@HerraBRE and I echo some of sir's points too: duplicating all the dependencies bloats the packages to be much much harder, and makes you PERSONALLY responsible for shipping security updates for your dependencies.

As a developer *and* a user I don't want to take that risk.

The sandboxing is nice though, it takes some of that risk away but for an email program, at the very least any RCE will have acess to my email even if it doesn't escape the sandbox.

@kurisu @HerraBRE
I've installed from flatpak when something was too new to be in the distribution repository. And it was kind of a lot of trouble, honestly, getting both the app and the runtime installed. And my desktop theme didn't work until I installed it independently in the flatpak runtime.

@kurisu @HerraBRE
Which is not to say that Snap is any better...flatpak is more of a standard. I'm only saying that the flatpak experience is not yet all it's cracked up to be.

@kurisu Dependencies that some platforms may have preinstalled, but others will not. Flatpacks and Snaps let me ship my dependencies without breaking other apps.

A binary tarball will either be insufficient (things missing), or it will start overwriting OS default packages.

So it either breaks, or is hideously impolite... or it includes hacks which basically reinvent Snaps or Flatpak (or AppImage).