Nix Community Survey 2024 Results

2024 Nix Survey Results

Hello, fellow Nixers! It’s that time of year again!

Like many of you, I’ve noticed that the Nix community is growing steadily. Now, more than ever, we’re eager to understand what our community looks like. Who makes up the Nix community? What tools do we use? How do we navigate the Nix ecosystem? And most importantly, what do we care about?

The Nix Survey, which began a few years ago, has become our annual tradition for gaining insight into these questions. Your responses provide crucial data that Nix teams, contributors, and community members rely on to shape the future of Nix!

tl;dr

  • Thousands of answers are amazingly many. It is incredible how hundreds of people care about the system and take the time to fill in the survey! Interestingly, half of respondents are new users who started using Nix within the past year.
  • Nearly all respondents use NixOS, solidifying its central role in the Nix ecosystem. Interestingly, only about half of respondents use Nix for software development.
  • Most users rely on the search functionality (for packages and NixOS options) in their workflow, while the Wiki and the official manual are the go-to sources for help. GitHub issues and source code also remain popular resources.
  • Respondents want to engage with Nix’s roadmap.

Previous announcements and results

Total Participation and Response Rate

We received 2,290 full responses this year, marking a 30% increase compared to last year!

Engagement across individual questions was impressively high, with a response rate nearing 97%. This reinforces our efforts to make the survey more streamlined by reducing open-ended text questions in favor of clearer, single-choice options.

Note

For many questions, respondents could select multiple choices. In those cases, the data is displayed using stacked bar charts, where the added percentages of the “Selected” / “Not selected” options sums to 100% on a single choice.

Single-choice questions are displayed using standard bar charts, where the total percentage adds up to 100%.

The Shape of the Nix Community

Respondents primarily hail from Europe (52%) and North America (27.5%), a distribution consistent with last year’s results.

In terms of gender identity, the majority of respondents identify as men (84%). Percentages between those who preferred not to answer (5%) or identified as women (5%) or non-binary (also around 5%) were too close to draw any conclusion.

Nearly all respondents (99%) are GNU/Linux users. Interestingly, 37% also use Windows, which surpasses the 28% who use macOS. On mobile, Android leads with 55% of respondents, compared to 20% using iOS.

This year, we shifted the question about main occupations from multiple-choice to single-choice, and the results were similar to last year. The majority of respondents are full-stack developers (20%), followed by backend developers (14%), with a significant portion of students (19%).

When it comes to programming experience, the data shows a strong bias toward seasoned developers: 52% of respondents have been programming for over 10 years, and only 3% have never programmed. It’s clear that Nix primarily attracts users with considerable programming experience.

Overall, the “shape” of our community remains largely consistent with previous years.






The learning journey, NixOS wins and YouTube fame

39% of respondent have been using Nix for less than a year. This is really cool, because it means newcomers care about Nix/NixOS and are willing to engage with the ecosystem! At the same time, it means that the survey results are biased towards this population. For instance, about as many respondents (41%) describe their Nix skill level as “Beginner”.


Actually, by crossing answers to both of these questions, we can uncover what the Nix/NixOS journey looks like. Respondents who have joined this year feel like beginners for the most part, which is fair. That being said, a good portion of respondent who have joined this year describe themselves as intermediate users, which is interesting. Then, most respondents with 1 to 2 years of Nix experience feel intermediate. Sadly, a non neglectable proportion of respondents with 1 to 2 years of experience describe themselves as beginner. Then, interestingly, there seem to be a plateau, where respondents tend to keep describing themselves as intermediate users below 5 years of experience. Then, after 5 years of experience, some of them describe themselves as advanced.

This could be a hint at what the Nix/NixOS journey looks like on average: 1 year to ramp up, then 3~5 years to mastery.

NixOS is used by 9 out of 10 respondents. That is big!

Though, only 74% of people use Nix to install software, which is surprising since once would expect NixOS users to also use Nix at least to install packages. Could it mean that 16% of NixOS users among respondents only ever install software via their NixOS configuration?

But wait, there is more! When crossing both questions “How many years have you been using Nix in total?” and “Which of these best describe your involvement with the Nix ecosystem? I use NixOS: Yes/No?”, to our surprise about 90% of Nix users also use NixOS, no matter how long they’ve been using Nix. More specifically, even Nix users who have been using Nix for less than a year also use NixOS. This could be indicative that newcomers either discover Nix via NixOS or onboard NixOS fairly quickly. A more detailed questionnaire would be need to know that. This seems to be validated by the answers to “Did you hear about Nix or NixOS first?” to which 71% responded “NixOS”.


Another unexpected result: the biggest medium from which respondent have found about Nix is now YouTube (23%), more than the usual word-to-mouth from a friend (18%) who probably said “I use NixOS, btw”. :smile:

Again, crossing with years of experience of Nix shows that it is mostly respondents who have used Nix for less than a year that have heard about it from YouTube. Is NixOS on the path to becoming mainstream? :sunglasses:


Using Nix

Respondents mostly love the idea behind Nix (87%), which shows that its adoption comes from its groundbreaking ideas.
But also, half of respondents use Nix to get things Nix (52%). We all know that “It just works™” adage by now.

Almost all respondents use Nix on Linux (94%), and a good proportion also use it on macOS (22%). Like last year, about 10% of respondents use Nix on Windows via WSL.

But how do people install Nix? The official installer is still at the top (32%) if we exclude NixOS (89%), but it’s worth noting that many respondents have used the DeterminateSystems Nix installer (21%).

As expected, most respondents use Nix on a personal computer (95%) and/or home server (55%). But also, Nix is used in production! (19%)

Respondents use mostly the 2.18. A non-neglectable proportion of respondents use Lix.

Respondents use mostly either the unstable channel (65%) or 24.05 (60%), way above any other channel. Given that many respondents are newcomers, it will be interesting to track if they update to a more recent channel next year as well.

When it comes to programming, the top “programming ecosystem” used is NixOS configuration (83%), which is not surprising considering that everyone has to write their own, and one can tend to easily customize it. I think, however, that the choice was misunderstood, as a lot of respondent most likely thought we meant “using NixOS configuration modules” and not “creating NixOS configuration modules”.

Otherwise, Python is at the top (49%), then Bash (46%) and Rust (44%). C, JavaScript, Go and C++ follow (around 24%).

Without much surprise, the flakes experimental feature is widely used (85%) among respondents, as well as the nix-command one (69%).

Navigating Nix

Respondents say they interact most with the Package Search and NixOS option search (top 2 of rank 1 and 2). It shows how essential these tools are to Nix users!

When it comes to getting help, they mostly rely on the official NixOS Wiki, the Reference Manual, as well the the source code (top 3 of rank 1 and 2, and top 4 of rank 3 and 4).


We can be proud as a community: respondent most often find the help they need!

Results

Below are all the quantitative results.

All charts































You can download all aggregated data here: nix-survey-results-2024-11-02.zip - Google Drive

Method

The Nix Marketing Team conducted an online survey of 27 questions, of which 11 were single choice questions, 10 multiple choices, 2 ranking and 4 open-ended.

Questions were designed through PRs at GitHub - GuillaumeDesforges/nix-survey: Documentation and assets for the Nix Community Survey and conversations on the team’s Matrix channel.

The survey was open for a two months period from July 22th until September 16th. We announced the survey by way of postings to Nix Discourse, Matrix, LinkedIn, Twitter and Reddit.

Once the survey was closed we split the analysis into two: multiple choice questions and open-ended questions. Single and multiple choices questions were analyzed numerically by compiling the responses by count and percentages, and comparing to previous year’s results. Open-ended questions were analyzed by manually reviewing the responses. The survey analysis was conducted throughout the month of October. Code of the analysis is available at GitHub - GuillaumeDesforges/nix-survey-analysis-2024: Analyze Nix Survey 2024.

About governance questions

The most recurrent feedback by respondents was the perceived lack of questions about governance.
We understand this feedback, which was to be anticipated.

The design phase of the survey happened at an early stage of the discussions about governance, and our team are facilitators who help the community - often Nix team members, though it is not restricted to them - design questions openly through PRs and discussions in the Matrix channel.

Our team hopes that, for the next edition, questions on the topic of governance will be designed to best serve the Nix community and its governance.

Final words

Huge thanks to all the people who contributed to the survey: @fricklerhandwerk @ron @Arsleust @DanielSidhion @thufschmitt @djacu @tomberek

Special mention to @fricklerhandwerk who took the time to go through thousands of free-text answers, taking hours to carefully review them and provide useful aggregated insights!

If you’d like to help organize next year’s survey please join our Matrix channel: #survey:nixos.org

See you next year!

72 Likes

Nice work & gratitude to all involved!

2 Likes

I’d like to reiterate just how useful these survey results are, most projects don’t ever get these direct metrics! Thank you to everyone who managed or contributed to the survey. In looking over it, there seem to be a few takeaways for me:

Regionality

Nix still seems to mainly be making headway in Europe, but it is broadly applicable to software across the world. Non-English speaking developers would certainly appreciate translated documentation and guides. Right now the Nix ecosystem is heavily focused on English-only communication despite there being interest from many other locales. In addition, I feel that there is a large opportunity in North America for Nix adoption. So many companies I have worked at could have improved their development and deployment cycles with the use of Nix.

To summarize with some readily actionable items:

  • Documentation translation
  • Guides/examples translation
  • More broad advertisement of Nix as a solution
  • Nix advocacy from individual contributors at companies

Experimental Features

Having 85% of respondents be flake users should make it extremely clear that flakes are here to stay. An overwhelming majority of respondents use and rely on flakes in their current form. We can talk about them being labelled “experimental” all day, but the reality is that these features cannot be removed or broken without significant churn and incompatibility in the community. It’s time for the Nix team to recognize this and drop the “experimental” part from Flakes. Any further changes from what we have today can be done in future major/minor/patch releases. Don’t let perfect be the enemy of good here, just make it work.

Again, some action items as a TL;DR:

  • Enable the current flakes implementation by default

Nix Versions

This, as well, should be a wake up call for the Nix team. The overwhelming majority of respondents are not using the latest release of Nix. Only 139 respondents are on 2.22+ while the remaining 836 respondents are using either Nix 2.18 or Lix (originally based on Nix 2.18). The single most important thing that Nix can do right now is cut a working release that can actually be merged into Nixpkgs. Future features aren’t useful if nobody is running anything past version 2.18.

TL;DR:

  • Nix needs a release that Nixpkgs can use
25 Likes

Wow. By far the best survey yet!

The data on how people discovered Nix and comparing that to years of experience was especially interesting and elegantly presented.

I was surprised to see such a high level of Lix usage already. Congrats to the Lix team for quickly building interest and confidence in their fork!

It stood out a lot, too, how virtually everyone who has been using Nix for a while eventually picks up NixOS.

One nitpick: I’m much too colorblind for the visualization of the data about which resources people rely upon when seeking help. Totally inscrutable to me. An old-fashioned nested list with percentages and response counts might be a nice complement.

Well done! Overall really well-presented and I think the data collected has been more useful and interesting than ever.

3 Likes

Thank you for the feedback. We will make sure to take into account color blindness in the future. :pray:

2 Likes

Nix 2.18 was the default in Nixpkgs and NixOS during the survey, so I would expect the vast majority to have run that version.

2.19-2.21 did see fallout from our work on fixing fetchTree, part of its stabilization, and therefore part of flakes stabilization. We can’t commit to hash-for-hash stability when fetching has impurities and bad defaults. Also we’re working towards an actually deterministic version of lazy-trees, as performance is a significant issue in Flakes.
This is a reason why one of the (turned out, later) Lix maintainers held back the Nix version in Nixpkgs.
I don’t want to go into the legitimacy of that, but having 2.18 as a baseline for Lix comparisons benefits that project. I’ll leave it at that.

NixOS 24.11 is scheduled to ship Nix 2.24 as its default, and you’re right that - if/when found - handling any new regressions must be high priority.

17 Likes

Just for reference: one of the main reasons Lix was started was because a few of us wanted ato be able to move to a newer Nix, but were blocked by regressions. I agree there’s a causal link there, but think the cause and effect are flipped from what’s implied here.

20 Likes

The Nix team could have used some help with those regressions back then, but received very little.

It makes me sad, whichever way the causal link is. I don’t think I can know. Probably both? I’ll leave it at that, because I’d prefer to have a forward looking discussion if we’re going to have one, but let’s stick to the topic of this thread for now. What I wanted to point out is that some people’s perceptions of our respective progress-es are biased because of this situation. I hope it’s ok to identify such a bias.

18 Likes

Interestingly, since responding to this survey I myself have switched to Lix. I’m sure I’m not the only one!

4 Likes

I feel like there’s some minor memory-holing of where we were in, say, 2020.

About 2 years passed between the 2019 release of 2.3 and 2021 release of 2.4–and the change to a 6-week release cadence it marked was a compromise on the previous release process in recognition of the problems caused by going that long without a release.

It was pretty obvious that arbitrarily moving to a 6 week release cadence would cause its own problems. There were obviously issues deterring release, but I would argue it’s fairly likely that having to adapt to that release cadence is and will continue to pay dividends for the project.

(FWIW, I believe the “nix team” formed in 2022.)

I don’t think anyone is or should be happy with the number of releases that haven’t been nixpkgs-ready, but about 13 months have passed since the first 2.18 release, which is still a good bit better than ~24.

2 Likes

25 posts were split to a new topic: Nix Community Survey 2024 Results: Gender

I forgot to respond to the survey (yes, lmao) so maybe there was some clarification there I’m unaware of, but I would be unsure what to pick here exactly. I use NixOS (well, at least on my personal machines) and use Nix to develop software (where feasible), so I kind of “install” software via those - but given you list “installing via nixos configuration” as something this option doesn’t represent, then what does it represent? Using nix-env (which I think we would’ve been rather unhappy with instead, as it seems universally discouraged)? Using nix profile explicitly (honestly never used them by hand)? Does running a nix shell to have a transient shell with a package count or not? If all this was clarified in the survey then sorry for the noise, but if not, then maybe a better option is needed?

5 Likes

Amazing work with analysing and presenting the data, @Arsleust. I agree with @pxc this is the most informative survey so far, and I’m really looking forward to the next one. I learned a lot about what we need to optimize for and how to reduce the effort of preparing and evaluating such a survey, and I hope we’ll manage to implement all of the improvements people were suggesting.

5 Likes

Thank you for sharing, @Arsleust! It looks like q14 was multiple choice. Is it possible to get the data structured as follows?

[
  {
    "chosen": ["NixOS", "With the official installer"],
    "count": 123
  }
]

I would be interested in being able to determine if certain choices are dependent or independent.

I take great issue with this statement and I think it’s fallacious. You cannot deduce that the current implementation of flakes are good or desirable based on the popularity of its feature flag.

I am one of the data points in this survey that have the flakes experimental feature enabled. I don’t have it enabled because I like flakes or even use them to any real capacity to define my environments and such but because there is no viable way to use the primary nix3 commands without them.
You cannot, for instance, use nix shell without flakes. This is an arbitrary limitation, not a technical one: Nix 2.3 had an equivalent (then called nix run) which functioned using NIX_PATH, without any flakes involved.

For my setup, I’ve set up the glorified global namespaceflake registry so that its nixpkgs points at a nixpkgs checkout in the filesystem that I manage separately. The NIX_PATH’s nixpkgs= also points at this locaiton the for the legacy commands to consume. In order to get this to work, I had to research how to make nix not do dumb flake shit like copying the entire checkout to the Nix store every single time I run a nix command which is somehow still an issue in 2024.

Would you say that I consider flakes as an integral feature that ought to sanctioned as good and stable, not requiring fundamental changes to actually function sensibly?
And yet I still have the feature flag enabled.

Secondly, while flakes are a standard to compose Nix projects, they are (to my knowledge) the only standard for this purpose. The closest things are default.nix/shell.nix which is a convention, not a standard and npins/niv which only concern themselves with fetching/locking as a replacement for nix-channel rather than exposing a project’s Nix expressions to be consumable by other Nix projects in a standardised manner.

I think it’s no surprise that people enable a feature to access a standard for which there is no viable alternative standard.
That’s like saying cars are the best mode of transport because you live in a place where transit is intentionally hamstrung and biking or walking is likely to get you killed by a car. You can be of the opinion that cars are not in any way a good or desirable mode of transport and at the same time drive a car every day because there just isn’t any viable alternative mode of transport where you live.
I think much the same applies to flakes.

“Standard for which there is no alternative is good because 100% of people who need something like the standard use it.” does not compute.
You have to show more evidence than the mere fact that people “use” it to claim that it is good.

I’m actually surprised it’s only 85%, meaning that 15% don’t use it at all. If 15% of users don’t use flakes despite being the only standard way to compose Nix projects (which I’d like to remind you that everyone must do to some degree) and are the only way to use nix3, I think that says more about flakes than the other way around.

33 Likes

Thank you for the feedback. I’ll be happy to better design these questions with your input. Please do join the matrix channel to facilitate this discussion.

@grahamc made a good point about correlating multiple-choice questions (MCQ).

Here are some correlation plots:









ZIP file with PNG charts, vegalite JSON charts and JSON data: nix-survey-results-mcq_corrs-2024-11-05.zip - Google Drive

9 Likes

I don’t think that’s what was said or meant at all, rather, I’d guess that they mean that removing flakes would likely be bad, since so many seem to be using them. And I’d guess further that they also hope that some of the issues with flakes can be ironed out and a push made towards removing the experimental flag.

8 Likes

Thank you, @Arsleust! I wonder if you could also correlate q14 (which installer) with:

  • which operating system they use nix on (q13) (more interesting to me)
  • skill level (q09)
  • occupation (q05) (less interesting to me)
1 Like

You cannot even deduce popularity from the survey. The survey is almost certainly not representative which you can already guess from the overinflated amount of new users responding. I would expect that having flakes enabled and being a new(er) user are not statistically independent.

4 Likes