Live data from Hacker News

Spack – scientific software package manager for supercomputers, Linux, and macOS

spack.io

31–40 of 107 posts

Re: Spack – scientific software package manager for supercomputers, Linux, and macOS

#31
post #4

An unfortunate name, a la Nonce Finance and Git. https://en.m.wiktionary.org/wiki/spack

For Americans who don't want to click the link: "Spack" is basically a milder British-English version of "retard". Imagine how well the "Spaz programming language" would do in your market.

Re: Spack – scientific software package manager for supercomputers, Linux, and macOS

#32

Original author here -- since I know that people click the comments to decide whether to read further, here's a (biased?) summary: Spack is aimed at end users, developers, and admins. It's used primarily in HPC at the moment but it would be great to see use outside of the HPC community. Spack supports: 1. Basic installation (spack install foo, foo@3.1.2, foo@3.1.2 +option, etc.) 2. Reproducible environments, via `spa…

What do you think about Spack vs. Conda/Mamba? I've been a contented (maybe not "happy") Conda user for years. Is there any reason to switch? I'd be concerned about package availability.

We have a guide for this written by Adam Stewart, probably our most prolific (package) contributor:

* https://spack.readthedocs.io/en/latest/replace_conda_homebre...

The thing you'll likely notice most about Spack vs. conda/mamba/rattler(?) is that it lets you pick your versions and options much more fluidly, and it'll build you a package from source if there's no binary for it. Spack is much more seamless for integrating binary installations with source builds. `conda-build` is a whole other tool outside the normal user workflow.

Spack has over 7,000 packages at this point, so I don't think the lack of packages is going to hurt too much. We don't offer nearly as many public binaries yet, though, so the source builds may make the UX more painful, depending on what you're trying to do.

Re: Spack – scientific software package manager for supercomputers, Linux, and macOS

#33
post #7

Does it have an "undo" option?

It doesn't have it, but what sort of undo do you think of? Undo the latest installation on disk? Roll back to the previous environment?

I'd love to have both of these, to be honest.

Re: Spack – scientific software package manager for supercomputers, Linux, and macOS

#34

Original author here -- since I know that people click the comments to decide whether to read further, here's a (biased?) summary: Spack is aimed at end users, developers, and admins. It's used primarily in HPC at the moment but it would be great to see use outside of the HPC community. Spack supports: 1. Basic installation (spack install foo, foo@3.1.2, foo@3.1.2 +option, etc.) 2. Reproducible environments, via `spa…

Very neat:) Given the similarity in features, could you comment on how it compares to nix?

Re: Spack – scientific software package manager for supercomputers, Linux, and macOS

#35

Original author here -- since I know that people click the comments to decide whether to read further, here's a (biased?) summary: Spack is aimed at end users, developers, and admins. It's used primarily in HPC at the moment but it would be great to see use outside of the HPC community. Spack supports: 1. Basic installation (spack install foo, foo@3.1.2, foo@3.1.2 +option, etc.) 2. Reproducible environments, via `spa…

Very neat:) Given the similarity in features, could you comment on how it compares to nix?

+100

From what I saw the package definitions are in python. Given python is really an imperative language I don't see how spack could be comparably powerful for definitions and reuse.

Re: Spack – scientific software package manager for supercomputers, Linux, and macOS

#36

Original author here -- since I know that people click the comments to decide whether to read further, here's a (biased?) summary: Spack is aimed at end users, developers, and admins. It's used primarily in HPC at the moment but it would be great to see use outside of the HPC community. Spack supports: 1. Basic installation (spack install foo, foo@3.1.2, foo@3.1.2 +option, etc.) 2. Reproducible environments, via `spa…

Very neat:) Given the similarity in features, could you comment on how it compares to nix?

Main differences with Nix:

* Spack has a dependency solver (concretizer). nixpkgs is managed by humans who do the dependency solving for you over time. What this means practically is that you can install 5 versions of some package with different dependencies and flag combinations with a few commands in Spack, while with Nix you would probably need to check out different commits of the nixpkgs repo and maybe do some hacking on nix derivations to get the same thing. Spack is fundamentally designed to help with combinatorics.

* Nix builds all the way down to libc; Spack (currently) doesn't -- it's designed to live on an existing system.

* Nix build environments are isolated (but require root to run); Spack's aren't as completely isolated and don't require root (so you can run Spack in your home directory.

* Spack installation hashes are what Nix would call full configuration hashes -- they're configuration metadata hashes, not content hashes of the installation. So you could say we're not quite as committed to exact binary reproducibility, but you could also say that this allows us to support relocatable binaries (which Nix does not). Also, our metadata is pretty detailed.

* Spack's DSL is Python; Nix is, well, Nix.

Spack is very much inspired by Nix, and we talked about this a bit in the original paper here:

* https://tgamblin.github.io/pubs/spack-sc15.pdf

Re: Spack – scientific software package manager for supercomputers, Linux, and macOS

#38

Earlier quoted context omitted.

Very neat:) Given the similarity in features, could you comment on how it compares to nix?

+100 From what I saw the package definitions are in python. Given python is really an imperative language I don't see how spack could be comparably powerful for definitions and reuse.

The package definitions are quite declarative even though the language is imperative, see an example here [1]. For hashes, Spack uses the normalized (comments, whitespace etc removed) abstract syntax tree.

With Spack it's easier to contribute, you don't have to learn a new language as you need for Nix / Guix.

[1] https://github.com/spack/spack/blob/develop/var/spack/repos/...

Re: Spack – scientific software package manager for supercomputers, Linux, and macOS

#39

Earlier quoted context omitted.

Very neat:) Given the similarity in features, could you comment on how it compares to nix?

+100 From what I saw the package definitions are in python. Given python is really an imperative language I don't see how spack could be comparably powerful for definitions and reuse.

I could be persuaded to trade a certain amount of power for ease of use

Re: Spack – scientific software package manager for supercomputers, Linux, and macOS

#40

Earlier quoted context omitted.

Very neat:) Given the similarity in features, could you comment on how it compares to nix?

+100 From what I saw the package definitions are in python. Given python is really an imperative language I don't see how spack could be comparably powerful for definitions and reuse.

The Spack DSL for defining versions, options, etc. is declarative. That part of a package exposes options to the solver and very much allows reuse, in the sense that the same package can be built many different ways, and even with different dependencies. The whole system is parameterized in ways that Nix is not.

The imperative part of a Spack package is the build recipe, which AFAICT is not so different from bundling a bash script in a Nix derivation. Just like Nix, it's included in our configuration hash, so if you change the recipe you get a different installation of the software.

Post reply on HN