To start with: The work you’ve put into nix.dev, Nix documentation, and the greater project has been an amazing boon to the project and its users. Thank you.
I’m going to write about two things here: Luc’s involvement, and background on Determinate Systems’ Zero to Nix project. Let’s start with Luc.
Luc works for me at DetSys. Luc worked on Zero to Nix because I told him to, because he works for me. He didn’t talk about his work on Zero to Nix because I told him not to: like a lot of project development, some of it happens in private before becoming public.
His involvement as a team lead on the NixOS Documentation Team started by being asked to serve at NixCon as someone who could get paid to do it, and I told him it was a great idea and that he should absolutely do that. My understanding was the role was primarily administrative, but I guess that isn’t the intent. He balanced his efforts between the two the best he knew how, but he was in that situation because I put him there. If this created a conflict of interest between the two, that is my fault. Don’t take it out on him. If you want to be upset with someone, I’m your guy.
Before we talk about Zero to Nix:
- My agenda and mission (and therefore Determinate Systems’ mission) is to get more people using Nix and build a sustainable business helping people use it. I think this is similar to yours.
- As a company, our perspective is that Nix is incredibly useful, but that the most effective way to learn and be productive with Nix is to start with Flakes. This is obviously in contradiction with the perspective that lots of people in the community have: that flakes are experimental and need serious redesign. That is fine, it is okay to believe that! But I don’t believe that, and that is okay, too.
About Zero to Nix. We set out to solve a problem: where should a person brand new to Nix go? There are lots of possible answers to this, but the answer isn’t so clear given our strong perspective on flakes. I was tired of not having a great answer to the question. With a team of skilled Nix developers and a couple of great writers, we got to work speccing out what we wanted. This is what we settled on:
- A learning experience which is “on rails”: with a step 1, 2, 3, … until you’re done.
- Very specific advice and recommendations without a lot of waffling or talking about alternative ways to do things. Nix has a lot of variety of tools, approaches, and processes, and we wanted to decisively choose some for our project.
- A library of “concept” documents that laid out deeper background across all the work. These fill in where people are curious, without making the main “on rails” experience too long or verbose.
- A lot of cross-referencing between pages in our resource, but also references to the very many external sources that also do a great job of filling out the picture.
This is a thing that didn’t really exist at the time, and we had a vision of what it could be. We looked at a few possibilities, but ultimately decided to go on our own: my belief was that presenting a strongly and exclusively pro-Flake message would not be acceptable for an upstream, official source. Having the goal of very specific advice also makes it very hard to “retrofit” it into an existing and established resource.
Why did we do it in secret? It’s fun and exciting to make a splash! It’s exciting to get your hands dirty on a new project and see if you like where you get. It’s also nice to play in a sandbox in case it doesn’t turn out right and you don’t want to continue.
If it turns out that what we wrote hits the proverbial nail on the head and is the perspective of the overall community, that is fantastic: let’s stabilize flakes and we’ll contribute it upstream.
I think we have some fresh ideas and fresh perspective that we want to tell the world about. I also think it is okay for us to do that, and that there is plenty of space for multiple perspectives to thrive.
Edited to remove an unintentional political reference.