Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login

Thank you for the explanation. I'm going to go back through everything I've read and see where it helps me.

However, I just want to address one thing.

> To be honest, nix is a system you have to actually use to begin to understand and synthesize. As noted, flakes make this hill less steep, but you won't really internalize the value and the system as a whole until you actually start using it some.

This is discouraging me from trying Nix for a couple of reasons.

Having read the thesis, understanding the necessity of reproducible builds and how Nix turns that up to 1100, and looking forward to being able to tell future contributors of my software to just run `nix-shell <whatever>` to set up my exact development environment, I think I understand the value of Nix pretty well. Being told that I don't understand it's value just because I don't use it feels a bit like condescension or elitism. You probably intended none of that, but that's what it felt like.

Second, flakes have not made the hill less steep for me; they've made it more steep, simply because understanding wasn't there. Some things are harder for some people than others, including things that seem like they should be easy to anybody. Math is easy for Terence Tao in a way that it's not for me. But I bet you there is something I'm a natural at that he finds hard or impossible.

Third, I agree, after all my study, that Nix is easier to understand once you use it. My trouble is that a package manager is a critical part of my system, and I don't want to run it until I do understand it. Standard package managers may be bad compared to Nix, no doubt about it, but they are understandable, which means I've been able to fix them when things go wrong. I have no such confidence that I could do that with Nix, so I haven't used it yet.

It is unfortunate, but there are a myriad of reasons why people who know about Nix, and want to use it, haven't yet used it. Sometimes, the reason isn't because they don't understand the value of it. I don't like that I am not yet confident enough to use it, but that's my situation.



view as:

I like to think of the nix ecosystem as an Olympic-size pool. These pools caused me a great deal of stress when I was a child, not because I feared drowning, but because I felt like I could not fully understand their enormity. I learned to swim despite this fear, and what finally helped me get over the fear, more than my swimming ability, was focusing on my purpose or activity within the pool.

It is easy to feel overwhelmed by the scope of everything within nix. So much of it is great. Many things aren't great at all. I do much better with it when I stop trying to take in the depth of it all and focus on the one small thing I want to do with it at any time. If there's something small and focused that you want to do with nix that elicits joy within you, I think it is good to dive in and learn enough to do that thing. I really like development environments as a focus, but that aligns with my personal and professional interest, and perhaps you want orthogonal systems or containers or application builds instead.

There is something to the understanding that comes through experience, but it's not because it helps me realize the thing I can see in my head, but rather because it will sometimes reach out through the machine and slap me very hard in the face. I have been dealing with this issue[1] since it began. It is pervasive, and it is painful. But it helps me realize how fragile this ecosystem we work with is, and it gives me satisfaction knowing that I belong to a group that might happen to surface issues present in safety-critical systems through nothing more than ceaseless rigor.

I hope you will join us at some point. I am confident that you will find it enriching.

[1] https://github.com/NixOS/nixpkgs/issues/175875


This is a great piece of advice. I hope it helps me someday.

> Having read the thesis, understanding the necessity of reproducible builds and how Nix turns that up to 1100, and looking forward to being able to tell future contributors of my software to just run `nix-shell <whatever>` to set up my exact development environment, I think I understand the value of Nix pretty well. Being told that I don't understand it's value just because I don't use it feels a bit like condescension or elitism. You probably intended none of that, but that's what it felt like.

I am glad that you acknowledge that it is only how it makes you feel as the original comment that are the cause of such obviously weren't intended for you interpret them that way.

It's a bit like if I told you that you need to use vim to actually be able to use it efficiently and you told that you had read the manual and understood really well the concept of modal editing.

I used to be like you, very confident in that reading, even regularly reading blog posts/articles on a subject was a great way of absorbing knowledge but at some point I have had to admit that that book/article I had read I did not remember much about and when faced with actually using/implementing something and I needed to actually use/implement multiple times to be able to do it by myself.


> I am glad that you acknowledge that it is only how it makes you feel as the original comment that are the cause of such obviously weren't intended for you interpret them that way.

Yes, but the unfortunate thing about Nix is that so much of the documentation and interactions with the community come off that way, to me at least.

> It's a bit like if I told you that you need to use vim to actually be able to use it efficiently and you told that you had read the manual and understood really well the concept of modal editing.

I think you need to read my comment more carefully. I fully acknowledged that using Nix made it easier to understand:

> Third, I agree, after all my study, that Nix is easier to understand once you use it.

What you replied to was me saying that I felt like I knew what its value is. To take the example of Vim, it's like I have watched many users of IDE's and gotten some idea of how fast they can be with it, then saw an expert Vim user and realized he was 10 times faster than any IDE user. In that case, I would obviously see the value of Vim, even if I don't understand Vim itself.

Reading Nix's manual, the pills, and many blog posts probably won't help me understand Nix fully, I agree, but I disagree that I won't see its value without them.

In fact, if the documentation cannot help potential users see the value of Nix, then they won't take the time to switch. It's a high cost to switch and not something that should be done on a whim. (I don't consider trying it out in a VM as switching, but doing so adds to the time cost of switching.)

> I used to be like you, very confident in that reading, even regularly reading blog posts/articles on a subject was a great way of absorbing knowledge but at some point I have had to admit that that book/article I had read I did not remember much about and when faced with actually using/implementing something and I needed to actually use/implement multiple times to be able to do it by myself.

I do not deny this. I have never denied it. What I claim is that I understand Nix's value.

However, that brings up three points.

First, to be told repeatedly that I don't understand the value of Nix also feels elitist despite that not being your intention.

Second, if I actually do not understand Nix's value, that is a massive weakness in the documentation. Helping people understand its value is crucial to marketing Nix to a wider audience. It's been almost 16 years since Dolstra's thesis was made public. Nix needs that marketing. The industry needs Nix to be in wider use.

Third, the best technical documentation I've ever seen has made me actually understand the thing it was documenting before I ever touched it, and when I touched it for the first time, I felt like nothing, or very little, of my understanding was wrong, and that my understanding was sufficient.

(Funnily enough, one of the things that did this was the RFC for AES. I had to implement AES for an assignment in college. My code is not published, of course.)

I know that the Nix community acknowledges the need to improve the documentation. I believe that the aspect I mentioned above is one thing that could help a lot of people make the jump from sitting on the fence about it. If not, Nix's lunch will probably be eaten by something that comes along, does the same things or provides the same value, and yet has accessible documentation.

To be frank, I've been tempted to do that myself at times when I've only been stopped by knowing that I do not understand what it's doing.


I'm in no way saying "you cant understand nix until you use it because its above you", its because theres moving parts. It does things differently than most other package managers. Its much closer to bazel/docker than apt.

You are trying to read the dictionary to learn how to speak a language. Theres just no substitute for actually using the thing.


Legal | privacy