Empowering Nix Teams - Alpha Phase
TL;DR: We want to improve the functioning of teams in the Nix project by giving them clear ownership and responsibilities, with greater support from the NixOS Foundation. Since not all teams need the same level of formality, we will have different tiers of teams.
Since Nix was first introduced it has grown and improved tremendously. This has been further catapulted over the last three years. A critical majority of the reason this is happening is because of the tremendous amount of work done by the community through its amazing members.
Over time our community has self-organized into various teams, each supporting a different aspect of Nix. However, since many of these teams have emerged organically, they often lack a well-defined mandate and structure - for instance, it’s often not clear what the responsibilities and powers of a team are, who its members are, or what their plans are.
We believe it’s time that we take another leap forward, bring Nix and the community to the next level by focusing on empowering Nix teams.
Since not every team is equally critical and we don’t want to burden people with bureaucracy when it’s not needed, we plan to have three tiers of teams: Critical, Formal and Community. This will help us provide each team with what they need to reach their goals. We learned more about the core of this concept in our conversations with other open source foundations such as Rust and Plone who leverage it in their respective communities.
Implicitly we already have different tiers of teams, but making it explicit resolves various issues the community has called out in various channels (including the NixOS survey) and provides a needed boost. We believe this will empower the community in many ways, which include:
- Clear mandates and responsibilities for teams.
- Better communication and transparency of teams towards the community.
- Reduction of overlap and redundancies between efforts.
- Providing direct board support and funding.
- Improve bus factors.
Nix Teams
Community Teams
The core of our community. Any group of people willing to collaborate on a common goal can form a community team. The foundation doesn’t get involved as long as there are no high-level conflicts or breach, and it does not receive any unique support or funding. However we want to provide some legitimacy and visibility to these teams. We can also empower these teams further by enabling the process to formalize, meaning that a Community team will be able to become a Formal team.
Anyone can create a community team with nothing involved: just open a pull request to the website to add your team to the community page (we plan to release more structured guidance on this soon but this isn’t blocked). For any team we plan to further encourage and support them by providing a “Nix Team Knowledge Base” and team lead handbook, that would provide the community with the support they need to create and maintain teams (i.e. a collection of templates for running meetings, making roadmaps, project management, best practices).
Proposed examples of community teams:
- emacs
- static builds
- macOS
Formal Teams
Formal teams do work that has a broad impact on the Nix project, yet if the team were to “disappear” the project won’t be immediately hindered or broken. We therefore recognize that these teams need to receive more formal support (monetary and non-monetary) while becoming formally structured.
We have started to see this across a few teams in the last few months. IDoc Team / Nix Team)
Support Formal Teams Receive
- Ability to apply to Nix Foundation funding and other direct funding related opportunities such as
- Financial support for meetups and hackathons
- Purchasing needed resources (hardware/cloud)
- More prescriptive ability to request non-monetary support such as advisory and planning - for example, the board or other Nix teams can join to provide more help when desired by the teams.
- Added visibility across all channels (Nix website, social media, discourse, etc.)
- Team level @nixos.org email address
Structure and Responsibilities
- Keep track of team membership, including a team lead who is the main point of contact
- Publish meeting minutes
- Have clear ownership, i.e. a statement about which areas/processes are the team’s responsibility.
- Maintain a long term vision, a short statement that helps both the team and community understand what its goals are and how it plans to make Nix better.
- Have a public issue tracker
- Update Nix wide team calendar to share team related events (meetings/plannings/etc.)
Proposed examples of formal teams
- Nix Team
- Doc Team
Critical Teams
Teams that work on the most foundational aspects of Nix: if they disappear tomorrow will have an immediate and direct impact on Nix and the community.
In addition to the support given to Formal teams, Critical teams have a commitment from the board to get involved immediately to unblock and support resolving key issues should the team need it. This requires the board to be more involved in supporting the teams but will further strengthen these teams’ ability to continuously be optimized.
Critical teams and its members will also have more responsibilities and transparency in front of the Nix community. Beyond those of the Formal team, the Critical teams will have –
- Quarterly Plan and Retrospective – Defining their short term scope of work and deliverables. Sharing a retrospective of the work done in the previous quarter, what went well, what didn’t and how the team can improve.
- 1 Year Roadmap
- 48 hour response time - An escalation path in case something goes wrong. The Nix board members will also commit time to be part of this path to ensure swift resolution.
Proposed examples of Critical teams
- Infra
- RFC
- Marketing
Team checklist
For formal and critical teams:
- Decide on members and team lead.
- Create a Matrix room.
- Create or designate an issue tracker.
- Schedule regular meetings and add them to the NixOS.org calendar.
- Create a pull request to add a page for your team to nixos.org and link it from the teams section on the Community page. It should list the following:
- A description of the team.
- List of members.
- Link to issue tracker.
- Link to Matrix room.
- TODO: standardize format/location for meeting minutes, roadmap etc.
For community teams:
- Add a page for your team to nixos.org. It should list the following:
- A short description of the team.
- At least one member as a contact.
- And anything else you want to list.
What’s Next?
We will move to an “alpha” phase for this new model by starting out with a handful of teams. With the goals of starting this process, see if it works, iterating on improving it, and beginning to create more resources for teams (knowledge base/templates/standardize formats). We believe that this will empower the community, the teams and Nix itself by providing that layer of structure and transparency to the entire community. We also plan to talk more about this at Nixcon!
These are the teams we are starting out with:
- Infra team (critical)
- RFC (critical)
- Nix team (formal)
- Doc team (formal)
- Marketing (critical)
Getting involved
Whether you have feedback, want to formalize a team or have thoughts, you can directly reach out to us here, on Matrix or by creating an issue.
@armijn / @edolstra / @domenkozar / @ron / @thufschmitt / @grahamc / @garbas / @fricklerhandwerk / @lheckemann / @tomberek