-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rename IFD (import from derivation) to something more appropriate #8450
Comments
The new term should be easy to understand both in an evaluator context and in a scheduling context.
|
This issue has been mentioned on NixOS Discourse. There might be relevant details there: https://discourse.nixos.org/t/2023-06-05-nix-team-meeting-minutes-60/28933/1 |
@NobbZ had a proposal that seems to satisfy requirements and sounds concise enough: read from realisation (RFR) |
I proposed this in a previous docs team meeting: "Nested evaluation", and I think this is much easier to read and understand than "read from realisation" |
Isn't it nested building not evaluation? Realization for evaluation, building for evaluation. I'm starting to like "for evaluation" a lot. |
Isn't that quite easy to confuse with the experimental feature " We are already in a situation where some poeple are using "recursive nix" as an umbrella term that includes IFD and the experimental feature It is not that I want to push my own suggestion, I just threw it in for brainstorming in the discourse and got far further with it than expected, it is much more that I'd like to see terms that are distinguishable enough to make clear we are talking about different things! They do not need to be technically correct, they need to be understood. Thats why I still consider "IFD"/"Import from derivation" as the ideal thing. We use it like that for many years, and it is well understood, there are a lot of third party ressources out there that already refer to it by that term. Renaming it just creates confusion. |
Good point. These features are actually similar, I wonder if it could make sense to think of them as the same core idea and use terms for that convey that. (Recursive Nix is a good name, but we shouldn't hold back from renaming it if necessary, since it's still an experimental feature).
Renaming creates confusion for pre-existing knowledge and resources, but makes things easier to understand for everybody in the future. And with Nix continuing its growth, the fraction of the former becomes less and less, which makes me think it could be worth the trouble. |
Thinking about this again, we can call both "Recursive Nix", but to distinguish we can use:
@NixOS/nix-team Can you confirm whether it would make sense to have this naming? |
There's indeed a symmetry between IFD and recursive-Nix, but calling them nearly the same feels quite confusing. I'd rather have some frankly orthogonal namings |
Recursion within what? How is the nesting defined? In recursive-nix, we have instantiation and realisation happening from within the sandbox. If one of these realisations involves recursive-nix we have at least two distinct sandbox processes that are conceptually contained within one another. In IFD, if we want nesting, how do we achieve this? Not by performing IFD during the realisation, because that would lead us to recursive-nix instead. So it has to be before or after the realisation - the same as any other composition of operations in the language. Nix is a recursive language: you can invoke functions that invoke functions produced by functions, and any recursion around IFD is just the recursion we already have, even without IFD. So the recursion in "eval-time recursive Nix" has to refer to the recursion in the language, which is also present without IFD. This is bad. When I imagine a conversation with a beginner, they ask "doesn't Nix support recursion anyway, during evaluation"? Then I'd have to say: but it also says "Nix", which is really not useful at all because the language is also called Nix. |
|
This issue has been mentioned on NixOS Discourse. There might be relevant details there: https://discourse.nixos.org/t/2023-08-28-nix-team-meeting-minutes-83/32290/1 |
Very related comment by @Ericson2314: #8094 (review) |
@fricklerhandwerk I see the Nix team agreed to proceed with the renaming, but renaming to what? Also, is this blocked on something, or can the renaming go ahead? |
AFAICT there are no blockers and there is at least silent (that is, unenthusiastic) agreement to proceed with "read from realisation". Just a few words of caution in case you want to start with opening PRs: We should be extra careful with adding redirects and release notes, and try to orchestrate the change across the various resources as far as possible. Still there will almost inevitably be a transition period with potential for confusion. |
For what it's worth, RFR is ambiguous with Request For Review. |
EBEB was coined in an RFC discussion at some point. Source NixOS/nixpkgs#273110 (comment) I don't like it, because the last B is often irrelevant. It creates a situation where we have two distinct terms for the same phenomenon, which is EBE. Case in point: |
Brainstorming:
|
What about "realization-dependent evaluation" (RDE), or "realization-blocked evaluation" (RBE)? |
Unless something really good stands out, we could also accept "IFD" as a historical artefact, and spend the time documenting it instead. This would avoid having to rename the From my experience, the issue is not the naming but all the surprising places where it can pop up. It's surprisingly easy to trigger it without thinking about it too much. |
We have a dedicated page about IFD now, so we're already defaulting to this. |
Have to admit that RDE sounds cool though. What's that awful high pitched noise? Just evaluating.... |
Problem
It's not always import and not always from derivation
Proposal
We may want to do it rather sooner than later, as there will be more to change the longer we wait.
@roberth: evaluation-time build dependency
@fricklerhandwerk: the mechanism is "reading build outputs during evaluation"
Priorities
Add 👍 to issues you find important.
The text was updated successfully, but these errors were encountered: