CirnOS - Brainstorming period

Yeah, as someone said, mitigation is another attack surface, and designing a clean and robust architecture is desired.

Getting back to the original topic, installing a system is not the only concern but also maintaining it be. How can we present useful concepts like generations, switching/rollbacking profiles, configurations, overrides and such, in a bit more user-friendly way? This is as important as Calamares (or anything similar) IHMO.

That’s a difficult one. It’s not simple… to understand how nix/OS differs from unix, then you have to have a good knowledge on how unix works.

I think it’s probably easier to understand how nix/OS works if you’ve never every used a unix or linux system before…believe it or not. You just have to unwired what you’ve learnt.

I’ve been working on some interactive nix tutorials, that basically give you a fresh a nix/OS systems and scenarios that give the users a bit of practise and guidance along the way.

Nix/OS is user friendly, as as they say with unix, unix is user friendly, it’s just very particular about who it’s friends are… I guess you have to very friendly with Unix (as a developer) before Nix/OS will even talk to you. Very tricky…

I’m quite tempted to setup something like nixcon, but a week long ‘nix/OS crash course’, where students(victims) can come for a whole week, a bit like a bootcamp, but…nixcamp… ;-)… Lets hope that’s possible one day.

Sometimes you just can’t beat real world , face 2 face training… over any youtube video or ‘extensive’ manual.

1 Like

Not directed at anyone in particular but let’s keep the thread on topic. What needs to happen to make a user-friendly version of NixOS?

@cirno on thing you can do is create a IRC channel so that interested parties can join.

One advantage of a fork is that less technical users could interact over there. I remember, from a previous discussion, that one concern on improving the install experience was to get too much noise in the community.

@cirno: do you have a transparent version of the nixos-cirno logo? Asking for desktop wallpaper reasons, for a friend of course. :smile:

:nine::nine::nine:

I do not frequently comment here!

However I wanted to state that this is exactly what I intended to happen when I created the profiles directory of NixOS.

The intent of creating the module system is that people who have the knowledge can contribute and help others who do not. This was never meant to be an elite restricting mechanism, this was meant as a sharing mechanism.

Today, I find that many modules exists in NixOS, this is awesome and I am thankful to all the community. However, providing consistent defaults for NixOS is one other aspect of the future of NixOS which should not be neglected!

SNM and musnix are great examples of that. These should literally be first class citizen in the NixOS ecosystem. The fact that most people are using bare NixOS today is the anomaly.

4 Likes

I think that when we discuss a “user friendly” NixOS distro that we, as technical people, often fail to really consider the point of view of non technical users. I think there are two kinds of “user friendly” we can talk about.

  1. Improving quality-of-life stuff that makes NixOS easier for technical people like us to manage and use on a daily basis
  2. Non-technical user friendliness. Making changes so that users with some or little technical skills coming from windows or macOS and use NixOS effectively.

If we’re talking about the second case I think it’s important to understand where those users are coming from. Empathize with them. How do they want their computer to behave? What benefit does NixOS give them? What are their pain points?

IMO the biggest pain points of less technical users are likely:

  1. Their computer isn’t stable. It slows down over time, it’s easily “broken” by installing the wrong thing or changing the wrong configuration.
  2. It’s not “simple”. It’s quirky and difficult to manage. A PC isn’t simple and straightforward like iOS or Android. It’s full of legacy stuff that’s only there because of the past (yes, linux too) and that stuff is confusing, frustrating, and seemingly arbitrary for people who don’t know why it’s there.

I think these highlight the unique benefit NixOS could offer to these users (and IMO to all of us). Nix has the unique ability to be totally 100% “safe” for the user. The pure functional nature means that (ideally) you can always reproduce a state or roll back if something isn’t working the way you expect. IMO that’s a pretty big value proposition for people frustrated with legacy OS (including linux) issues.

However for it to be truly user friendly it can’t be sold as “pure functional package management system lets you roll back generations”. That’s not speaking the language of the target user. What the target user wants is “NixOS is 100% unbreakable, your computer will always be simple and stable just like your phone”.

None of the details of how NixOS does that should be exposed. A user should not need to know anything about how NixOS works to safely install, configure, or roll back their system. The awesome power of NixOS needs to be wrapped in a UI that’s as friendly and “simple” as iOS. Using a terminal will never be acceptable to a non technical user no matter how simple it seems to any of us.

So I think the real challenges in making NixOS truly “user friendly” are:

  1. Building a UI for the user to manage their system configuration that exposes none of the underlying system details. “nixos-manager” linked above looks neat but it’s still far too technical for many users. It focuses on being a UI for the details of NixOS instead of being a UI for the problems the user wants to solve.
  2. Adding an installer that does not require any significant input or choices from the user for the most common case (formatting and installing to primary drive).
  3. Building a UI to guide the user when they inevitably run into something they want that isn’t available in NixOS yet. Perhaps a user friendly “request a package” system or a desktop app that loads a dedicated NixOS support discourse.

Anyway, just my thoughts as someone who does a lot of non-technical user facing app design. I hope someone finds them helpful.

5 Likes

I think this is a good point.
How about:

  1. An installer,that says: “You need broadband internet, multicore, 2gigs ram, 40gigs ssd and no other os around” to the user. User input should be reduced to minimum. Disk layout, encryption, all that stuff as sane defaults, no question while install process.
  2. The installer grants a system that the user himself can’t alter. It is curated by the Distro maintainer (which os has the best tooling for that?) The user even doesn’t have to care for system updates.
  3. User may do stuff and have failing apps in userspace…the system never fails

Having a set of “channels” (kidsNixs, datawarehouseNix, machinelearningNix, pentestNix, officeNix), maybe as one of the few questions a user has to answer in the install process could be a further step.

This is just unachievable (driver issues)… The system is never had to roll back is probably almost achievable even if not quiet.

How to decide how many roll backs to enable might be a hard question though… Some things you use once in three months but really want to have whan you need them.