44 ms·
TL;DR: They help Ubuntu developers maintain short-term productivity, in return for bloat and a collapse of the system architecture. Longer version: 1) They en
by blagie 5y ago
TL;DR: They help Ubuntu developers maintain short-term productivity, in return for bloat and a collapse of the system architecture.
Longer version:
1) They encourage bad engineering
Unix is based on designed, long-lived, standard APIs like POSIX, and it works really well. The "problem" Snap is intended to solve is the ability to pull a JavaScript, where APIs are completely reinvented every 18 months by having each component lives in an isolated space with its own libraries and subsystem.
Debian worked perfectly fine 25 years ago, and for the most part, programs from then work fine today. A lot of us value that stability.
If each program relies on different versions of libraries and APIs, you can no longer remix and mix-and-match pieces. I can't pull out a few functions from one program, a few from another, and use them together.
Not needing to maintain backwards-compatibility or think through API design is a huge boost to short-term productivity, but leads to unmaintainable systems. That's true for a lot of the ways tools like Docker are used as well, for that matter.
2) They explode package sizes
In the era of terabyte hard drives, blowing up a package from 50kB to 50MB might not seem like much, but it makes a huge difference. Debian and Ubuntu have thousands of packages. Things like download and install times make things like dev-ops (or just setting up systems) a pain.
3) They murder performance
Again, this might not seem like much, but the end impact is that you can't use tools inside of loops or workflows since startup / shutdown / install time is up many-fold. Unix tools are designed to plug together. <100ms run times and small sizes means you can do that practically.
4) They discourage consistency and backwards-compatibility
I learned to use Unix decades ago, and my child is learning to use Unix too. It's a bigger learning curve, but it's much less overall time than learning DOS, Windows 3.1, Windows 95, Windows NT, etc.
Broken things are worth fixing. If something isn't broken, it's usually not worth replacing. In most cases, rewrites are easier than refactors or fixes, but tend to move things sideways, going backwards as often as forwards. That's especially true of things engineered to last versus thing hacked together in 6-month agile sprints.
See second-system syndrome, and Joel's classic "Thing You Should Never Do, Part 1."
- luckman212 5y agoGreat explanation, thank you. Looks like I will be moving back to vanilla Debian. Also need to look into the differences between that and Pop!_OS.
- blagie 5y agoI'll just mention that all my systems do run Ubuntu, but with Snap removed. It works just fine. Ubuntu does doing a lot of obnoxious things like snap, but they're not mandatory. Removing snap is 5 minutes. Ubuntu has come to the threshold of making design decisions which would have forced me to switch off many times, but has never quite crossed that threshold. They've pushing a variety crappy cloud-based offerings. There were many half-start attempts to replace system components (display server, startup system, audio, etc.) with half-baked ill-designed options. Despite scary announcements, none of these actually came to pass as mandatory components, at least while they were half-baked bad idea stage. They're either dead, optional, or were incrementally improved to be usable before they were integrated to where they were necessary for Ubuntu to function. For me, I think the roughly hour or two I'd need to invest in getting a Debian working correctly on each machine is still less than the 5-minutes per Ubuntu bad idea I need to remove. Debian makes a great core system, and Ubuntu still does a pretty good job with providing a layer of polish around things like hardware support. So yeah, I wouldn't advise moving back until things break. If it ain't broken yet, don't pre-emptively fix it. If snap replaces apt, or becomes mandatory, I'll be gone. That's not on the horizon yet.