# Nixpkgs Architecture Team conclusion and prospective

**URL:** https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020
**Category:** Nixpkgs Architecture
**Created:** [March 8, 2024, 4:51pm UTC](https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020 "2024-03-08T16:51:58Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![Infinisil](https://discourse.nixos.org/user_avatar/discourse.nixos.org/infinisil/32/26523_2.png) [@Infinisil](https://discourse.nixos.org/u/Infinisil)
#### Post date: [March 8, 2024, 4:51pm UTC](https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020/1 "2024-03-08T16:51:58Z")

</div>

Around when RFC 140 was accepted, participation in the [Nixpkgs Architecture Team](https://nixos.org/community/teams/nixpkgs-architecture.html) (NAT) fell to a lower level, where the “Team” format was not working out anymore.

As the team lead I’ve thus decided to officially **dissolve the team**.

This sound more dramatic than it really is though, because not much will actually change. In this post I’ll go over how it has come to this, what to learn from it, and future plans to look out for.

## History

Out of frustration with various architectural problems in Nixpkgs I created the NAT in July 2022 and subsequently got [some members to join](https://github.com/nixpkgs-architecture/team-log) me. We started having weekly meetings, all [recorded](https://www.youtube.com/playlist?list=PLHG2N-mfvWT7XA0Sn4RLGSVSpUYPlTXHI) and with [meeting notes](https://github.com/nixpkgs-architecture/meetings). Asynchronous discussions were being held [on Matrix](https://matrix.to/#/#nixpkgs-architecture:nixos.org), with a [separate GitHub organisation](https://github.com/nixpkgs-architecture/) for more persistency.

After an initial period of various brainstorming discussions, we started focusing on fixing a _single_ problem, which is now known as [`pkgs/by-name`](https://github.com/NixOS/nixpkgs/tree/master/pkgs/by-name), established by [RFC 140](https://github.com/NixOS/rfcs/pull/140). While very slow and tedious both before, during and after the RFC, I’m happy to say that this has been a definite success. It’s not done yet, I’m [continuing to work on it](https://github.com/NixOS/nixpkgs/milestone/25), but expect it to be done Soon™. If you’re interested about more technical details, I gave [a presentation](https://github.com/nixcon/NixConContent/tree/main/NixCon%202023%20-%20Darmstadt/Day%201%2011%3A50%20-%20not-all-packages-anymore.nix) about this last NixCon.

Unfortunately some time along the way the team meetings started falling apart. Around the time of the RFC, we were struggling to find much to discuss in the weekly meetings, they often just turned into me monologuing what I’ve been working on. Because of that, the meetings were at first reduced to just 30 minutes, then made bi-weekly, and then just once every 4 weeks. The intention was to schedule longer in-depth discussion meetings when necessary, though that never really happened. And with meetings 4 weeks apart, it’s easy to forget about it, and a single absence now meant a two month period without synchronisation.

I’ve also grown increasingly grumpy as a team lead, since I’ve been doing the vast majority of the work:

- I administered the team effectively by myself: Leading every meeting, taking almost all meeting notes, pinging people in advance to join, keeping team information up-to-date, etc. Attempts to delegate such tasks have failed for various reasons.
- I wrote RFC 140 mostly by myself, with only @roberth helping out a bunch (appreciated!). While the RFC was discussed in meetings and on Matrix, actually putting these discussions in concrete writing was left mostly to me.
- I’m [implementing](https://github.com/NixOS/nixpkgs/milestone/25) the RFC entirely by myself, without much feedback in PRs. This is at least partially due to it being a lot of Rust and not Nix code. Only since recently I’ve gotten some very thorough reviews by @PhilipTaron (appreciated!).

Of course I can’t expect anybody else to actually do anything since I’m not paying anybody. I’m in the lucky position to be sponsored for this (thanks [Tweag](https://www.tweag.io/) and [Antithesis](https://antithesis.com/)!), but this is rare. In the end, this just didn’t feel like a team at all anymore and made it hard to stay motivated.

## Challenges

### Lack of authority

A core problem from the start has always been the lack of authority: The team used the community-based RFC process to enact changes and had no concrete ownership of Nixpkgs’ architecture, despite the name. Considering that there are over 200 Nixpkgs committers without a dedicated owner, this seemed like the best way to make substantial progress. And while this works, it’s very _slow_ and _tedious_. While it’s very beneficial to write down decisions and involve the community in that way, at some point somebody should just be empowered to make decisions.

### Lack of resources

As in almost every corner of Nix, there’s a shortage of resources. This is especially problematic for Nixpkgs’ architecture, which is notoriously hard to change due to the scale of Nixpkgs, with over a thousand PRs being merged every week. The vast majority of which add and maintain packages, making heavy use of the architecture. This effort is largely problem-oriented, where people do the work to solve their own problem, but don’t have the time and knowledge to do more. To make any significant changes, somebody with these resources needs to take the initiative and push it through. While admirable, we cannot expect people to undertake such efforts for free and should instead hope for this to be sponsored.

## Plan

The following will continue to exist:

- The public [Nixpkgs Architecture Matrix room](https://matrix.to/#/#nixpkgs-architecture:nixos.org) for ephemeral discussions
- The [Nixpkgs Architecture Discourse category](https://discourse.nixos.org/c/dev/nixpkgs/44) for more persistent discussions

In the following weeks I will do these changes to dissolve the team:

- Remove the NAT from [nixos.org](http://nixos.org)
- Move all [Nixpkgs Architecture issues](https://github.com/nixpkgs-architecture/issues/issues) into Nixpkgs
  - These will be labeled with a new “architecture” label, which will also be applicable to many other Nixpkgs issues

- Publicly archive the private Nixpkgs Architecture Matrix channel
  - This was used very sparingly and contains no sensitive information that couldn’t be shared

- Archive the [Nixpkgs Architecture GitHub organisation](https://github.com/nixpkgs-architecture/)
- Retire the [Nixpkgs Architecture YouTube channel](https://www.youtube.com/@nixpkgs-architecture)
  - I’ll only keep it around for archival purposes

- Remove future NAT meetings from the [NixOS calendar](https://calendar.google.com/calendar/u/0/embed?src=b9o52fobqjak8oq8lfkhg3t0qg@group.calendar.google.com)

## Prospects

To work towards improving the authority situation, I wrote an [open Nix organisation draft proposal](https://github.com/nix-open-org/rfcs/blob/a3dbc94d9629592f1e992b2252dd841ea094e9ab/rfcs/0000-open-org.md), which is being [experimented with](https://github.com/nix-open-org/org) by @zimbatm and me. This wouldn’t _directly_ fix such problems, but rather create a place to discuss and propose changes to it. Feel free to discuss this idea by opening issues/PRs or in the [Nix Platform Governance Matrix room](https://matrix.to/#/#platform-governance:nixos.org).

Not having the burden of trying to manage this team structure anymore allows me to focus more on actual work. I fully intend to both finish the implementation of RFC 140 (see [this milestone](https://github.com/NixOS/nixpkgs/milestone/25) for the status), and continue to work on Nixpkgs’ architecture after that.

Furthermore I’ll start holding a weekly **personal office hour** , where anybody can come talk to me about anything relating to Nixpkgs’ architecture, but preferably with a focus on what I’m working on at the moment. I haven’t decided a time yet, but if you’re interested you can enter your availability here:

> **[Crab Fit](https://crab.fit/infinisils-nixpkgs-architecture-office-hour-605313)**
>
> Enter your availability to find a time that works for everyone!

---

<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: [March 8, 2024, 5:50pm UTC](https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020/2 "2024-03-08T17:50:09Z")

</div>

Thank you a much for your patience and diligence @Infinisil! Apart from solving a very old, very annoying problem, and demonstrating how this can be done in the most considerate, non-distruptive, sustainable way, your work clearly shows what it takes to steer a ship like Nixpkgs – and that we need more captains and officers of your kind.

And thanks to everyone who participated on the way, even if "grumpy Silvan” ended up doing most of the heavy lifting. Those discussions, however tedious they seem, are vital to make sure the right things get done right.

---

<div class="post-metadata">

### Author: ![Infinisil](https://discourse.nixos.org/user_avatar/discourse.nixos.org/infinisil/32/26523_2.png) [@Infinisil](https://discourse.nixos.org/u/Infinisil)
#### Post date: [March 12, 2024, 11:27pm UTC](https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020/3 "2024-03-12T23:27:17Z")

</div>

I’ve now taken all steps to conclude the team:

- The NAT is [now removed](https://github.com/NixOS/nixos-homepage/pull/1330) from the website
- The GitHub issues have been migrated to a new [architecture label](https://github.com/NixOS/nixpkgs/labels/architecture) under Nixpkgs
- The private Matrix channel is now [publicly archived](https://github.com/nixpkgs-architecture/private-room) and deleted
  - Note that this was only possible because no private information was shared in the room, this doesn’t have to become a precedent!

- The [GitHub organisation](https://github.com/nixpkgs-architecture/) is now archived with a link to this thread
- The [YouTube channel](https://www.youtube.com/@nixpkgs-architecture) was updated to link to this thread
- The meetings are removed from the NixOS calendar

Furthermore I scheduled my personal weekly Nixpkgs architecture office hour (ping @PhilipTaron, @Lyndeno), see [Community Calendar - #120 by Infinisil](https://discourse.nixos.org/t/community-calendar/18589/120)

---

<div class="post-metadata">

### Author: ![imincik](https://discourse.nixos.org/letter_avatar_proxy/v4/letter/i/6de8d8/32.png) [@imincik](https://discourse.nixos.org/u/imincik)
#### Post date: [March 13, 2024, 11:14am UTC](https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020/4 "2024-03-13T11:14:17Z")

</div>

Hi Silvan, thank you very much for all work you did and keep doing! I fully understand your decision and I think it makes a sense in current sutuation.

---

<div class="post-metadata">

### Author: ![willbush](https://discourse.nixos.org/user_avatar/discourse.nixos.org/willbush/32/29007_2.png) [@willbush](https://discourse.nixos.org/u/willbush)
#### Post date: [March 14, 2024, 2:56am UTC](https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020/5 "2024-03-14T02:56:29Z")

</div>

Hi! So is it too late to ask if you want help 😄 ?

Either way just wanted to say I saw your not-all-packages-anymore.nix talk and enjoyed it!

---

<div class="post-metadata">

### Author: ![Infinisil](https://discourse.nixos.org/user_avatar/discourse.nixos.org/infinisil/32/26523_2.png) [@Infinisil](https://discourse.nixos.org/u/Infinisil)
#### Post date: [March 15, 2024, 9:30pm UTC](https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020/6 "2024-03-15T21:30:38Z")

</div>

@willbush Thanks! I’d appreciate help, here’s some pointers:

- Join the [Nixpkgs Architecture Matrix channel](https://matrix.to/#/#nixpkgs-architecture:nixos.org) or my [new weekly office hour](https://discourse.nixos.org/t/community-calendar/18589/120) to synchronise with me and others for all of the below

- If you know Rust and are interested in helping out with the `pkgs/by-name` effort specifically, check out the [RFC 140 milestone](https://github.com/NixOS/nixpkgs/milestone/25) for things to do. While I’m planning to work on most of them myself, if I could offload some of that, it would help a lot! Otherwise, reviews are very appreciated too.

- As mentioned above, there’s the new [architecture label](https://github.com/NixOS/nixpkgs/labels/architecture) in Nixpkgs. These are open architectural problems left to fix, each of which requiring lots of resources.

---

<div class="post-metadata">

### Author: ![willbush](https://discourse.nixos.org/user_avatar/discourse.nixos.org/willbush/32/29007_2.png) [@willbush](https://discourse.nixos.org/u/willbush)
#### Post date: [March 16, 2024, 3:05am UTC](https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020/7 "2024-03-16T03:05:06Z")

</div>

@Infinisil Thanks for the response! I’d like to help with the pkgs/by-name Rust project. I do have some experience with Rust. Mostly toy projects, but I did make a slack bot for work and CLI tool that sends out messages over RabbitMQ that we use all the time. However, rust isn’t our main language unfortunately. I was able to get `nixpkgs-check-by-name` up and running / tests passing thanks to the declarative nix environment and direnv.

The project is very clean and well tested! Nice work! I guess I’ll start looking at [nixpkgs-check-by-name fails for `poetry2nix.mkPoetryApplication` packages created in `pkgs/by-name/` · Issue #261052 · NixOS/nixpkgs · GitHub](https://github.com/NixOS/nixpkgs/issues/261052) if that’s ok? I’m actually surprised how few outstanding issues remain.

---

<div class="post-metadata">

### Author: ![Infinisil](https://discourse.nixos.org/user_avatar/discourse.nixos.org/infinisil/32/26523_2.png) [@Infinisil](https://discourse.nixos.org/u/Infinisil)
#### Post date: [March 16, 2024, 3:33am UTC](https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020/8 "2024-03-16T03:33:58Z")

</div>

Awesome!

Yeah the issue there is something that would be nice to have fixed at some point.

I also just opened [`pkgs/by-name` errors are inconsistent · Issue #296335 · NixOS/nixpkgs · GitHub](https://github.com/NixOS/nixpkgs/issues/296335) for something that’s more tractable 🙂

---

<div class="post-metadata">

### Author: ![pie](https://discourse.nixos.org/letter_avatar_proxy/v4/letter/p/f9ae1b/32.png) [@pie](https://discourse.nixos.org/u/pie)
#### Post date: [April 3, 2024, 7:00pm UTC](https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020/9 "2024-04-03T19:00:18Z")

</div>

I’m fairly new to Nix\* but I’m slowly starting to grasp how much work the chunk of the problem you addressed is. I have to say that I have had multiple “oh really?”-moments to last month or so. Great job!

For the Youtube link: it appears to not contain an actual link but just plain text. I don’t know if this is intentional though.

---

<div class="post-metadata">

### Author: ![Infinisil](https://discourse.nixos.org/user_avatar/discourse.nixos.org/infinisil/32/26523_2.png) [@Infinisil](https://discourse.nixos.org/u/Infinisil)
#### Post date: [April 4, 2024, 12:32am UTC](https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020/10 "2024-04-04T00:32:01Z")

</div>

@pie Not exactly sure what you mean by “oh really?”-moments tbh!

> For the Youtube link: it appears to not contain an actual link but just plain text. I don’t know if this is intentional though.

The one in the initial post ([https://www.youtube.com/@nixpkgs-architecture](https://www.youtube.com/@nixpkgs-architecture)) works for me, which link doesn’t work for you?

---

<div class="post-metadata">

### Author: ![pie](https://discourse.nixos.org/letter_avatar_proxy/v4/letter/p/f9ae1b/32.png) [@pie](https://discourse.nixos.org/u/pie)
#### Post date: [April 4, 2024, 7:53am UTC](https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020/11 "2024-04-04T07:53:15Z")

</div>

> Not exactly sure what you mean by “oh really?”-moments tbh!

For example: I thought oh that would be a few pull requests - a little bit more if it is more split up - to implement. But [RFC 140 Milestone · GitHub](https://github.com/NixOS/nixpkgs/milestone/25?closed=1) says otherwise. I’m still young and inexperienced in software engineering though so that might just be me 😏 .

> The one in the initial post ([https://www.youtube.com/@nixpkgs-architecture](https://www.youtube.com/@nixpkgs-architecture)) works for me, which link doesn’t work for you?

I’m sorry… I mean the one _on_ Youtube, linking to this thread. But now it strikes me that that may be a limitation of Youtube itself.

 ![Screenshot from 2024-04-04 09-39-18](https://discourse.nixos.org/uploads/default/original/3X/2/5/25a05821c548478214876d793d6dfd63cc124c32.png)

---

<div class="post-metadata">

### Author: ![Infinisil](https://discourse.nixos.org/user_avatar/discourse.nixos.org/infinisil/32/26523_2.png) [@Infinisil](https://discourse.nixos.org/u/Infinisil)
#### Post date: [April 4, 2024, 9:18am UTC](https://discourse.nixos.org/t/nixpkgs-architecture-team-conclusion-and-prospective/41020/12 "2024-04-04T09:18:48Z")

</div>

Ahh yeah good point! While links within the Description don’t appear to work, I was able to create a link explicitly now (this might be a very recent feature) 🙂

 ![image](https://discourse.nixos.org/uploads/default/original/3X/0/1/016d1fd65c291abcbeb7cee96e6859e10d775190.png)
