canonical / snapcraft.io

The official website's repository for the Snap store
https://snapcraft.io/
Other
145 stars 108 forks source link

Nudge publishers into supporting more than just PCs #3969

Open waveform80 opened 2 years ago

waveform80 commented 2 years ago

Currently, there's a fairly long list of (some might consider) quite popular snaps that are packaged for amd64 solely. Where snaps are packaged for more than one arch, it's usually just amd64 and i386, or in some rare cases amd64 and arm64. It's frustratingly rare to see anything beyond these most popular archs (though I'm perhaps being generous in including i386 in my definition of "popular").

By way of illustration: if I install the Ubuntu Desktop for the Raspberry Pi, I can get the firefox snap (for amd64 and arm64 only), but not thunderbird which is amd64 only. For video editing / playback, vlc, shotcut, obs-studio, kdenlive, and blender are all amd64 only. Coding? All the JetBrains stuff (pycharm, webstorm, goland, intellij, etc.) is amd64 only, as are kdevelop and VS Code. Collaboration? slack, skype, zoom-client, discord, signal-desktop, even mattermost-desktop (!) are all amd64 only.

There are some bright spots. The chromium snap is rather better (one of the rare examples of a popular application available for amd64, arm64, armhf and i386), as are gimp and inkscape for image editing (oh, but not krita). Still, I would say it's fairly evident that simply providing facilities to build on all architectures is insufficient to the cause of actually getting things built on all architectures.

To that end ... I'd like to start "nudging" publishers into building on more architectures. I'd really like to see every snapstore page list all architectures, preferably with a nice big red "❌" next to all those a snap isn't build for (maybe that's being too "nudgy" but I'd like some visual indication of "hey, look at all these archs you could be building for but aren't").

Related: #2047 which would be useful, though personally I'd prefer to solve the issue by getting stuff built for all archs :)

Updated: kdenlive, kdevelop, krita, and thunderbird now have amd64+arm64 builds

Lukewh commented 2 years ago

This is a tough one that will require a bit of thought. There's the short-term low-effort of reminding people that other architectures exist, and they would be serving x% more users if they were to build for other architectures via some messaging in the publisher experience. This might prompt people to do it, but it relies on those publishers having the infrastructure to build the various architectures. While launchpad can build snaps for all the supported architectures, it's not possible to do 'private' builds at this time (afaik), which will put off many of the larger publishers.

I think one of the first steps would be to generate a list of snaps and which architectures they support, plus their user-base. This alongside a list of architecture install numbers would probably give us a good base to do some targeted messaging. I worry a generic "do more architectures" would fall flat.

I'll think on this some more, and if you have any more ideas, please share away :)! Thanks for starting the discussion.

waveform80 commented 2 years ago

A couple of additional thoughts:

I was going through similar packages on flathub (as I'm intending to file a similar ticket over there, because there's a similar pile of things that are "popular" and "x86_64 only", e.g. pycharm, mattermost, and even firefox!). However, while browsing the beta site (which, notably one has to use to even discover which archs a flatpak is built for), I did note a couple of things.

I checked the archs for every build on the "Editors Choice Apps" on the homepage. Each and every one was at least built for amd64 (x86_64 in flatpak's lingo), and arm64 (aarch64). I've no idea if this is a policy for inclusion in that section, but it's notably not the case in the snapstore which currently includes slack and libreoffice (both amd64 only). Perhaps making it a policy to have more than just amd64 and/or i386 to appear in the "Featured" section of the homepage might be worth considering?

The other thing I noted was that both snap and flatpak tend to report things that don't exist on your native architecture as not existing at all. For example, on a Pi running snap info vlc simply returns error: no snap found for "vlc". Likewise, on a Pi running flatpak remote-info flathub org.mozilla.firefox returns Error searching remote flathub: Can't find ref org.mozilla.firefox. Notably, I can work around this in flatpak with --arch=x86_64 (although that seems a bit of a hack), while there's no means to get around this in snap other than visiting the snapstore in a browser and realizing "oh, it does exist, just not for my arch".

I understand why both systems work this way but personally I'd much rather see an error suggesting something does exist, just not for your native architecture, than suggesting something doesn't exist at all. I doubt it would directly nudge any publishers, but if users start realizing snaps of certain things do exist ... they just haven't been built for their particular arch, maybe that's another way to apply pressure?