4 ms·
If only there was something like a universal package manager, that provides a generic but powerful package-management platform. OK, I like where you're going..
by adrusi 11y ago
If only there was something like a universal package manager, that provides a generic but powerful package-management platform.
OK, I like where you're going...
Something where package specifications look just like expressions in a purely-functional programming language, and the package manager implicitly understands the complete dependency graph, including all inputs to all build actions.
No, you lost me.
Look, Nix and Guix are really great ideas, I don't debate that, but they are not what people want.
People who design and build tools want them to be interesting, but people who use tools want them to be boring. They want them to be boring because boring things present the least resistance
What people want is exactly the first thing you said. They want a package manager that does the things that npm and bundler and pip+virtualenv and cargo and everything else do, but works for all languages and across all platforms, and also provides the functionality of a system package manager.
- davexunit 11y ago>What people want is exactly the first thing you said. They want a package manager that does the things that npm and bundler and pip+virtualenv and cargo and everything else do, but works for all languages and across all platforms, and also provides the functionality of a system package manager. But Guix and Nix provide exactly this. They just need to be ported to more platforms and processor architectures. Language-specific packages all have giant flaws like not being able to handle dependencies that aren't packages for that language such as C shared libraries, or duplicating dependencies on disk for each project bundle, or relying upon a single point of trust without the option to build from source, non-reproducible builds, non-precise package specifications (loose versioning), etc. Nix and Guix come with tools that act as a language-agnostic virtualenv called nix-shell and 'guix environment', respectively. For example, if a Guix user wants to build Emacs from source, they can spawn a shell with all of the needed dependencies with 'guix environment emacs' and move on with their lives. It can't get much more boring than that. This is precisely what I want as a user of a package manager: To spend less time worrying about dependency management. Nix and Guix, using the functional package management paradigm, are the only projects that offer it.
- pathsjs 11y agoUntil you have to write a recipe...
- davexunit 11y ago... And then it's much easier than writing package recipes for other package managers.
- iso8859-1 11y agoYou can have inline shell scripts. You just need to know the names of the phases to override, and the implied environment variables like $out. Not very much harder than writing other recipes.