lix/maintainers
jade 1e74bffd5c pre-commit check for pragma once and ///@file
This is in our style guide, we can cheaply enforce it, let's do it.

```
$ pre-commit
check-case-conflicts.....................................................Passed
check-executables-have-shebangs..........................................Passed
check-headers............................................................Failed
- hook id: check-headers
- exit code: 1

Missing pattern @file in file src/libexpr/value.hh

We found some header files that don't conform to the style guide.

The Lix style guide requests that header files:
- Begin with `#pragma once` so they only get parsed once
- Contain a doxygen comment (`/**` or `///`) containing `@file`, for
  example, `///@file`, which will make doxygen generate docs for them.

  When adding that, consider also adding a `@brief` with a sentence
  explaining what the header is for.

For more details: https://wiki.lix.systems/link/3#bkmrk-header-files

check-merge-conflicts....................................................Passed
check-shebang-scripts-are-executable.....................................Passed
check-symlinks.......................................(no files to check)Skipped
end-of-file-fixer........................................................Passed
mixed-line-endings.......................................................Passed
no-commit-to-branch......................................................Passed
release-notes........................................(no files to check)Skipped
treefmt..................................................................Passed
trim-trailing-whitespace.................................................Passed
```

Fixes: #233
Change-Id: I77150b9298c844ffedd0f85cc5250ae9208502e3
2024-04-08 16:10:57 -07:00
..
backporting.md Apply suggestions from code review 2023-02-08 00:24:28 +01:00
build-release-notes.nix Format Nix code with nixfmt 2024-04-08 13:00:00 -07:00
build-release-notes.py release-notes: check with pre-commit 2024-04-08 15:40:12 -07:00
buildtime_report.sh Enable clang build timing analysis 2024-03-27 03:52:57 +00:00
check-headers.nix pre-commit check for pragma once and ///@file 2024-04-08 16:10:57 -07:00
check-headers.sh pre-commit check for pragma once and ///@file 2024-04-08 16:10:57 -07:00
issue_import.py Issue importer: do not notify 2024-03-23 19:03:34 -07:00
README.md maintainers: add note on marking PRs as draft 2023-06-19 10:55:34 +02:00
release-notes build: replace changelog-d with local script 2024-03-27 03:09:14 +00:00
release-process.md Add pre-commit checks 2024-03-29 22:57:40 -07:00
upload-release.pl Upload the manual to releases.nixos.org 2023-06-06 15:37:26 +02:00

Nix maintainers team

Motivation

The team's main responsibility is to set a direction for the development of Nix and ensure that the code is in good shape.

We aim to achieve this by improving the contributor experience and attracting more maintainers that is, by helping other people contributing to Nix and eventually taking responsibility in order to scale the development process to match users' needs.

Objectives

  • It is obvious what is worthwhile to work on.
  • It is easy to find the right place in the code to make a change.
  • It is clear what is expected of a pull request.
  • It is predictable how to get a change merged and released.

Tasks

  • Establish, communicate, and maintain a technical roadmap
  • Improve documentation targeted at contributors
    • Record architecture and design decisions
    • Elaborate contribution guides and abide to them
    • Define and assert quality criteria for contributions
  • Maintain the issue tracker and triage pull requests
  • Help contributors succeed with pull requests that address roadmap milestones
  • Manage the release lifecycle
  • Regularly publish reports on work done
  • Engage with third parties in the interest of the project
  • Ensure the required maintainer capacity for all of the above

Members

  • Eelco Dolstra (@edolstra) Team lead
  • Théophane Hufschmitt (@thufschmitt)
  • Valentin Gagarin (@fricklerhandwerk)
  • Thomas Bereknyei (@tomberek)
  • Robert Hensing (@roberth)
  • John Ericson (@Ericson2314)

Meeting protocol

The team meets twice a week:

Meeting notes are collected on a collaborative scratchpad, and published on Discourse under the Nix category.

Project board protocol

The team uses a GitHub project board for tracking its work.

Items on the board progress through the following states:

No Status

During the discussion meeting, the team triages new items. To be considered, issues and pull requests must have a high-level description to provide the whole team with the necessary context at a glance.

On every meeting, at least one item from each of the following categories is inspected:

  1. critical
  2. security
  3. regression
  4. bug
  5. tests of existing functionality

Team members can also add pull requests or issues they would like the whole team to consider. To ensure process quality and reliability, all non-trivial pull requests must be triaged before merging.

If there is disagreement on the general idea behind an issue or pull request, it is moved to To discuss. Otherwise, the issue or pull request in questions get the label idea approved. For issues this means that an implementation is welcome and will be prioritised for review. For pull requests this means that:

  • Unfinished work is encouraged to be continued.
  • A reviewer is assigned to take responsibility for getting the pull request merged. The item is moved to the Assigned column.
  • If needed, the team can decide to do a collarorative review. Then the item is moved to the In review column, and review session is scheduled.

What constitutes a trivial pull request is up to maintainers' judgement.

To discuss

Pull requests and issues that are deemed important and controversial are discussed by the team during discussion meetings.

This may be where the merit of the change itself or the implementation strategy is contested by a team member.

As a general guideline, the order of items is determined as follows:

  • Prioritise pull requests over issues

    Contributors who took the time to implement concrete change proposals should not wait indefinitely.

  • Prioritise fixing bugs and testing over documentation, improvements or new features

    The team values stability and accessibility higher than raw functionality.

  • Interleave issues and PRs

    This way issues without attempts at a solution get a chance to get addressed.

In review

Pull requests in this column are reviewed together during work meetings. This is both for spreading implementation knowledge and for establishing common values in code reviews.

When the overall direction is agreed upon, even when further changes are required, the pull request is assigned to one team member. If significant changes are requested or reviewers cannot come to a conclusion in reasonable time, the pull request is marked as draft.

Assigned

One team member is assigned to each of these pull requests. They will communicate with the authors, and make the final approval once all remaining issues are addressed.

If more substantive issues arise, the assignee can move the pull request back to To discuss or In review to involve the team again.

Flowchart

The process is illustrated in the following diagram:

flowchart TD
    discuss[To discuss]

    review[To review]

    New --> |Disagreement on idea| discuss
    New & discuss --> |Consensus on idea| review

    review --> |Consensus on implementation| Assigned

    Assigned --> |Implementation issues arise| review
    Assigned --> |Remaining issues fixed| Merged