# Improving Nix developer experience

**URL:** https://discourse.nixos.org/t/improving-nix-developer-experience/21629
**Category:** Nix
**Created:** [September 12, 2022, 12:09pm UTC](https://discourse.nixos.org/t/improving-nix-developer-experience/21629 "2022-09-12T12:09:53Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![fricklerhandwerk](https://discourse.nixos.org/user_avatar/discourse.nixos.org/fricklerhandwerk/32/2029_2.png) [@fricklerhandwerk](https://discourse.nixos.org/u/fricklerhandwerk)
#### Post date: [September 12, 2022, 12:09pm UTC](https://discourse.nixos.org/t/improving-nix-developer-experience/21629/1 "2022-09-12T12:09:53Z")

</div>

Recently @edolstra granted me [permissions](https://github.com/NixOS/nix/issues/6761) for [NixOS/nix](https://github.com/NixOS/nix), so I started labeling issues and pull requests. Hopefully this will help guiding the work of maintainers, contributors, and initiatives such as the [installer workgroup](https://discourse.nixos.org/t/nix-installer-workgroup/21495) or the [documentation team](https://discourse.nixos.org/t/documentation-team-flattening-the-learning-curve/20003) to figure out what would be the most valuable and attainable thing to do.

The general idea is to categorize issues and pull requests by roadmap items and maintenance tasks. Since [there is no community-wide roadmap yet](https://discourse.nixos.org/t/expanding-the-nixos-foundation/19929), I took the liberty to _just do something at all_ and pick up [recurring patterns we discussed in Tweag’s Nix team](https://www.tweag.io/blog/2022-08-04-tweag-and-nix-future/) led by @thufschmitt.

The following proposal is biased towards improving onboarding and optimizing experience for the growing user base of software developers who are Nix beginners, and ordered by impact for that audience.

# Roadmap

- [installer](https://github.com/NixOS/nix/labels/installer)
- [nix-shell](https://github.com/NixOS/nix/labels/nix-shell) (new)
- [documentation](https://github.com/NixOS/nix/labels/documentation)
- [UX](https://github.com/NixOS/nix/labels/UX)
- [error-messages](https://github.com/NixOS/nix/labels/error-messages)
- [new-cli](https://github.com/NixOS/nix/labels/new-cli)
- [flakes](https://github.com/NixOS/nix/labels/flakes)
- [developer-experience](https://github.com/NixOS/nix/labels/developer-experience)
- [good-first-bug](https://github.com/NixOS/nix/labels/good-first-bug)
- [macos](https://github.com/NixOS/nix/labels/macos)
- [windows](https://github.com/NixOS/nix/labels/windows) (new)
- [performance](https://github.com/NixOS/nix/labels/performance) (new)
- [ca-derivations](https://github.com/NixOS/nix/labels/ca-derivations)

# Maintenance

- [critical](https://github.com/NixOS/nix/labels/critical)
- [security](https://github.com/NixOS/nix/labels/security)
- [regression](https://github.com/NixOS/nix/labels/regression)
- [bug](https://github.com/NixOS/nix/labels/bug)
- [build-problem](https://github.com/NixOS/nix/labels/build-problem)
- [cli](https://github.com/NixOS/nix/labels/cli)
- [language](https://github.com/NixOS/nix/labels/language)
- [tests](https://github.com/NixOS/nix/labels/tests)
- [dependencies](https://github.com/NixOS/nix/labels/dependencies)
- [feature](https://github.com/NixOS/nix/labels/feature)

# Priorities

Even with filters the number of issues is still overwhelming. I therefore propose to establish a convention of adding 👍 to issues and pull requests you find important, and encouraging everyone you introduce to Nix to do the same.

GitHub supports queries sorted by number of 👍. Here is an example for [all Nix issues](https://github.com/NixOS/nix/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc). This should help maintainers and contributors to obtain a first approximation of user needs. It could also raise visibility of the development process, which happens on GitHub, and help us pave ways for enthusiastic users to become effective contributors.

# Next steps

I will continue triaging issues in the upcoming days, starting with the oldest. This will take some time.

While there should be as few labels as possible to keep it tidy (for example, we should probably [remove `improvement`](https://github.com/NixOS/nix/issues/7018), as it does not add information) we may want to add a few more, for example `reproducibility` (which is a frequent topic).

With more labels in place, meanwhile **you can help immediately** on topics you care about:

- starting with the oldest, check if issues are still valid and pull requests are still active
  - invalid issues: show evidence (e.g. merged pull request, failed reproduction, duplicate issue) and ping the respective maintainers to close them
  - stale pull requests: ping author and ask if they want to continue

- vote on active issues and pull requests labelled by topics you care about
  - provide or confirm reproduction steps if they are missing

- check [auto-closed issues](https://github.com/NixOS/nix/issues?q=is%3Aissue+sort%3Acreated-asc+is%3Aclosed+label%3Astale) and (ask to) reopen them if they are still valid

There is still some work to do to better formalize responsibilities. It should be immediately visible or easy to find who could take care of an issue or pull request in a timely manner.

There is also more work to do to make possible pathways to contributing more visible, and provide guidance to both users and contributors. Proposals such as this one should eventually end up in authoritative sources, such as the Nix manual.

---

<div class="post-metadata">

### Author: ![Sandro](https://discourse.nixos.org/user_avatar/discourse.nixos.org/sandro/32/2865_2.png) [@Sandro](https://discourse.nixos.org/u/Sandro)
#### Post date: [September 12, 2022, 11:07pm UTC](https://discourse.nixos.org/t/improving-nix-developer-experience/21629/2 "2022-09-12T23:07:15Z")

</div>

Whats the difference between the UX and developer-experience label? IMO those could be combined.

---

<div class="post-metadata">

### Author: ![NobbZ](https://discourse.nixos.org/user_avatar/discourse.nixos.org/nobbz/32/7022_2.png) [@NobbZ](https://discourse.nixos.org/u/NobbZ)
#### Post date: [September 13, 2022, 5:27am UTC](https://discourse.nixos.org/t/improving-nix-developer-experience/21629/3 "2022-09-13T05:27:13Z")

</div>

User Experience is the experience of a user of a software, eg. you **using** nix.

Developer Experience is the experience of a developer or contributor of a software, eg. you adding a feature or fixing a bug in nix.

---

<div class="post-metadata">

### Author: ![fricklerhandwerk](https://discourse.nixos.org/user_avatar/discourse.nixos.org/fricklerhandwerk/32/2029_2.png) [@fricklerhandwerk](https://discourse.nixos.org/u/fricklerhandwerk)
#### Post date: [September 13, 2022, 6:05am UTC](https://discourse.nixos.org/t/improving-nix-developer-experience/21629/4 "2022-09-13T06:05:40Z")

</div>

We could rename it to „contributor experience“ to make that distinction clear, since most users indeed _are_ developers.
