Maintainer Mode
Sign in with GitHub
Work in progress. Maintainer Mode changes every day: pages, numbers and links can change or break. Tell us what is wrong or missing.

Plan: merge nixfresh into Maintainer Mode

Status: proposed. No code moves until this plan is approved.

Why

Both tools sweep nixpkgs, read the same pull requests and run on the same host. Maintainer Mode already copies nixfresh's evaluator (src/eval.rs) and attribute sweep (src/attrs.rs). One binary, one database and one sweep cost less to run and to maintain.

The line

Facts about nixpkgs are public. Facts about a person's machines are private.

Public, on every pagePrivate, owner only
queues, review record, the state of nixpkgsuploaded closures
advisories, upstream lag, maintenance gapsalerts that follow from those closures
maintainer practice
counts over public trees only

A number on a public page never uses an uploaded closure.

What moves

From nixfreshBecomes
index (attribute sweep)the one sweep; Maintainer Mode's copy goes away
collectors: tracker, cve, epss, osv, repology, directthe daily refresh
practice, maintainersmaintainer facts on package and person pages
github collectorremoved: the sync already has these PRs
judgestays out: it sends package data to a third party
dashboard, risk tablepackage pages and /state
scan, export, submitthe open source client, run by the person
/api/v1/reports with a token filethe private panel, behind login
/api/v1/triage, /refresh, /scanremoved from the server

nixfresh-mend stays a separate binary. It writes pull requests, and this service never writes to GitHub.

The private panel

A person with an account subscribes to a package set. Alerts follow from it. The set comes from one or more of these:

The set is private, even when every package in it is public: the choice shows what the person runs.

The alert channel is open. See below.

Order

  1. Finish the nixpkgs1 deploy as it is.
  2. Publish nixfresh (owner and licence are open).
  3. Move the sweep and the collectors. Delete the copied evaluator.
  4. Add package facts to the package pages and /state.
  5. Add the private panel and alerts.
  6. Move scan, export and submit to the client.

Of step 3, the collectors are done: tracker, repology, cve, nvd (with a key only), epss, osv and the direct read of tags and registries, and the score. Packaging hygiene reads the sweep, not the git log of practice.

Steps 5 and 6 are done: the "On my machines" filter of /packages, the upload token, the alerts in the Atom feed, and the three client commands. The public flake reference is done and off by default; see docs/rescan.md.

Open