Marketing Team: Can we present Nix/NixOS better?

I don’t think you can compete with such mature distros, yours being so new. That being said, I’d hope you’d be welcoming to any who’d move things along in that direction. I hope that is the ultimate direction; except the one-size-fits-all attitudes of some.

Regarding a dynamic swapfile, here’s one attempt: Swapspace. The author thinks it works pretty well, and doesn’t need much updating. He says he won’t do much maintenance on it now. Maybe it could be adapted for NixOS. Here’s a discussion of how badly Linux behaves when a program uses all the memory and available swapfile space: Linux Performance: Why You Should Almost Always Add Swap Space | Hacker News. Basically, it’s almost always a hard reboot while the swapfile is grinding.

Here’s a graphic installer that functions the way I suggested, by giving you the choice of what categories of desktop software you want installed:

How to Install CentOS 8 (Step by Step with Screenshots)

I’d say, Nix says “nix”, i.e. no, to bad package managers that are subject to dependency hell, and not letting you choose what volume you can install things in. I’d hope NixOS simply ignores bad decisions of present-day linuces, and implements what it implements, right, with the eventual aim of competing with some of these big distros. I’d hope NixOS will say “No!” to bad distro ideas of the past. My (inexperienced as an OS dev) advice would be, just do it right, and hopefully others will join in.

In the present case, perhaps some of this code can be pilfered. When an author or a linux is doing something right, use it if the licenses work; or learn from it. Don’t see it as a limitation, however, if the OS of the future really should work differently. Stand on the shoulders of giants, but don’t be afraid to climb higher from there!

You could do what Red Hat does, except for the selling it part: sell support contracts, with the lion’s share of the money going to people who get paid for helping with support questions. The rest would go to a Nix foundation, which could then promote NixOS and set bounties for code development. Just trying to be helpful, to brainstorm and cheer-lead a distro that shows promise.

According to wikipedia, the first release was in 2003. Making it older than ubuntu and centos. Maturity is a different metric. I would say that NixOS has very mature package and configuration utilities. But NixOS is not very mature in usability. Essentially you have to master it for it to “work for you”.

However, rate of progress through volunteer effort is a lot different than progress through paid+dedicated work.

2 Likes

We all at one point tried and failed to “sell” Nix/NixOS either to a friend, a coworker or a client.

Can I just ask the maybe pointed question: “why do we need to sell NixOS”?

I agree that on-boarding could be much better, and I frequently wish there were better docs for both nix (the language and the CLIs), nixpkgs, and NixOS, but none of that is marketing, or selling people on the distribution.

I feel that thinking about projects only in terms of metrics such as “how many people are using us” and “how can we get more people in” leads to a dangerous mindset that will make it much easier to justify all sorts of horrible things in the name of metrics.

Have a learning team, focus on writing docs, make it easier to understand what problems nix can solve, and how. But don’t do marketing.

8 Likes

We all at one point tried and failed to “sell” Nix/NixOS either to a friend, a coworker or a client.

Can I just ask the maybe pointed question: “why do we need to sell NixOS”?

I think you didn’t phrase the questions correctly, it should be: why do we need to "sell" NixOS?. Quotes were missing. The word sell being in quote implies that this is not a traditional way of selling, but something that can be understood as convincing, reassuring, teaching, … Please understand I’m not an expert in English I’m trying to do my best to convey my thoughts. I thought quoting the word would tell it the way I intended.

I agree that on-boarding could be much better, and I frequently wish there were better docs for both nix (the language and the CLIs), nixpkgs, and NixOS, but none of that is marketing, or selling people on the distribution.

I think nobody in nix community can disagree with the idea of better/more docs. Deciding to give Nix/NixOS a try and then funneling that person to the tutorials/manuals/docs is what part of the marketing job. Not being able to find the correct learning material (for them) is what is already happening with current website and we only have 3 manuals. I heard too many times: Oh, there is a nixpkgs manual as well?

I feel that thinking about projects only in terms of metrics such as “how many people are using us” and “how can we get more people in” leads to a dangerous mindset that will make it much easier to justify all sorts of horrible things in the name of metrics.

I think you are pointing out a good scenario what we should not do. And nowhere we were applying that we will be doing this. I think we need to first discuss what a success for Nix/NixOS will look like in order to be able to discuss how to measure it.

Have a learning team, focus on writing docs, make it easier to understand what problems nix can solve, and how.

I don’t think this to problems can not be solved in parallel. Having a learning/documentation team would be amazing. My personal opinion is that before doing any learning material we should fix nixos.org website and have an idea which audience (and markets) we are addressing with the website. Then you also know which tutorials are needed first. But I understand that we disagree on this, which is completely fine, I hope the disagreement will result in a Learning team :slight_smile:. I would invite you to join Marketing team and start working on better tutorials and sooner or later others will join you to form a Learning team.

But don’t do marketing.

This is the comment I resent a bit. Telling somebody what to do with their time. This “don’t do this” culture I’m seeing in Nix community is not very welcoming or encouraging. I can understand you disagree with my ideas, but there are nicer ways to express the disagreement. I hope this was just a poor selection of words which I also often do in a rush of trying to express myself.

4 Likes

I agree, NixOS must stay true to its power-user-base. However, there is a middle ground wherein Nix specialists are managing headless and workstation machines for their teams. How the installer is driven is irrevelant, but having a properly installed desktop environment with the appropriate features is important.

I would like to see better considerations for how NixOS presents itself to the immediate user. That means checking that menu entries are present for all graphical applications and some of the TUIs that we package. It also means easily accessible documentation such as shallow “cheatsheets” for installing missing software.

I think putting some focus on the user that didn’t install NixOS but is using it anyway is quite reasonable. Many people are using computers but only an extremely small segment of users can even conceive of what installing an OS means!

Expanding the user-base with a graphical installer is the wrong strategy, I think its better to attract contributers that are interested in managing desktop fleets or building specialized systems like Tails or Lakka.

1 Like

I think it has been left implicit by most participants in this thread
that growth is important and to be pursued above all.

I’m not even convinced we should be pursuing growth at this moment in
time.

The Nix community is a healthy size already, and we’re getting lots of
good work done. I’ve already heard of several “NixOS hostages”, who are
now forced to use Nix because their company has committed to it, and
don’t get it or just plain dislike it.

I think that attempting to actively market Nix risks creating more of
those people, or other people who try Nix, become frustrated with how
things are today (language-specific package management, secrets
management, etc.), and then write off Nix into the future, even after
we’ve figured out how to improve those things.

So any marketing effort needs to be focused towards people who are
likely to see the potential in Nix, and stick with us despite our
current failings. Suggesting that we should have a graphical installer,
for example, is the opposite of this. People who can only use NixOS
with a graphical installer are, in my opinion, not likely to be people
who are willing to put up with Nixpkgs’ myriad little quirks and
annoyances, let alone its big failings, in its present state, and so I
think that such an effort to reach out to those people at this moment in
time is likely to just result in more people who permanently write off
Nix. People are much more inclined to give something a first try than a
second, and so it’s important we bring them in for the first try at the
right time.

At the same time, there are groups like Haskell or C++ programmers where
Nix is likely to be a huge improvement over other workflows. Reaching
out to those people is a good idea, because they are likely to have a
good experience, join the community, and stick around and contribute.

And so I think it’s important to bear in mind, rather than just “how can
we grow the community?”, what the potential risks are of reaching out to
people in any particular way.

My priority is not on getting Nix used by as many people as possible,
and I don’t think it should be anybody else’s either (even though that
would probably be the best for the consulting companies). Instead, my
priority is making Nix and Nixpkgs the best they can be, for all of us
existing users and for new ones. It’s easy to conflate those two
things, but sometimes they are actually at odds with each other, and we
need to be careful of that.

So I’d like to ask people the question: who should we be targeting in
marketing efforts, and who should we be wary of trying to target until
we’ve improved the experience they’ll have?

20 Likes

I think it has been left implicit by most participants in this thread that growth is important and to be pursued above all.

I was hesitating to reply because asking “why” we even want to grow would have sounded downright stupid, good to know I’m not alone.

I want to start by saying (something that may be implicit in qyliss’s post) that I fully acknowledge some benefits that come with a larger community.

  1. The kind of people who would end up embracing Nix would probably end up contributing too. There is a myriad number of AUR helpers, all of which have a much better UI than pacman (and nixos-rebuild). I would love if our community was big enough and the tooling improved.

  2. People who are already a part of the community would benefit from the increased visibility because opportunities would increase and with that market value.

That said, a larger community isn’t necessarily better.

I would like to start by mentioning the Festinger and Carlsmith Experiment. For those who may not know- the experiment can be summarized as - human beings try to justify their actions, and can change beliefs in order to do so. The “larger” the action, the more extreme change in beliefs can be.

The experiment goes thus- 2 groups do a same task which is designed to be useless and boring. One is paid afterwards. The other, upon learning that the first was paid, justified their acts by saying that they enjoyed it.

Some people (and I’m not trying to offend anyone here) that this is a good example of Macintosh usage. (While I personally believe that in the post-2008 IT world, Macintosh’s are probably the most programmer friendly computers) some claim that the hype surrounding macintosh’s, when not realized by it’s end users (non-programmers in my opinion) causes them to find enjoyment and beauty in places where it isn’t even present. Hence the widespread resultant macintosh evangelism. (similarly for Linux in general- typing this from NixOS lol)

Another example I tend of think of is Rust. I’m somebody who uses it full time. I think it’s an amazingly well designed and well thought language. The core team members are extremely nice, as nice as Nix. However, its not for everyone. And being marketed as this “empowering” thing which is the second coming of christ means you have a lot of people using it who aren’t benefitting from it thus creating a cognitive dissonance that realizes itself in the form of a spontaneously created RITF which does things like- “Remove several usages of 'unsafe' by Aaron1011 · Pull Request #968 · actix/actix-web · GitHub” (and another one like that, vile enough that the maintainer quit open source). To be very clear, I love Rust and the people who created it. I think it’s the marketing that attracts the wrong crowd.

Nix isn’t for everyone. I personally believe anyone developing using computers should use it. But not all may see the benefit. However, once the cost has been sunk, if the victims fail to see the benefit of their lost time, it’s going to be harmful for the rest of the community.

Do I want the community to grow, of course. I try to grow it myself. But I believe that the best and lasting communities grow through word of mouth preferably giving an unbiased view without the use of superlatives and probably without organized marketing.

A wise once said, if you want to be indebted to someone, make it a poor nice guy than a rich bad guy. I’d prefer that my derivations be made by nice people :slight_smile:

6 Likes

I was waiting for someone to bring up that argument. It’s good to ask this question, but there’s a lot of implications to answer it. Most importantly, the answer is not binary, but rather a spectrum of “it depends”.

The Nix community is a healthy size already, and we’re getting lots of
good work done. I’ve already heard of several “NixOS hostages”, who are
now forced to use Nix because their company has committed to it, and
don’t get it or just plain dislike it.

That’s more like a statement than a reason, how more healthy would we be if we had about the triple size of the people that can fix things? I’d say even more healthy. Of course, we have to be careful who to bring in, but that’s been always the case. We could have stopped at 50 people back in 2013 using this argument.

I think that attempting to actively market Nix risks creating more of
those people, or other people who try Nix, become frustrated with how
things are today (language-specific package management, secrets
management, etc.), and then write off Nix into the future, even after
we’ve figured out how to improve those things.

As number of developers grows, number of people that won’t enjoy it will also grow.

I’ve been unhappy with a lot of technology in my career, but that could mean it’s just not a personal fit.

What matters is to focus on removing those painpoints that we do control, and why we should address them sooner rather than later to reduce the number of people in this pool.

At the end of the day, developers are problem solvers.

So any marketing effort needs to be focused towards people who are
likely to see the potential in Nix, and stick with us despite our
current failings.

Or start the initiative and invite them to help us fix it? For example would you rather stick with C++ implementation of Nix or let us evolve and port it to Rust?

My priority is not on getting Nix used by as many people as possible,
and I don’t think it should be anybody else’s either (even though that
would probably be the best for the consulting companies).

This is false dichothomy, you too will benefit from more work being done if we grow the community. Less work for everyone is good, we want to avoid burning out people and the best way to do that is to share the work.

Instead, my
priority is making Nix and Nixpkgs the best they can be, for all of us
existing users and for new ones. It’s easy to conflate those two
things, but sometimes they are actually at odds with each other, and we
need to be careful of that.

And that’s exactly the reason to grow community. The question is, what things we should focus on that will attract more people to share this passion?

I’d like to add that this is not a zero sum game, nor we have much of a choice - Nix is growing since 2013 quite rapidly and without much organized marketing.

What we want to avoid is a Gentoo moment and address our weakest spots before we get bad reputation.

3 Likes

And that’s why it’s so important that we focus on users that we think can help solve our weakest spots, before we expand too much, because it gets increasingly difficult to make core changes due to the size of Nixpkgs and the effect the change may have on external users. Sustainable growth, quality control.

10 Likes

That’s more like a statement than a reason, how more healthy would we be if we had about the triple size of the people that can fix things? I’d say even more healthy.

Given that onboarding is hard and there are disagreements on various things…

Do we get 4× the number of people in need of advice, 3.5× the number of people who file high-quality issues, 3× the number of people who can fix things, 2× the number of active committers and 1.5× the RFC process throughput?

This might be a worse experience for many of the contributors.

How can we get to 2× 3× 3× 4× 2×?

Things like documentation work you emphasise of course help people to start contributing, but active outreach and GUI installers feel risky from that point of view.

3 Likes

Another example I tend of think of is Rust. I’m somebody who uses it full time. I think it’s an amazingly well designed and well thought language. The core team members are extremely nice, as nice as Nix. However, its not for everyone. And being marketed as this “empowering” thing which is the second coming of christ means you have a lot of people using it who aren’t benefitting from it thus creating a cognitive dissonance that realizes itself in the form of a spontaneously created RITF which does things like- “Remove several usages of 'unsafe' by Aaron1011 · Pull Request #968 · actix/actix-web · GitHub” (and another one like that, vile enough that the maintainer quit open source). To be very clear, I love Rust and the people who created it. I think it’s the marketing that attracts the wrong crowd.

On the other hand, the original Mozilla’s «Annoy The Internet Into Quitting» Task Force, people complaining to the web masters about standard violations in all the web sites, was an important part of IE6 fallout cleanup, and arguably the internet now would need it again to disincentivise Chrome-on-Windows-only web development.

Many pieces of software assume that if Fedora and Ubuntu keep something in the same place, it is always there — which is bad for corner cases, bad for BSDs and bad for us; while we need to avoid being too aggressive, purely numerical clout is unfortunately more helpful than good practice arguments for getting patches accepted.

1 Like

Exactly. That’s what I mean, we have to focus to fix documentation and ergonomics to make our growing user base happier and reach far further audience.

I’ve talked to a number of people in recent months and many are waiting for us to show that we care about these things and mainstream Nix.

That has been my mission for many years and we’re getting closer.

4 Likes

I think a main problem with Nix(OS) is bad UX/acessibility due to bad documentation.

Documentation is scattered throughout so many different places (or not existing at all), and there’s ten ways to do things. Getting that up to shape will probably fix a lot of the problems newcomers / casual users have with it.

6 Likes

:grinning: Speaking my language. Not binary and @qyliss’s project is called “Spectrum”. You have no idea how perfect this is @domenkozar.

3 Likes

I’d love to see a “NixOS Pills.”

For installing Nix, I agree that a full-blown GUI is not necessary, but it would be great to have a cmdline program for generating an initial config based on hardware / a couple questions to the user. The few people I know that now use NixOS as a daily driver each spent 1+ full days figuring out how to boot into NixOS (myself included…). Time spent to working boot, with, say, the same initial packages as the installer, is a solveable and important issue.

One aspect I love about Nix/nixpkgs is how welcoming the community is for first-time contributers. We might top the linux distro leaderboard for ratio of contributers:users. We do an awesome job of converting users to contributers. I don’t have the faintest clue how to contribute to Debian/Ubuntu packaging after using the OS for 15yrs, but was contributing to Nixpkgs within weeks. I’m (perhaps naively) not as concerned about this.

I very much want to see the community grow in size as we would all reduce our time burden in packaging software and fixing broken packages with more users.

It might help spread the burden if it was easier to contribute to documentation. For example, it’d be awesome if there were links for each heading that took me to the source file it came from. Although maybe this is treating a symptom–the logical flow of sections doesn’t correspond to source code layout, so it’s hard to find relevant file without grepping. That said, I think the documentation is generally high-quality and beautiful :slight_smile:.

Finally, just to throw in a grenade…

The nix language itself is a major barrier to adoption. The fundamental choices are fantastic, e.g. laziness, file type, etc., but the error messages are often incomprehensible, the standard library is anything but, and the syntax/keywords are, well, unique. I won’t repeat the well-known critiques that started Guix in the first place as this ship has long sailed. But I do think it’s productive to look at Rust’s 2017 roadmap and what they achieved in 2017.

An effort around friendly error messages & perhaps even a Nix language server might go a long way. More bold ideas include gradual typing a la Racket, Julia, or Typescript, and an alternate syntax / language that compiles to Nix, like what ReasonML did for OCaML.

Edit: I just saw https://discourse.nixos.org/t/proposal-for-improving-nix-error-messages/, which is fantastic!

3 Likes

I just wanted to chime in from the generic software developer side of things to say that a graphical installer would be welcome. I’ve used nix for several years, and NixOS for a couple years now, and the installation process was not fun.

I’ve never succeeded in selling any developer on NixOS, and a signficant part of that is that the developers I interact with are Linux users, but know only enough to get what tools they need running. Easing installation would be a significant improvement for such people. I know we all live in our own bubbles, so I wanted to speak for the non-server admin crowd. I’m in the demographic I speak of, so I’m comfortable saying that nix is worth using as a tool even for a non-expert user.

I’m glad you found out about the error messages proposal and there’s the first PR with new formatting.

We’re looking for individuals and companies that care about ergonomics of Nix to help with donations :slight_smile:

I’ve never succeeded in selling any developer on NixOS, and a signficant part of that is that the developers I interact with are Linux users, but know only enough to get what tools they need running. Easing installation would be a significant improvement for such people. I know we all live in our own bubbles, so I wanted to speak for the non-server admin crowd. I’m in the demographic I speak of, so I’m comfortable saying that nix is worth using as a tool even for a non-expert user.

Have you succeeded selling them on Nix-on-whatever?

Do you have anything in your configuration.nix which is not string/integer/boolean/plain-attribute-from-pkgs? (no overrided packages, no locally defined functions, no function calls, nothing interesting)

I see you consider Nix → NixOS switch a net positive for your, were the noticeable drawbacks for you despite the net benefit? Also, how much of the workflow have you moved to Nix-installed stuff by the moment of the switch?

(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.

Actual proposal:
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:

  • nixos.org content:
    • 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 :smile:

(Edit: was not meant to be an answer to domenkozar’s post. But Discourse is flat anyway)

4 Likes

The nix language itself is a major barrier to adoption.

There are ideas about replacing the Nix language (e.g. with a more CUE-like language) but that’s waaaay beyond the scope of the marketing team.

I’ve never succeeded in selling any developer on NixOS

So the choice we’re making is that we don’t try to sell developers on NixOS (for desktop use). Rather we try to sell them on Nix (and NixOS for servers like EC2 instances). For Nix I don’t think a graphical installer would help. You just want curl | sh doing the right thing.

3 Likes