It's Difficult to Explain Technical Difficulties Encountered

Posted on December 26, 2021 by Richard Goulter

If you’re using a computer, and something doesn’t work, sometimes the best you can come up with when asking for help is: “it doesn’t work”.

Maybe you can be a bit more specific and say “I’ve plugged in my headphones, and they don’t work”.

But no one is ever going to say “I’ve got a headset, and I plugged the cable with the microphone icon into the jack with the headphone icon, and vice versa, and I can’t hear audio playing through the headset”.

Once you understand what’s going on enough to know what facts are significant, you probably know enough to find help on your own.
But if you don’t understand, then asking for help in a useful way is kindof difficult.

(From the asker’s side, this just means you can’t find the solution to your problem. But for troubleshooting sites like Reddit forums or StackOverflow, it means most of the questions posted are of low quality).

NixOS can be difficult to use.
I’d say it’s 95% wonderful, 5% pain in the arse to use.
The “gotta know what you’re doing” aspect both leads to and exasperates that painful part.

Well, Linux in general can be a pain to use.
Though, there’s an old half-joke that a lot of programming work involves a loop of writing code, compiling, copying the error message into Google and copy-pasting the answer from StackOverflow.
– If you run into a problem trying to do something on Linux, you’ll probably be able to find some StackOverflow answer which can help you out. You can often get away with not really understanding what’s going on. (Or, rather, “deferring understanding to a later date”).

With NixOS, there are some factors such that copy-paste-from-StackOverflow doesn’t help out:

One example I find notorious is the “hello world” in the manual doesn’t build. Rather, I’d expect to be able to take that example, put it in a file named “hello.nix”, and run nix-build hello.nix; but that won’t work. A StackOverflow answer discusses that the example is a “callPackage derivation”. (And so since it’s supposed to be invoked with callPackage <callPackage derivation> { }, and callPackage comes from nixpkgs, the full command invocation is like nix-build -E '(import <nixpkgs> { }).callPackage ./path/to/default.nix { }'..). – Whereas, usually “Hello World” is a program I’d expect to be able to compile and run without having to understand much about what’s going on.
– However, it’s imprecise to say “the example is incorrect”.

I say all this having just run into some technical trouble.
I was trying to use KiBot to automatically save 3D previews of a circuitboard designed with Kicad. I could achieve this by running the given Docker image. When I tried running the same program on NixOS, it didn’t work.
Or rather, after some troubleshooting, I found out Kicad wasn’t able to render OpenGL stuff in the Xvfb that was being run; I was able to work-around this by wrapping the Kicad command with virtualgl. – I can’t say I fully understand the issue, or the solution; but it works. Although I feel with NixOS, I had to understand more than if I was using a different Linux distribution.

NixOS can be difficult to use.
I think that’s worth emphasising (with the above in mind) as moderation to a couple of opinions about NixOS I see.
Some new users walk the 95%-wonderful happy path of NixOS and proclaim that NixOS is really easy to use. (Which way undercounts the pain running into the 5% pain-in-the-arse parts of NixOS).
Some users tried NixOS but found it too difficult. – While I think this is fair, and I won’t argue that NixOS is practical enough to be worth the effort, what I’d emphasise instead is that NixOS may require understanding a lot more about what’s going on than other distributions would.

Newer post Older post