The state of affairs we’re left with as a result of this refusal 3 years ago is a farce. I just did a fresh install of Ubuntu, and when I first needed to use curl
, Ubuntu recommends that I install Wouter’s Snap:
mark@fractal:~$ curl
Command 'curl' not found, but can be installed with:
sudo snap install curl # version 8.1.2, or
sudo apt install curl # version 7.81.0-1ubuntu1.14
See 'snap info curl' for additional versions.
So I did. But of course, it’s broken, because curl has a feature (--output
) that takes a file path to write to, and any such feature fundamentally does not and cannot work inside a Snap with strict confinement because such a Snap cannot be given the ability to write to arbitrary files. The only fix is to uninstall the curl Snap and install a non-broken version with apt-get
or via some other means.
But that means the curl Snap is a trap for end users like me, and is making the world worse just by existing. The Stack Overflow question that alerted me to the cause of my permissions error, https://stackoverflow.com/q/67541374/1709587, has over 50000 views, which - given Stack Overflow tries to be conservative about not double-counting unique viewers in its view counts - is probably a lower bound for how many people this Snap has tripped up. Plenty of other users doubtless found their solution without viewing that particular question; the total number harmed is almost certainly at least in the hundreds of thousands. In total, many man-years, maybe entire human lifetimes, must have been wasted debugging issues caused by this Snap alone.
(More generally, the refusal here seems to imply that any application with a feature that allows writing to files at user-specified paths simply cannot be distributed in a fully-working state by Snap - at least not unless it coincidentally meets some other criterion that qualifies it for classic confinement. This is not an obvious fact about Snap until you encounter a bug like this one, and it’s a design decision I find difficult to make sense of! The ability to grant this access exists, and some applications already get it, but as a matter of policy certain applications like curl aren’t allowed it and so distributing non-broken versions of them via Snapcraft is simply forbidden? TBH, that simply seems like a dumb policy…)
If that’s what Canonical wants to insist on, fine - but in that case, is there at least something that can be done to protect users from breaking their systems by installing the (unfixably) broken curl Snap that Wouter has already published? It’d be helpful to unpublish the Snap and also prevent Snaps from ever being suggested as a way to provide the curl
executable if, as a matter of policy, it’s forbidden for any such Snaps to ever actually work.