Determinate Nix 3.0

Can you just state what is the move that is being forced here?

If the answer is ‘Nix is being forced to also mark flakes as stable’, why is that being forced? Why is Nix not free to continue to do what it is currently doing with respect to flakes, or free to restructure them, with the consequences for divergence lying with DetSys?

In this particular instance, and it requires reading between the lines, and pattern recognition from the many times before where Determinate Systems (Graham) launched ultimatums. To force[1] an outcome regarding the “stabilization” of Flakes. I don’t have a complete list, the most recent I remember quickly is from October 2024.

Note that by force, or forcing, I do not want to imply that the Nix project is obligated, or that a conclusion is reached already. This is force synonymous to coerce, and pressure.

In that form, using their privileged position in the ecosystem, Determinate Systems is adding more pressure on the Nix upstream project to buckle and just cave-in removing the flag.

Also using the argument that they already have been shipping the feature to n dozens of users, successfully, and have been for a while already. Just to put more pressure, pressure in ossifying the design as-it-is, rather than keeping the option open to become incompatible.

Though that is not what is happening just now, and not the main point I’m trying to convey. This pressure with Flakes not new, and is something that has been continuously happening since a while. Determinate Systems has been shipping a Nix with Flakes enabled since before November 2023 (that post was about the graphical tooling to install).

What needs to be recognized here, and the crux of what I’m trying to say, is that Determinate Systems, even though it might not be the intent, are now using the lack of trademark surrounding Nix to cause confusion, by making their product DeterminateNix 3.0”[sic].

The use of Determinate Nix as a name was already noted as contentious in the previous discussions. So it’s not like everything was fine and that this is not fine anymore. To many it already was not fine.

But now, after apparently successfully having co-opted the Nix name, they are effectively co-opting the project’s roadmap, and version numbering scheme, for their own fork.

And, it is entirely possible I suck at communicating, but I feel like I’m repeating myself round-and-round, and at this point I don’t know what you want me to say.

To summarize:

The move is effectively a continued attempt taking control of the direction of the Nix-based ecosystem, and here by pressuring the Nix upstream project through confusion and decision-making by the founder of Nix, and taking decisions on behalf of the Nix upstream project, by saying that the roadmap to 3.0 is done, and that their fork is Nix 3.0.


  1. ↩︎
12 Likes

Thank you, this is the part I was missing. I didn’t understand your use of the idiom ‘forcing the hand’ to possibly mean something as weak as ‘applying pressure’. I do see how DetSys’s move here does add some amount of pressure on Nix to follow suit.

4 Likes

To be clear, the pressure I am applying in that thread and elsewhere is to make a choice one way or the other. The Nix team has not clearly signaled that Nix will ever stabilize flakes. That linked thread is actually a response to a now-retired Nix team member suggesting Nix remove flakes altogether.

This uncertainty is not good for anyone, especially Nix, and we can see why by observing what happens on these threads.

I honestly don’t care what the Nix team chooses. I just want the team to choose. Or the steering committee. Somebody.

From a personal perspective, obviously I think it would be a catastrophic mistake for Nix to not stabilize flakes. The data shows people are using them, and newbies are adopting Nix via flakes. This has been true since long before we started shipping them enabled by default, and I personally was opposed to using flakes until they were stable. The data and my users convinced me otherwise.

I see it this way, there are three possible scenarios regarding this choice of the project’s leadership:

  1. Decide stabilizing flakes will definitely happen, and present that as a strategic goal with an extremely clear roadmap about how that happens.
  2. Decide flakes were a failure and remove them.
  3. The defacto choice of don’t decide.

Unfortunately #1 and #2 both have fairly bad side effects:

  1. Deciding to make flake stabilization a strategic goal presents a very high risk of alienating everybody who is passionately opposed to them, for whatever reason. Many of these users are long time users and contributors, and it would be very painful to alienate them.
  2. Deciding flakes are a failure would alienate the zillions of new users, and turn off the significant growth in usage the project is seeing. I believe this could scuttle the project.
  3. I’ll touch on this in a moment.

Note that nontrivial breakage to the current flakes design without a smooth transition risks doing both #1 and #2 at the same time. This is the reason Determinate Nix includes our commitment to supporting flakes, and supporting the transition to future iterations and other semantic changes that will undoubtedly happen.

Unfortunately, as a userbase we are all stuck in #3. There is no choice. This is the worst outcome, and breeds significant uncertainty about the project and its future. This is why Determinate Nix’s users have been asking for us to provide stable flakes in the first place.

Between #1 and #2, I do not envy the Nix team and/or steering committee making that choice. It is definitely a rock and a hard place. However, a choice must still be made. Over a long enough time period, the act of refusing to decide about such a fundamental design iteration on the Nix project can be categorized a few ways, but at this point – to me – it is indistinguishable from cowardice, incompetence, and sabotage.

After such a long time, I am no longer interested in waiting due to cowardice, incompetence, sabotage, or what other reason has made this choice so impossible.

So yes, this is applying pressure, but I literally do not care at this point if the decision is flakes or not flakes. My users do care, though, so I am delivering what they are begging for.

4 Likes

Graham, why not rename the software DetSys distributes to something less confusable with upstream Nix? Most of the concrete objections here seem to hinge on that, and you could buy back a fair amount of community goodwill by changing course on this before lawyers get involved, without giving up on any of the value your users are begging for.

16 Likes

I think every party can agree on this. Why does the leadership of the nix project refuse to have a direction for said project? Lix and determinate nix are the result of this, the ecosystem would be better off if neither had to exist.

4 Likes

It is not a fork, it is a downstream distribution. There are many examples of exactly this pattern: distributing a patched version of an upstream project and call it “CompanyName Project”, where it is a downstream distribution of Project. This is an extremely normal thing to have happen in open source. One prime example of this is Linux itself!

Typically downstream distributions (like RHEL) pay for a license to use the project’s trademark as part of their product or business name. This is part of the owner of the trademark protecting and defending that trademark. Issuing the license grants permission in a protective way.

When there is a trademark, and a trademark policy is established, I would be happy to revisit that. However, until then I’m not convinced changing the name will meaningfully satisfy the unhappy people in this thread. I’m also not super interested in being subjected to a different set of rules than the rest of the commercial actors in the space that have also been using Nix in their company and product names.

4 Likes

Would you believe the unhappy people if they told you it would? (earnest question)

Who do you have in mind? I think DetSys is alone in offering something that is a replacement for upstream Nix and using the Nix name in that offering. The only company I know of with Nix in its company name is Nix.How, and they offer consulting, not a competing product.

9 Likes

I believe you are being earnest. History is not perfect at predicting the future, however given the past it would not be easy to find those statements credible.

2 Likes

While I disagree with this statement, I don’t think satisfying the people in this thread should be the metric by which you decide whether to change the name or not. Given that the purpose of the trademark is to avoid consumer confusion, and given that, as far as I can tell, your product is the only product that has demonstrably been consistently confused with upstream nix, and directly competes with it, determinate nix is quite literally exactly what trademarks are built to protect against. As far as I know, you are the only commercial entity in such a situation. While certainly, the nix foundation does need a trademark on this, it still feels incredibly backhanded to name a competing product something similar enough to cause confusion, seemingly without approval from the nix foundation, when it’s clear that they should have the trademark, and the situation caused by the name is exactly what a trademark is supposed to protect against.

If you feel that this is wrong, you should probably change the name, regardless of whether you feel like it’ll satisfy the people in this comment thread or not. (That said, I do sympathize with the unfortunate situation that you probably would not want to name your product “dix”).
To the nix foundation, you should really talk to Determinate systems, and potentially send a cease and desist if necessary. I don’t mean to say that they are acting in bad faith, but the fact that this product exists with it’s name and function being so similar will weaken any attempts in protecting the future Nix trademark. I don’t think anyone here wants an actual bad actor to come in and try and take control over the nix name.

10 Likes

Because nothing else works! There have been years of constructive talk about that - which led nowhere, because Eelco, who was BDFL in all possible regards then, dismissed and ignored it. It got more heated - he still did exactly nothing. We had an open letter - to which he wrote a horrid response which led many people to ragequit.

You and a couple others are trying to justify solving leadership issues with abusive behavior. If you feel like inciting Mastodon mobs, repeated DARVO, telling people to step down in public, near-constant guilt trips of people who don’t rise to your standard, and other forms of bullying are productive, that’s your prerogative.

Leadership has been a huge problem for years, talk to the SC to fix it instead of moving the goalposts by saying that now the SC is doing nothing. One thing’s for sure: if that’s your approach, it’s just as antisocial as all the previous. No thanks.

11 Likes

So you don’t actually care about the potential for confusion or even the moral issues, just the legality. Got it.

12 Likes

This sentence is so rich with FUD that I’ll have to break it down pretty much word by word.

No, what me and “a couple others” are doing is explaining the reasons underlying a behavior. The crucial difference is that “justification” absolves people of responsibility, and explaining their reasons doesn’t.

It is funny you say this to me, actually - because I have been consistently criticized by the “couple others” for making my criticisms too personal, which was turning it into bullying. And when I get this criticism, I address it with open mind.

So it says a lot that you consider an exclusively me-problem as an everyone-problem. You probably haven’t followed the topic any closely at all, is what this suggests to me. And it seems like you consider public criticism an act of bullying, which is an ironic position to hold, considering you yourself just lobbed a piece of public criticism.

Pray tell, how come years of constructive, thoughtful, polite and good-faith feedback, often backed up with concrete plans, proposals and actions, prior to this so-called “abusive behavior” have done EXACTLY NOTHING to resolve the leadership issues? Do you at all see leadership as being responsible for the crisis? Or is it really the fault of everyone who tried to solve this issue that they were constantly denied opportunities to?

Such as calling for accountability, responsibility, and disclosure of conflicts of interest? Publically, because they are just shrugged off when confronted publically?

Funny you say that, engaging in DARVO.

Yes, because they are obviously and clearly damaging to the health of the community, and their countless failures make them ineligible for formal positions.

And why has it, exactly? Is it just an unlucky coincidence? Or maybe there are people who cause these problems, by virtue of action or inaction?

Have you?

Btw, the irony isn’t lost on me - I talked to SC in private just a week before this thread was created, about a closely related issue, and got an unsatisfactory answer that amounts to “we don’t currently plan on addressing this, but some of the other things we’re cooking should address this by proxy”. They haven’t yet had the chance to respond to my inquiry about it, so no comment on whether their other measures are good or not. But I see that this thread was entirely preventable, had action been taken, which it still isn’t.

How dare I ask the people who were elected by the community to address issues of said community. When it’s their task, and sometimes a paid job.

I am genuinely baffled that you hold such views years into the conflict. You should seriously reassess where you stand, because your points are not well-made, your rhetoric is harmful, and your behavior is one that opposes solving any of the problems Nix comminity has.

14 Likes

So, this justifies the telling people to step down because this didn’t work? Curious.

Edit: You know, you could have just said “do your damn jobs” - which many people, myself included, would have agreed with, because the confusion between the DS Nix and Nix name thing is an issue. Note that the Values say that the project’s interests take priority over individual interests. Instead, you’ve gone to the next level and told people to step down, which is the next extreme. If you’d like something to happen, simply say it directly: don’t be more inflammatory than is necessary.

4 Likes

Are you intentionally ignoring why they’re being told to step down?

6 Likes

Not at all, see the edit. Seeing things in less than absolutes would help everyone. :slight_smile:

4 Likes

Sigh. Was my effort writing a response wasted? Because it sure looks like you didn’t engage with it on any level.

Look, I have already explained what constitutes “justification”, and what doesn’t. Not that there would be any need to - there’s nothing wrong with telling people to step down if they are unfit for a leadership position, and there’s no shame in stepping down, either. There is shame in overstaying your welcome and remaining BDFL without the B.

And I ask of SC exactly that. For Eelco - you might have missed the memo where he was urged to do his damn job, for years on end, unsuccessfully. At some point, you gotta cut your losses and admit to yourself that finding someone who will do their damn job is much easier than putting up with someone who doesn’t, and insists on it staying this way.

11 Likes

I think some parts of your previous response are ultimately not going to be reconciliable, especially the bits that seem to be justifying the antisocial games being played given the lack of leadership. However, there is a bit of common ground I think we share, and this certainly shouldn’t be a “with me or against me” situation:

Both. Leadership is heavily responsible too for not leading, and that’s what the SC is supposed to resolve. For goodness sake, let’s give them the opportunity to, instead of immediately jumping to conclusions about what they intend to do. This is not an all or nothing issue, and there are no “sides” that aren’t just intrinsic to conflicts which can ultimately be resolved.

It’s a prisoner’s dilemma, the best outcome involves_all_ “sides” trusting that people will act in their best interest. I get it: it’s difficult to, the history frankly sucks. But, the current situation is the best we’ve got. I’d encourage not extrapolating one failure of leadership to another. Note that my bias is that I also say this as someone who applied for the SC, and want them to succeed because I believe in NixOS, and want it to succeed.

The SC succeeding at their job doesn’t mean that we get to tell people to step down: even if it “works” and gets a response in a leadership vacuum, the most “effective” thing isn’t necessarily right for those involved when there no longer is one. The idea behind electing people is that they’ll generally act in the electorate’s interests, and work to come to an agreement.

Let’s try to do that. Telling people how to spend their time by calling for resignations bypasses what we’ve worked hard to build. If we want to just burn it all down, that’s sure a mood but it’s not at all constructive.

13 Likes

It will soon be 4 years since I got into this community. Back then, there was talk about governance issues. The common response was: “we need to trust each other more, the situation is different now, let’s find common ground, let’s try working together one more time”. And so people tried and gave it their best, and it failed, and when questions were raised about the issues, same response was given: “just one more consensus, bro”. Apparently, it has been an ongoing pattern for a few years back then.

So now it’s been around 7 years of “just one more discussion, please bro”. How many more years of stagnation need to go by, before it’s time to say that this doesn’t work? How many contributors have to leave in frustration for anything to get done?

9 Likes

I don’t think option 2. is at all feasible. In fact, I think the whole argument of “flakes are marked experimental, therefore we can make breaking changes” is an illusion. While the vocal part community has been having an endless ivory tower debate over the “best way” to do what flakes does, or how to fix flakes or what the optimal way may or may not be, people have adopted them at great length and they have de facto become the industry standard when it comes to building composable nix projects, despite all the shouting and experimental flags.

One great promise of reproducible Nix is not just that whatever you build will build the same way today, it will also build the same way tomorrow, next week and next month. You can put your project on a shelf for 10 years and when you dust if of again, it will still just build, as long as you have nix as your trusted cornerstone. If that promise gets broken, the nix community will break along side it.

So unless we want to see another bunch of forks, we really only have two options:

  1. Accept that flakes are the de facto standard and roll with it as best we can or
  2. find a way to keep flakes around without making them an integral part of what nix is while we work on something better.

Either way, the chance of ditching or breaking flakes has come and gone and we should just accept the fact that they are in fact stable, rip off the band-aid aka. the experimental flags, and move on from there.

3 Likes