What are the many platforms and environments that Snaps can/will be used?

I was curious to know where all the places Snap is used. I’ve been using Ubuntu as a daily driver for about 6 years but I haven’t had much success with Snaps with GPU APIs so I haven’t really used Snaps at all to make it simpler to maintain all of my programs. Being a Snap newb, I’m not even sure how widely used Snaps are outside of the desktop.

Are Snaps used on the Steamdeck with SteamOS, or IoT devices, or cloud compute deployments, or anything like that? I’m sure if it’s used outside of desktop environments that it’s probably being used in many areas I can’t even think to ask yet.

1 Like

Snap is the primary platform for Ubuntu Core, which is explicitly designed for IoT.

There’s also snaps for server applications, LXD for system level containers/VM’s, Nextcloud for self hosted data storage, etc,.

Steam Deck is a no because Steam Deck ships with Flatpak to achieve the same for desktop apps. Since Steam OS3 is immutable, it’s difficult to include snapd with it. It could be done by Valve, but as an owner of a Steam Deck, it never sees desktop mode and I wouldn’t care for it. (Although I would be interested in the idea of an Ubuntu Core Deck Edition, maybe Deckubuntu Core?). Although I don’t particpate in the Flatpak community, it’s a great fit for the Steam Deck and I’ve no reason to avoid using it should I have to. ( I think before I’d used Flatpak on Steam Deck for Firefox and KeepassXC ). Beyond light browsing and memery, desktop mode never gets used.

For Cloud Compute, you might find individual snaps being used (e.g maybe your cloud uses the CMake snap), or you can interact with cloud providers with CLI snaps such as Amazon or Google.

There’s a load of use cases for snaps, though its worth mentioning, a lot of these use cases (particularly IoT) tend to shift towards commercial use cases where Snap can technically function but is heavily designed around using Canonical infrastructure, at a cost. (There’s workarounds for various levels, and some people might be able to get enough value out of the system even for free).

2 Likes

Deckubntu, i like it For me, the biggest problem with snap is the bad fame, every linux user in the wild hate snap like devil hate the crux. Common reasons:

  • it add bloatware
  • it’s proprietary software
  • slow
  • bugos
  • corporate spyware
  • etc.

Snaps are slower than flatpaks, for the user perspective, no matter if the runtime have the same speed. If it’s slow to start must slow to do anything. Also i have a lot of problems:

  • firefox trying to update every 2 ~ 3 hours,
  • blank fonts and/or Unicode block instead text like: �������
  • Bugous themes like: text and background with same color, giant text or icons, blury fonts and/or images.

All this applications works fine with flatpak/native. I’m a software developer, i have my only app distributed using mainly snap, i hope it grow and get better instead finish in the canonical graveyard with unity.

It sounds like your issues are mostly down to individual maintainers, rather than snaps as a platform. I wrote a much longer version of this originally but felt it was getting too wordy, so I thought I’d respond in summary to each.

  • it add bloatware

Snapd is a small Go daemon that follows Unix philosophy. Flatpak has no daemon explicit but implicitly demands an entire functional desktop shell. This means snaps work on e.g., WSL2 (even graphically) whereas Flatpaks don’t because the Flatpak design is far more bloated in terms of what’s required to be minimally functional.

  • it’s proprietary software

The daemon and tooling aren’t. The only proprietary component is the web server dealing with HTTP REST API the daemon interacts with. The API is completely open.

Anyone could reimplement it. No one can be bothered to. So whilst this feedback is valid, it’s not unsurprising the first thing people do when installing Flatpak is adding the Flathub remote, because actually the majority of people actively want centralization for convenience and security. So whilst it’s a valid complaint, would your experience be any different if the server components were open practically? People would move onto new reasons to not bother helping out, and we should focus our efforts on stuff that will actually have a payout IMO.

slow

Historically this has been due to XZ compression being used. Modern snaps now use LZO. If a snap is slow make sure the dev is using LZO. In the future ZSTD will be used for even further speed gains.

The Steam snap opens quicker than the Flatpak from version 2.65 of snapd, and big apps like Firefox have had specific optimisations to speed them up to be on par with native. Huge chunks of this were with the apps own logic, and while there were improvements in the snap ecosystem around the same time for the benefit of all, the fact “Firefox is (was) slow to boot” isn’t true any longer and was only a singular snap out of thousands that required significan engineering resource due to bugs in the app itself. Most people just need to become more proficcient in minimalism of what they package and making sure to use the newest features available.

bugs

Same as any software, the maintainer should fix them. I don’t personally see it as a failing of snap if we can’t yet support them with the tooling available. The maintainers have responsibility to not produce and leave garbage in the public. Flathub does this much better because Flathub doesn’t seemingly have as many randomers dabbling around and then commitment traps.

I don’t fundamentally see any reason snap would have more bugs than e.g Flatpak, the apps and packaging needs accomodating for both, but I do think Flatpaks community holds themselves up better here for the user experience.

  • corporate spyware

Could you explain?

  • firefox trying to update every 2 ~ 3 hours,

There’s been a load of work on this and I can’t honestly remember where each release is currently up to. You don’t have to update when it asks, though I’d recommend you do. Fundamentally this comes down to Firefox being open a lot for most people, and being unable to update an app when it’s open. (Apt couldn’t either, and would force you to restart Firefox on demand crashing your tabs when it does so!)

  • blank fonts and/or Unicode block instead text like: ������� This is a maintainer problem for the most part because the fix for this landed 5 years ago but people have to use it (extensions being rewritten to separate all underlying font caches and regenerate them with the appropriate userspace tools for each snap). Unfortunately a lot of this problem seems to come from Electron where people happily use 5 year old toolchains for 10 years at a time.

Bugous themes like: text and background with same color, giant text or icons, blury fonts and/or images.

Honestly I’ve not noticed this one cos I don’t play with themes, but unfortunately, there’s a reason GTK4/Libadwaita is going the way it is, and why frameworks such as Flutter, Avalonia, Java, etc, don’t even attempt to integrate natively.

The theming situation is bad for both Flatpak and Snap IMO, and personally I just never bother changing themes to anything that’s not built in, knowing that most third party devs don’t bother caring to fit anything other than “the default” if they even bother at all.

I’d be happy to go into specific points more, but this is getting pretty wordy. In summary, I think a lot of your points are valid at certain points but the impression I’m getting is you’re having specific UX issues with certain flows (I.E the Firefox updates, and I know the Refresh App Awareness stuff is constantly in the patch notes for future improvements), but a lot of them, slow, bugs, bad text rendering; come down to the individual maintainers.

Out of curiosity, other than Firefox, what snaps have you tried recently?

Personally I feel there’s a lot of stuff that should land in the next year (better updates, dynamic sandbox permissions / prompting, components which I think are what’s going to allow PC-Kernel snaps for NVidia users on hybrid systems, including TPM managed FDE & etc) that should mean that the Snap experience on Ubuntu 26.04 should hopefully be absolutely solid, but I’d agree for the past several years there’s been elements lacking. As a platform separate to it’s ecosystem though, I think snaps in a great spot! Including other things such as AF_UNIX mediation landing upstream in AppArmor, spreading the sandboxing improvements to other distributions, improving other distributions compatibility in general, etc :slight_smile:. The next 2 years are more exciting then the last 2 have been to me.

(And I’m still hoping for Deckubuntu Core).

This part here: “every linux user in the wild”. I think you get it wrong, i don’t have this concerns. (i’m non english native btw).

But i see from where its comes from: Many “”“Linux-entusiats”“” think snap is proprietary software because the snap-store are closed source or something like that, and a common complain “snap don’t have a packages like deb or rpm”, “you cant build snaps from source without snap store”, “you cant install snap out of snap store” etc.

Again, i’m making a quote here. All this things are untrue, but it’s spammed everywhere: irc, reddit, forums, etc. (with i use arch or gentoo btw)

Electron (and any desktop app usinga hole browser) are big problem, people who use electron don’t want to use with GTK/Qt, i don’t blame them, some times you just need to print a text using fancy colors.

chromium, nvim, helix, inkscape (have a snap only bug that stop exporting), scrcpy, android-studio, flutter.

in July i have tired run ubuntu with snap only system (vscode, rust, flutter, android-studio, more things like ruby, dev tools, etc.).

The experience killer has save files using any app, it always save inside /urs/1000/something for no reason, even setup to save inside de Downloads folder (idk why, clean install).

I hope the for the best, i like how snaps work, the idea of sharing a file system with every thing packed you can just share in install.

Will be nice if a snap could be installed like MacOS.

This is how Flatpaks also work since the issue stems from the underlying XDG portals being used, but it’s weird you’ve mentioned this because there’s a very specific bug fix that should be in newer disributions (including Ubuntu 24.04) that means you shouldn’t see this anymore, in either Flatpaks or Snaps.

I think most people on our side just stop trying because actually attempting to discuss things with most people is difficult and with e.g., Reddit, it’s incredibly easy to have the conversation be derailed or turn into a popularity contest rather than actual discourse. There are legitimate criticisms against snap, but it’s all the legitimate ones and hundreds of false truths on top every time.

The majority of people use snaps just fine. There are issues, both real and otherwise. You’ve mentioned a lot of them from both. A lot were real issues historically but aren’t anymore.

However, as some personal experience, I remember once spending a few days on giving Pinta (GTK Paint.NET) some portals functionality. As well as publishing the snap directly.

Someone more famous than me on Youtube made a video saying “Snap is bad”, showing off my app as background filler, whilst making claims like “Snap can’t use the Flatpak portals”, which I literally added to the app he was showing on the video at the time it was said.

Unfortunately, that message gets out better than the guy who made the package he’s using saying “that’s wrong”. So for me, I’ve stopped trying so hard to change the opinion on snap because I don’t think the opinion on snap is being treated on technical grounds but popularity ones, to which, Snap is more popular (as a modal average) than Flatpak and it’s not close, but the Flatpak community doesn’t have the same community interaction issues.

I’m not sure I have a specific point, but I’d encourage you to keep trying every now and then and analyse things on your own needs. It might be we’re not there for you, in which case, we don’t take it personally, there’s choice for a reason :slight_smile:, but we’re still improving even if it doesn’t seem like it, because I’d like to think a lot of people do appreciate the technical design of snap, but that needs to be balanced by good maintainers for individual snaps too, which probably comes down more to community, which I feel Snap needs to improve on in general. Things won’t get fixed if people don’t enjoy fixing them or are too scared to try.

1 Like

agree

I have spend this weekend trying to fix a problem with witch_craft snap, i just need to copy a folder to /var, even chat don’t know, but 12:99 of Sunday, chatgpt solved that with 5 lines of code in the snapcraft.yaml, i felt demoralized for being unable to solve by just reading the docs

docs are too simplistic, some times it just need a example.

environment:
  WITCH_SPELLS_ROOT_DIR: $SNAP/var/witch_craft/witch_spells/

parts:
  witchspells:
    source: witch_spells
    plugin: dump
1 Like

I think there’s work (Ubuntu wide, even) to bring the docs up to scratch, but you’re right about specific examples. I think a lot of people get into snaps and do things the way they were 5 years ago. Technically that still works, but there’s stuff since. (E.G., it surprises me how many people still don’t make use of Gnome/KDE extensions). But having read the documentation when I started, I can see why. There’s a lot. It’s not consistent. And it’s not always clear (even if it is usually right).

Don’t be demoralised, ChatGPT happens to be able to hold the entire internet in memory. We don’t. Generally, snaps are designed around being only able to edit $SNAP (e.g., /snap/firefox/current) itself. If your app hardcodes other paths

  1. Look for environment variables, they’re super common in Unix. Google the problem of how to move the package around with variables ignoring snap entirely (the only snap specific bit is the syntax).

  2. If there’s no variables, I’d move onto Snapcraft Layouts. This lets you do things like create a link between /var/witchcraft and /snap/witch_craft/current/var, so that even if Witchcraft were looking at /var not $SNAP, it’s going to be redirected to the right files anyway.

  3. Finally consider patching the source code, where possible.

Ultimately I guess there’s a lot of individual concepts that you’d build up overtime and know when to use as is appropriate. There’s a lot of edge cases on edge cases though, so I think there’s definitely scope for improvement, but, I can see why it’s hard. Ultimately though more feedback like yourself helps because the documents should be written for people to actually use, so if they’re not helping e.g yourself, then they could need redesigning better, or at least we need more of a “I’m trying to do A, how do I?” approach on top of the existing one.

1 Like

agree, also appreciated your understanding.

1 Like