A call for the Nix team to present a unified front on the outcome and strategy around Nix flakes

My understanding is not that it’s an official upstream project, just some people experimenting with it independently (c.f. Nix on Windows? - #118 by Qknight). So I think it’s an useful data point re: what @hraban said about systems, but probably shouldn’t be a worry on the “why is upstream spreading itself even thinner” front. YMMV of course.

1 Like

What would you recommend the nix community do to fix, and resolve flakes?

What is a good plan for thousands of us out here that are invested in and using flakes? Changes are welcome in my view and encouraged. What are some good ways for people to bridge themselves in a consistent way if flakes change?

Probably this is true for the majority

Some of us actually do use system aarch64-darwin and it’s a lifesaver there for maintaining the differences between systems, where we have substantial user bases that use macos, but deploy to linux. I’ll share more about this down the road.

3 Likes

I have appreciated your contributions on BEAM/Elixir in the past.

I’ve tried to read through a lot of the RFC, issues, etc on Nix to understand why many people feel that Eelco is blocking progress on this. I could not find any explicit blocking on my own, but I am not pretending to be an expert on it.

Would you say that it is the consensus of people who feel this is up to Eelco that the root of that view is because it is his design/his baby?

Not asking to de-legitimize your view, but rather to understand why this is such a persistent issue since 2021, and why people feel like there is such an impasse.

I wonder if whoever else is on the Nix team now could genuinely propose multiple plausible alternative ways forward, or if they have, and these had gotten stuck.

I have followed some of the discussion in lix community, and have seen there that some of the issues have been fixed, and tried to decipher some of the discussion there about the problems with flakes, and the possible solutions.

There is a lot of hurt/bad feeling around these issues too for sure. So, many people are not willing any longer to just openly discuss it. Some people likely feel they tried and got burned in the past, and I can respect that even if I did not experience it myself.

I hope at least for the sake of nix as an open source project that if any one person is stalling the project’s ability to make decisions, and move the progress/developer experience/user experience forward, that the people who are pushing the governance process forward are made aware of the facts on the issue, and are able create pathways that are codified into the rules of the community for how to handle such dilemmas.

If the issue is mostly interpersonal, and resolving to people just having a perspective on who is actually responsible for fixing, finishing design, or otherwise making decisions, it seems that if this is truly the problem, it could be resolved by further decision proposals/RFC. Usually/historically, among groups of humans who get stuck in these kinds of situations, having insight into what is truly causing the group to get stuck (that participants mutually agree is accurate) and solutions that participants mutually agree will work, can get it unstuck. It can be simpler to “fork” because you solve the mutual agreement more easily for the root cause and solutions. It is harder when people disagree about the root causes, and this influences the dysfunction of proposed solutions.

If the nix community can try to get more objective about what is creating any given blockage, it will probably open up the ability to afford more proposed solutions, and see them through.

7 Likes

Perhaps that they learn an important lesson about --experimental.

There is an on going effort (RFC136) to get to flake stabilization. @tomberek even showed up in this thread to write about on going efforts, which no one seems to have read, and instead most people insist on talking about their entitlement to free labour or their expectations not being met or whatever other grievance they have for the people doing the work.

I think the major upset is not particularly difficult to understand: a half baked idea was allowed through precisely because it was supposed to be interated on, and ever since a non-stop barage of marketing has pushed people towards the half-baked solution, and now the people that didn’t design it and don’t care for it are supposed to eat shit and live with the consequences. It’s especially galling because the major souce of marketing comes from the the company co founded by the person that pushed through the half-baked design in the first place and hasn’t manged to fix the the things that people hate. It’s not more complicated than that, imo.

11 Likes

I don’t recommend that people just learning their lesson is a feasible solution. Even if it is true that people should be cautious about using something experimental, flakes are indeed now mainstream in everything but name in my view. But I think at least Lix, and probably detsys maybe some others have, or would take care to find a way forward that would allow people to at least convert away.

Yes I linked to this here (and have read it. I used to work with Tom in the company where he is now employed and have some familiarity with these issues)

The good thing about that is that likely solutions could be found to actually move things forward.

1 Like

I think it’s absolutely feasible. I think the feasibility of it is exactly why this thread exists.

But names matter! For the record, I’m generally not for breaking peoples working code, but I also genuinely worry no one will ever be able to evolve anything in public again if the first version of every feature in nix no matter how it’s flagged is basically immediately locked in because people start using it. There is a whole feature in TLS to try and to teach lessons about extensibility.

Something I am quite confident of is that nix as an idea is too excellent to die. As much as it would be nice if everyone agreed on the same direction it’s obvious that that’s not true, and in such a case I actually think its great that any number of people upset with the status quo have started spinning up their own spaces and projects to make their vision happen. It’s healthy. It’s unhealthy to try and lock everyone in the same virtual room and hope we all come to an agreement. It won’t happen. When the dust settles I’m sure some really good stuff will have been built.

EDIT:

Forgive my hyperbole :slight_smile: Most of the rest of my post was directed more generally, but I didn’t make that clear.

1 Like

I agree with you. There really should not be a lot of reasons why in an open source software project that the people in the team contributing to it couldn’t keep iterating, evolving and moving it forward.

I think this thread probably exists as one plausible outcome (although probably not the best if it breaks people’s code which is why I thought it was maybe not “feasible” but whatever, it could happen no matter what I think.)

There are actually a number of plausible outcomes. Probably the best one would be if people start talking to whoever they think is blocking progress directly, and with an assumption of goodwill from all participants. It may take some time to rebuild some way of working together, but I think it could happen.

3 Likes

I agree with this too. I think it’s great that Lix and tvix exist, and I support both of those projects. I have not got to try tvix so much, but lix is actually pretty damn awesome and seems to be progressing well.

2 Likes

Good find! I wondered if this is the thread you were referring to. In that screenshot, can you help me understand where I suggest we would, or would want to, take Nix private?

1 Like

(I’m sort of defending you in the other thread so I hope you don’t mind if I argue for the other side in this one.)

It has structural similarities to the stereotypical Mafia threat: ‘Nice X you have here; it’d be a shame if something were to happen to it.’

This threat is a classic because it has a certain amount of defense built in—the speaker can challenge any accusations of being threatening by asking, as you have, where in those words was the suggestion that the speaker intended to do any harm to X.

Nevertheless, it is commonly understood to be a threat. The way the threat functions is as follows:

  • The listener is already aware that the speaker has something they want from the listener.
  • The listener is made aware that an item of value could be harmed.
  • The listener is allowed to become aware of the capacity of the speaker to inflict that harm (perhaps by the presence of a few muscular gentlemen, or a flash of a weapon, or the ability to exercise social or political power).
  • The utterance demonstrates that the speaker intends to draw the listener’s attention to these things.

The listener can therefore conclude that the speaker wants the listener to draw the inference that the speaker will use their capacity to harm X as a threat in order to secure the desired behavior, without the speaker having to explicitly say so.

These four points are unfortunately present in your thread.

  • You are generally making the case for what you want from the reader: fewer obstacles for corporate participation in the Nix community.
  • ‘It would be a terrible loss for the project overall if…’ identifies the potential for harm to come to the community.
  • ‘Several of these companies have the budget to…’ implies that being commercial and financially successful are the main conditions for having the capacity to inflict that harm. DetSys is both commercial and successful (it may or may not actually have the budget to do this, but you didn’t exactly claim that it doesn’t).
  • The tweets are a public statement that seem to be intended to be read by the people who would feel the loss to the community if it were harmed in this way, as opposed to something that was leaked to or overheard by those people, demonstrating your intent to draw the reader’s attention to these points.

It is therefore not unreasonable to interpret this as a threat in the ‘Nice X you got there’ tradition.

(Presuming that wasn’t your intention, it might be tricky to refute. Even explicitly denying the intent to threaten may not make it look less threatening—compare, ‘Of course, me and my boys here would never do that to ya… but ya know, someone might.’)

9 Likes

This post was flagged by the community and is temporarily hidden.

Hah, no worries. Thanks.

I see what you’re saying. It might be useful to know that those tweets are presented in reverse chronological order, and not in the intended order. Here it is in threaded order:

This was surrounding other events where there was pushback against other commercial users of Nix. It is not about us. Like I said in those tweets, I truly do believe this project is better if everyone is rowing the boat together and pushing for a unified goal in the commons of open source.

I hope that seeing them in the correct order helps clarify the intent. Reading them in reverse order certainly does tell a different story.

3 Likes

Respectfully, I think you should read the thread and the points raised above before commenting because a lot of design flaws were raised about flakes in this thread.

7 Likes

That is a belief that we have in common then. But how is that belief translation into action when we look at Determinate Nix, buying ad space on search results for the nix installer, tweeting vulns out before the community is ready, the blog post inviting people to the “DetSys community” when the nix community is in peril? Are those instances where we’re rowing the boat together?

Didn’t really change the meaning for me personally, but fair point and I did not realize that when making my screenshot.

2 Likes

Please refer to Announcing Determinate Nix where we’ve fairly exhaustively fielded these questions.

Are you meaning to move the goalposts here? The original lie used by folks was “DetSys dropped a vuln before it was public knowledge”, and your wording now is “but the community wasn’t ready”. Do you think this is a meaningful distinction, or are you just trying to “gotcha” DetSys again?