(graphical installer rant)
I’m a bit fed up that this went again to graphical installer.
I agree that extending user base by adding a graphical installer is wrong. Do we need that? Is it good for the community?
I guess everyone here, when searching the web for an problem, found topics on the Ubuntu forum or the Archlinux forums (or pages on wikis). Which of them helped you at this point? Nowadays I just skip Ubuntu pages in my search engine results. I know that most of time I will not find the solution, so I don’t waste my time.
You may think it’s elitist, but I think that users that are unable to install the distro cannot really use the distro.
If one just want a laptop to surf the web, then she just installs Ubuntu or Manjaro or whatever.
Yes, maybe after 1 or 2 years the installation will rot, and she will be frustrated, because she cannot really use the distro. But at least it lasted 1 or 2 years.
It will be the same if she installed NixOS anyway. Do we want to target his audience?
Maintaining a graphical installer is a lot of work. Even big distributions installers (like Fedora’s) are not perfect.
I don’t see the point to put this amount of work when a shell and tools (fdisk, mkfs, nixos-install) do it right.
With NixOS, you need to edit/copy your configuration, so you cannot really bypass this step.
If you give the user a “default” installation, it will be completely unusable and unmaintainable for her.
Proposing a graphical installer would increase the number of users who “tried” NixOS, and in particular the number of users who abandoned it.
What we could do, is extend the NixOS “profile” to wrap “common” end-user use cases (say a graphical environment with working wifi, web browser, etc). The user may be invited to actually read the profile .nix file, which may be highly commented. Then she may use the profile (or a combination of them) and would be able to change it (say she wants chromium instead of firefox). This could be a smooth introduction to the configuration syntax. This could be enough for a basic usage of NixOS : changing a “firefox” line to a “chromium” line is not that hard, as soon as you’re able to locate and edit the file (thus, no graphical installer). If what the user need (working wifi, etc) works out-of-the-box, I think she does not need to tinker with most NixOS configurations (she will probably not setup sshd). If the user want more advanced configuration, she is welcome to ask for help, read the documentation, or do trial-and-error cycles. Maybe, 2 months later, she’ll do a PR to add a missing package.
(end of graphical installer rant)
More interesting (IMHO) thoughts, related to the original post:
- we could write a smoother introduction document to concepts than a raw manual. The manual is really useful, but need time to assimilate in your head. For welcoming new users, maybe we need another form of “manual” (this ties with what I said with the profile. It’s easier to learn from examples).
- searching the NixOS configuration options, the packages definitions, the module definitions, the function (e.g: mkDerivation, concatMapStrings) definitions is a bit cumbersome and scattered in several places. We could write a document on what are the entry-point for each of them, how to find them from the repl, the , etc. I think this is scattered in to many places today (wiki, manual, old blog posts, power user’s head, nowhere).
- in fact, do we want average* people to search through the git repository or their <nixpkgs> installation, or do we want nice interfaces (when they are doable)?
- more “modern” tools such as https://status.nixos.org/ are a big improvements IMHO, big thanks to those who put that in place. Maybe we need web developers, UX designers, etc who are not Nix power users but can build better tools.
- we could make a “showcase” “built with Nix” page. People built really nice things on top of Nix, beside the desktop/server usage. For instance a risc-v emulator, Nixery, cachix, CIs, nixbuild.net, etc. But there’s also the cross-compilation infrastructure (for embedded device developers), the docker tools, Hydra’s “reproduce locally” feature, etc.
- completely agree on the audience question. Should desktop still be considered as the main target?
- we may improve “selling” points and resources for new users, but I think we could also improve resources for power users. For instance, if one want to understand how C compilation works (gcc and friends packages, wrapper, NIX_*FLAGS, etc), she needs to dig into the Nix files. A bit of meta information from the authors (why? how? the plan, the big picture) could be useful to hack these things faster (Note that there’s a unofficial wiki page for this one). I guess it’s better nowadays for new things, when PR reviewers ask for documentation for non trivial PRs.
* off topic: in french we can say lambda people for average people. Not sure it translates to english, but anyway in our context this may be confusing
(Edit: was not meant to be an answer to domenkozar’s post. But Discourse is flat anyway)