4 ms·
Nobody's used cabal-dev in Haskell-land for ages. Cabal has had native sandboxing since mid-2013 and Stack is a more recent alternative. I'd argue Nix is nicer
by coolsunglasses 11y ago
Nobody's used cabal-dev in Haskell-land for ages. Cabal has had native sandboxing since mid-2013 and Stack is a more recent alternative.
I'd argue Nix is nicer for everything but Haskell because the way Nix thinks about versions doesn't fit projects as neatly as one would think. As a Linux distro it's nifty (fully systemd-ified).
Cabal sandboxes have "just worked" since release in my experience (my own, plus hundreds of IRC users I've helped).
- KirinDave 11y agoSure, the last time I deployed Haskell for a paycheck it was still cabal-dev. I'm absolutely out of date there. But I sort of struggle to imagine using NixOS to ship products, as it would mandate every dev maintain a comparable NixOS environment for development. In a world where even editor choice can be contentious and user-facing Linux only runs well on a small handful of machine types, this seems a little unfair.
- sciurus 11y agoYou don't have to switch to NixOS; you can run the nix package manager on any linux distribution or on OS X. https://nixos.org/nix/ https://nixos.org/nix/ https://nixos.org/wiki/Nix_on_OS_X https://nixos.org/wiki/Nix_on_OS_X A development team has to standardize on some things. Everyone might use their own text editor, but everyone can't use their own dependency management system.
- KirinDave 11y agoThis does't actually answer any real criticism I leveled except... > but everyone can't use their own dependency management system. This is untrue. Different disciplines use different tools for dependency management and it's not clear to me that the world is crying out for a unification here. Golang developers use one, Nim developers use another. Java developers have different requirements still. Let's look at a pair of closely related langauges, Clojure and ClojureScript. While we might want a uniform method for DECLARING dependencies, the specific mechanisms used to fetch those dependencies may (and possibly should?) be different.
- sciurus 11y agoI didn't say everyone globally, I said everyone on a development team, i.e. a group of people working together to build a product. Creating a reliable development environment for a team can be a PITA. That's why Vagrant, and more recently Docker, gained a lot of traction. People could use Nix to solve the same problem, like ris describes at https://news.ycombinator.com/item?id=10050681 https://news.ycombinator.com/item?id=10050681
- KirinDave 11y agoI just have a hard time envisioning package management as the light and the hope for this problem, at least at the level of granularity offered.
- mbrock 11y agoAs sciurus said, Nix can be used on other systems than NixOS. The package manager is the main idea, and the distribution is an extension of it to provide its benefits also for system configuration. The package manager doesn't touch your normal system file hierarchy at all; everything is isolated in Nix's own hierarchy; users can install packages without root; etc.
- KirinDave 11y agoHow does that actually answer the criticism though? You lose binary portability, you mandate Nix as a deploy AND dev target. You mandate that every development environment either is Nix-friendly OR that you're on the hook for writing said management. And, as I've noted in the past, these packages people make as afterthoughts to product development are often broken. You end up welding your dev environment directly to your deployment environment and you complicate cross-platform builds quite a bit (closures cross-platform are, unless they have changed since early this year, not really a well-formed proposition).