Lix: an independent variant of the Nix package manager

Yes, and I think its clear now that the Nix Team’s communication about how much things were supposed to change was too weak.

You are acting like this was some sort of independent decision each of us is making. My whole point is that it was not.

I knew I was in a more privileged position the entire time! The whole point of my actions was to use my position of privilege to that to bare the brunt of the cost of reform, such that for others the cost of participating would be far less — to make things easier for those for whom everything would indeed be harder and more painful. The goal would be for my extra-pain-taking on the vanguard and their lack of privilege to cancel out until once again we are within the margin of error on “who is suffering more participating in CppNix”. That’s what solidarity is supposed to look like.


I think a lot of people have issue with Eelco conduct specifically and how he acts with people trying to contribute to Nix in good faith.

I am sorry, I understand that you are of good will, but how to put it. This was the result of everyone’s independent decision to come to it.

My analysis (take it with a grain of salt). There are two generations of disgusted Nix contributors, the recent one – Lix. Another one from another era, containing some folks from the Tvix project. And some folks who left the project in major reason for the stewardship of the Nix project.

Let’s stop the sugarcoating, please. Almost everyone in the Nix maintenance team was aware that something was going wrong many months before the open letter or what not.

I have a vivid memory of discussing this problem at Ocean Sprint 2023, I think this was repeated, repeated, repeated at FOSDEM, NixCon NA and more.

Everyone individually didn’t feel like there was something they could do or didn’t know what to do. When they were offered constructive recommendations, their efforts were dismissed.

If you folks figured out that those were minor problems, that is for you to understand why there’s not one but two failures on that end.

I want to heavily push back on this. You don’t have to take hits instead of others. No one asked for this and many people can collaborate in projects without having vanguards or what not.

If this is the project you are in and the project you are asking people to join, I hope you can see by yourself this is toxic, as folks are pointing this out again.

You chose to be a vanguard, I am sorry, this makes you equally responsible to perpetuate and continue this culture in your project.

The cost of reform you are talking about is something you self-imposed yourself.

I recommend that the Nix maintenance team discuss this and come to a common statement on the matter because I am really shocked by the comments you are making.

I think you are mixing so many things in this comment, you are talking about a technical matter “foundational clean-ups”, you are still acting as if this was shared with, e.g. the Lix folks.

And you are talking about whether you communicated enough or whether you showed you cared enough about contributors, not suffering.

That’s still irrelevant, as Jade told you, the impacts / the consequences of what happened are still transparent and clear.

Your projects had multiple issues that were clear and apparent to outsiders that leaked outside your team and had to become a Nixpkgs problem (as I had to become against my own will a Nix maintainer in Nixpkgs). You never acted on that, you never took the necessary actions to show that you (:= your team) know how to manage an open source project.

Each individual in that team bear a part of that failure and should diagnose why that happened and inform the community of that, in full honesty. I cannot fathom how people continued to say “Oh, you are right this is a problem in the Nix maintenance team… How could we solve that…” when some folks who were on the verge of quitting the contribution were confiding themselves to a member of that team and trying to find hope or change or something to be able to get back into contributions.


See Fix Eelco's Nix team title by infinisil · Pull Request #1410 · NixOS/nixos-homepage · GitHub and associated links for a bit of how I feel about this. In short, since joining the Nix Team, my relationship with Eelco has improved a lot.

Ideally that’s a sign of a replicable process — a little bit of video call face time goes a long way, much better than async messages. On the other hand, maybe that is a sign that I am “corrupted by proximity” and no longer able to empathize with what others are still experiencing and, accordingly, act as their ally.

I do believe that Eelco doesn’t wish to act as BFDL on the Nix Team, nor do the rest of us defer to him as if he was. Indeed the website (per the link) is updated so that it no longer says he is team lead (which I think was always an oversight). I hope that this can be a tiebreaker between the two above interpretations — to the extent that Eelco has not changed / still causing problems, he simply is less powerful than he was before.


I’m picking this out not because I think it is anything particularly egregious, but because I think it is a good illustration of the problem with the vanguard approach: a significant number of people, me included, cannot actually do video calls, and find text-based messaging to be significantly more accessible. We do not derive comfort or safety from video calls, it just makes an environment inaccessible to us.

Trying to address the situation with ‘a bit of face time’ is something that seems to serve the purpose of ‘comforting people’, rather than the purpose of ‘resolving the actual root cause of people’s safety concerns’, and it would be a likely explanation for why people did not consider this helpful for allowing them to participate.


@RaitoBezarius There is a lot in your message but it also rather vague. It is hard to respond to it all.

I don’t mean to be “sugarcoating” or implying that I did not consent to be a vanguard reformer and take on a corresponding responsibility. If you read my messages you will see that in fact at multiple points I actively said I was making a choice, and that the pain of choosing is less than the pain of having no real point thrust upon oneself, etc. etc. Of course this comes with real responsibility to actually fix things, and not just rest our laurels on “trying is enough”.

I am writing these messages because I feel sad, and after a few days it felt no longer useful to just bottle up my own feelings of sadness and not share them with the community. I also hope in airing these things, we inch closer to some reconciliation in the further future. But I am under know illusions that will happen right away. That’s it.


Yes I agree that that’s a huge problem with the way the Nix Team works. Perhaps, the biggest single problem.

Not only does it exclude a lot of people, but it also means our time is not used efficiently as we do things synchronously that “objectively” (regardless of the people involved in like, say, 95% of cases) are better done asynchronously.

I don’t know how to balance the fact that some people really work better with one way, and some people really work better with another way. But we are currently very far from a fair compromise midway point.


I don’t think that that is the major issue for Nix, to be clear - like I said, I’m only bringing it up to illustrate the problem with the vanguard approach; where it’s easy to lose sight of what the actual problems are, if you are not directly acting on feedback of third parties (rather than your own view of what you believe needs to be changed).

I’m very familiar with both the idea of “using your privilege to create change”, and the ways in which that can be done wrong. I think the intention is commendable, and that is certainly not what I’m criticizing; but the implementation is very important, and if you get it wrong, it can easily cause more harm than good. Using your privilege to push for change only works if you default to using your voice to directly amplify those whose needs you are trying to represent, putting your own views on what should happen aside in the process.

That is the hardest part; standing for things which you yourself do not yet understand or experience. But it is a critical part of making it work, and going off @RaitoBezarius’ comments, I am not sure that this happened here.

(To clarify: I’m speaking from personal experience here. I also used to do this wrong.)

1 Like

Sure, but I think the problem in your words is that there’s no acknowledgement of the fundamental mistake that comes with that choice. It is not sustainable.

What it tells me so far is that we are talking past each other and you seem not to understand the problems at hand.

I feel you on the sadness. I am sorry you feel like this. Likewise, I remember what it was for me for the past year to feel like shit when I received this message 🦦 NixOS 23.05 — Feature Freeze & Release Blockers · Issue #224457 · NixOS/nixpkgs · GitHub and I tried to reach out to discuss the matter and just got straight ignored. I hope it gets better for you, genuinely.

On the reconciliation side of things, I am… how to put it. Sad? I feel like I have been shouting in the void for the past six months. I do not hear a single thing of what I would have wanted someone to reconcile would say, and I do not have it in me to explain it anymore.

Not only that, but I feel like it would be helpful to hear the rest of the Nix maintenance team on that, to see if there’s an union on this.


Using your privilege to push for change only works if you default to using your voice to directly amplify those whose needs you are trying to represent, putting your own views on what should happen aside in the process.

Yes. But if I am going to listen and not make up my own narrative, I need to be told things. At this moment, I’ve heard more from @RaitoBezarius in Nix team meetings than any of the actual unprivileged maintainers. And I don’t want to play “cis-male telephone” where some message originating from queer folks hops between a few us cis-male people a few times and then is no doubt corrupted in the process.

The amount of people involved with Lix took from the get go took me by surprise. I thought Tvix had already absorbed most of the dissenting would-be contributors, and that was that. I didn’t know there was a “second wave” of people not happy working on Nix and also not happy working on Tvix. It’s a pleasant surprise that such folks are interested! It’s an unpleasant surprise that I didn’t know this and thus was failing to shepherd CppNix contributions much worse than I thought I was.



On the reconciliation side of things, I am… how to put it. Sad? I feel like I have been shouting in the void for the past six months. I do not hear a single thing of what I would have wanted someone to reconcile would say, and I do not have it in me to explain it anymore.

Shouting into the void with me in the room? My general feeling is that we’re very aligned when we’re talking about technical solutions (content addressing in the kernel, hell yeah! :slight_smile: ) but when you are talking about problems in meetings you are insinuating more than you are directly saying what you mean, and I have trouble understanding just what the hell we’re getting at — e.g. “what is the concrete action that needs to happen in order to fix the situation?”. Maybe this is like a French vs. American styles of communication thing, haha.


It’s clear that I spent less time with you IRL, etc. But I would have hoped that approaching almost N - 1 members of the Nix maintenance team would ensure that you would hear about all of that. If you didn’t, then damn…

BTW, for the record: I did suggest immediate actions, give the commit bit to certain folks, etc, etc. They were not done.

For reference:

(You reached out to me in private, promised to do the backport and you did not.)


At the end of the day, using privilege to push for change is a great thing to do, but the people who are hurt don’t owe spending emotional energy to help you with it. There are lots of things that the energy in Lix contributions could have gone to, but they went to Lix, because everyone involved was earnestly convinced that it was the better use of their time and energy. What efforts (and progress even!) there have been to make contributing to CppNix better are commendable, but we all decided — and not lightly, mind — that no amount of effort and energy we could realistically spend would be worth it.

Discussion about what progress might have happened had everyone only directed their full efforts elsewhere is pointless — the problem is that no one felt it would be worth it.


@Qyriad I’m actually completely on board with that.

To the extent that it’s just more fun for Lix people to work on Lix with each other, I am totally sympathetic. It sounds like a bit of what I was saying in Lix: an independent variant of the Nix package manager - #34 by Ericson2314 . It’s valid to just be weary and it’s valid to say “maybe there is a world we can all get along one implementation but we just don’t feel like putting in energy towards that right now because we’ve had enough”.

I don’t want to drag out more emotional labor from you all just because I’m feeling guilty or some nonsense like that. I just wanted to say I am sad and remorseful. If an un-fork happens, I am fully aware it would only be after you’ve all done enough working on Lix to feel less exhausted, less hurt and wounded, and more rejuvenated by the joy of working together on things you care about with the people you feel actually kinship with. I certainly owe you all the patience of waiting for that moment to arrive before demanding we all try to collaborate again.


As a total outsider, that some people are happily working on a Nix fork right now who would otherwise not have been working on Nix anyway seems like an obvious win vs. where things were a few months ago. Surely we can all be glad for that.


@pxc That’s where my head is at. It’s my heart that is misbehaving thinking about other things :).


It’s happened a few times in ‘modern’ OSS history. Being a bit of an old-timer, egcs was one I remember - there was a build up of frustration, a fork, reasonably co-operative cross-project cherry picking, and eventually a reuniting of the codebase (WP says the fork was in the end the ‘blessed’ branch in this instance.) Another one was OpenWrt v LEDE - though that was much shorter lived.

Obviously forks can be destructive, resource-sapping, etc, but history suggests they can be productive too. There is no absolutely scientifically correct way to run an OSS project and people are always going to disagree, get frustrated etc. It’s messy and people get apprehensive about seeing their “laundry being washed in public”, but the OSS ecosystem opens up sets of potential better outcomes than in the closed-commercial world where projects just get killed, or left (intentionally or not) to ‘rot on the vine.’


Similar but also slightly different for me - I’ve only really been dipping my toes into the Nix world, and only for the last 9 months or so. I have pretty low mental bandwidth for learning new stuff, so it’s been really slow. And just as I’ve started committing more to it on my machines, the world exploded.

So I did really worry I was backing a horse that was going to fall at the next fence. But actually, when the Lix and Aux announcements happened, that seemed a good thing, because it meant there was an intention to progress and sustain somewhere. And then finally some moves happened on the Nix side as well - to my mind rather slow and late in the day, which normally would worry me, but obviously at the moment Nix still has a huge amount more ‘money in the bank’ (metaphorically and maybe literally.)

My brain doesn’t work well enough and I don’t understand Nix well enough to be a useful contributor on that side of the divide. OTOH, my limited bandwidth and ageing skillset might be useful to help bootstrap some infrastructure for Aux initially, while waiting for the ‘grown-ups’ to take over. It also feels like a friendlier place even with my ever-present sense of a bit of a generation gap. You could argue there’s some technical and emotional naivety too, but that might be a worthwhile trade off. It seems to me at this point that the harms of not trying a different approach outweigh the risks of duplicated/wasted effort.

1 Like

I couldn’t think of a good introduction, but let me try to participate here.

However you are now insinuating not that nothing changed fast enough, but not that nothing changed at all

I’m not quite sure how to express it properly, but to some extent, those two are equivalent. If things aren’t changing fast enough for your liking - you get a lot of burnout! In a sense, it’s like nothing changed at all - you know this to not be true, but it doesn’t really help.

I think your suffering is very valid. But I also think your suffering shouldn’t have had to be in place to begin with - and neither should have anyone’s. Contributing to a project and putting your valuable free time and effort into it should never cause suffering to anybody. It’s very unfortunate that it caused suffering to you - and it also sucks that it caused suffering to many other people.

All in all, the situation sucks. It sucks a lot, and things could’ve been a lot better. But the damage has already been done, and the only thing we can do is to accept it, hope for the best and learn from our mistakes.

1 Like

@KFearsoff Frankly, I am not sure “not fast enough” is even true. There has just been so little communication between the Nix team and the people now working on Lix in the past year or so, there is no way to tell what sort of, e.g., refactors that would have been blocked before would have landed after all. It’s an unknowable counterfactual. (The letter is mostly wrong about why Meson was being delayed, for example.)

It’s a perfectly reasonable interpretation that had actually things were procedural fine over the last year or so in terms of welcoming contributions (avoiding regressions however another matter) but, because of old grudges people were not interested. I, as a team member, can do things like review PRs, respond to chat messages, etc. But I can’t wave a magic wand and get rid of old grudges and reputations.

People were already burnt out before things started improving, and now we’re saying a reaction to that. Everything is very asynchronous.