Lix: an independent variant of the Nix package manager

@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.

8 Likes

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.

5 Likes

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.

4 Likes

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.

3 Likes

@RaitoBezarius

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.

7 Likes

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.)

2 Likes

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.

25 Likes

@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.

23 Likes

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.

12 Likes

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

5 Likes

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.’

6 Likes

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.

3 Likes

Agreed. When I started getting involved with Nix stuff almost half a decade ago, I already heard friends complaining about the development of Nix. I can distinguish two generations of contributors burnt out on Nix even before the Lix folks. Given that history, the lack of communication from the Lix folks is anything but surprising. To me, this situation is as a very clear case of “too little, too late”.


I think that dwelling in the past about how or why exactly things have happened the way they have is not constructive. But also, as others have noted, forks are not necessarily a bad thing, and while this likely was avoidable I don’t think that we currently are in the worst possible timeline right now. So let’s rather focus on how to proceed constructively from where we are now.

11 Likes

It’s less seeking answers than seeking solace. The idea that “too late” explains everything, and I can worry less about “too little”, is solace.

4 Likes

I’ve been daily driving Lix for a while now. It’s nice.

Seems a bit snappier than NixCpp and there are some tweaks to the user experience that make working with it better, like nix eval nixpkgs#python3 showing «derivation /nix/store/9v1jlbifgwgfw0l9v745kifpj9zdpl60-python3-3.11.9.drv» instead of crashing.

6 Likes

Nix 2.22 handles this just fine. You might have still been running Nix 2.18 or something, since that’s the current default in Nixpkgs. (I don’t know whether the fix originated with the Lix people and was backported, or whether it originated with the Nix people and was merged in, or whether they both arrived at a fix independently or whatever.)

4 Likes

Perhaps the best addition so far, I am in love with this feature.

7 Likes