Policy on vibe coded nix tools?

FWIW I’ve used LLMs to assist me recently with Navi, and I considered putting a header on some parts of it, mainly just to make clear that I am loud and proud and try to live outside the LLM closet.

I’m personally not ashamed of using LLMs, neither linters, documentation, or a split keyboard. They’re just objects to me, or tools, not a strong moral stance[1].

As someone that has dealt with a large volume of PRs over the years both before and after LLMs, and someone that has worked with a lot of codebases before LLMs came around - both professionally and in open source - many of the well known and beloved Nix tools are written really poorly from an engineering perspective. They have been so long before LLMs were around.

I think a lot of people now over-index on the origin of the code without realizing that most code is generally of a very low quality. One doesn’t need to look further than Nix itself to see that most tools in our space have less than ideal software engineering.

Whether or not a code originates from an LLM, an advanced autocomplete, or someone clicking a keyboard, it should be assessed based on its quality, not origin[2]. What gets people in trouble is they either think their code is brilliant just because it’s organic, or they just tell their LLM agent to “build this tool” without caring much for how it’s build.

But whether or not a human or a transformer typed the code, what really matters is the quality of the output. And I’d go out on a limp and say that LLMs have been a net positive for the amount of output and quality of the code I’ve written recently. But I’m also not naive about the limitations, and I take my engineering seriously, even if I use an LLM.


[1]: There are real conversations to be had about environmental impact, but don’t be naive that the plane ticket you take for NixCon, the Lithium battery in the device you’re reading this on, or the global supply chain or even tiered system you live in as someone that understand tech means that you just have to be “anti LLM” and you’re morally superior.

[2]: Unless you’re interested in issues around licensing, but it’s not something that you should factor into a code review, code should be taken at face value.

18 Likes