@Ericson2314 I remember we were once joking the language should be called sleet because it has dynamic typing and feels squishy.
But wait, can you do a lot of complex and also deterministic configuration with Bazel? (I donât know as I have never explored it. Iâve done builds with bazel, but not OS config)
As far as nix is concerned we are just âbuilding somethingâ. Take in some text files and spit some other files out. I donât see why bazel couldnât do the same.
No you canât, but so long as people donât use Nix to do fine grained builds (and almost no people are trying to do this, sadly) Nix will be seen as a lousy tool for development.
I am using nix to do builds, but only at the granularity that âout of the boxâ nix supports
Coming from the other end of the spectrum, where people donât use anything but letâs say bash scripts or Make, nix is often a step up. They donât have to rebuild every time if they are caching builds in CI, and they can build and try out many variations of dependencies. So it can be kind of a âgatewayâ toward bazel-like experience.
What needs to evolve in nix to get it all the way there? Implementing a content-addressed Nix ? Anything else? Are there existing builders that do what is needed that could be used by Nix for this purpose?
I think in some respects the barriers really are more social/marketing/etc. We have a content-addrsssed Nix. We have the hydra patch (just need to turn it on). What we donât have is people trying to use Nix this way (except for a few counter examples, not all open source), skipping stdenv.mkDerivation
etc. And we donât have the equivalent of Bazelâs ârulesâ repos â but thatâs userland.
Sorry for not reading through all this. Just had a thought and wanted to throw it into the cauldron. That a term to describe Nix could be software composition framework.
Composing is kind of a superset of building. And itâs a framework because thereâs a language, a store, a CLI, a daemon, etcâŚ
I like the description, it explains it well; that said, I donât think the meaning of that phrase would be clear to people reading it at first glace, which I think shouldnât be the case with short descriptions like these. But that could just be me being blissfully unaware of the phrase too, feel free to disagree.
Yes, because no one knows what a software composition framework is, yet. Thatâs the challenge with entirely new ideas. The alternative approach is to go with an adjacent but well known term such as package manager, which âeveryone knowsâ the meaning of. But Nix is more than that, I think. So whether itâs software composition framework or some other attempt at a somewhat accurate term, it will likely suffer the âyes, but what does that mean?â problem. I think we should accept that.
The Bazel and BuildStream communities had this discussion some 6 or 7 years ago and ultimately settled on âintegration toolâ or sometimes âbuild and integration toolâ to make it clearer what an âintegration toolâ is for this reason (and to distinguish Bazel since it can legitimately claim to also be a âpureâ build tool that doesnât just call make
or whatever).
This happened during a series of âbuild summitsâ where developers behind pants and some other cool integration-and-adjacent tools were present, too (and in fact, some folks from CERN who were contributing to nix at the time AIUI - who got me back into nix, in fact ).
Of course, as always, nobody took charge to update the language around this, especially cross-project, so to this date Bazelâs tagline hasnât changed from âbuild systemâ and clearly the term âintegration toolâ has not entered peopleâs dictionaries.
My point is, Iâm not sure that an effort to establish a new term, especially one thatâs particularly wordy, is going to pan out