Skip to content

Commit f90ef4e

Browse files
committed
RFC 0199 (nixpkgs-review MCP): init
1 parent c655bda commit f90ef4e

File tree

1 file changed

+149
-0
lines changed

1 file changed

+149
-0
lines changed

rfcs/0199-nixpkgs-review-mcp.md

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
---
2+
feature: nixpkgs-review-mcp
3+
start-date: 2026-04-01
4+
author: Morgan Jones
5+
co-authors: (find a buddy later to help out with the RFC)
6+
shepherd-team: (names, to be nominated and accepted by RFC steering committee)
7+
shepherd-leader: (name to be appointed by RFC steering committee)
8+
related-issues: (will contain links to implementation PRs)
9+
---
10+
11+
# Summary
12+
[summary]: #summary
13+
14+
Many projects, especially ones that converge around complex tools, are standardizing around creating MCPs for giving external agents access to useful utilities. In this RFC, I propose a new MCP for nixpkgs-review with a live implementation that contributors can use right now to speed along their PR reviews.
15+
16+
# Motivation
17+
[motivation]: #motivation
18+
19+
## Long PR delays
20+
21+
It is well known that getting anything reviewed in nixpkgs takes a long time. Assuming an average of 30 minutes of review time, the 10,800 open PRs would take 0.6 years to review. As the amount of software in the world is expected to grow exponentially in the next few years, additional methods for contributors to review things will reduce friction and result in faster updates and additions of packages.
22+
23+
(Ask Claude to make a graph here of nixpkgs growth vs the heat death of the universe)
24+
25+
## Contributor agency
26+
27+
Contributors are using new tools to review their PRs, and the concept of MCPs is not new as a form of [in-band signaling](https://en.wikipedia.org/wiki/In-band_signaling).
28+
29+
For instance, engineers used [Q codes](https://en.wikipedia.org/wiki/Q_code#Later_use) in the days of telegraphy as tools to ask their conversation partner their distance and bearing. When telephony became automated, we got the famous [2600 hertz](https://en.wikipedia.org/wiki/2600_hertz) tones to control telephone backplanes. Sometimes in-band signaling is just convenient, more recently with systems like [chatops](https://aws.amazon.com/chatbot/) to manage EC2 resources from Slack.
30+
31+
We should let people contribute how they feel comfortable ⸻ hence the need for a nixpkgs-review MCP.
32+
33+
# Detailed design
34+
[design]: #detailed-design
35+
36+
Note: The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
37+
38+
This document specifies the **nixpkgs-review Morse Code Protocol** (MCP), which can be used to do reviews at up to 75 tokens per minute, depending on skill.
39+
40+
## Reviewer requirements
41+
42+
To correctly implement the nixpkgs-review MCP, reviewers MUST advertise a frequency on an amateur radio band that allows transmitting CW (continuous wave) signals including Morse code. Receivers SHOULD additionally advertise a grid square in [Maidenhead](https://en.wikipedia.org/wiki/Maidenhead_Locator_System) format, so contributors can know which heading to point their antenna. Reviewers MAY advertise a callsign, though callsigns are not required to receive MCP commands.
43+
44+
### Band plan
45+
46+
For ease of use, we define frequencies in many bands that can be used for the MCP:
47+
48+
|Band|Frequency|
49+
|:---|:--------|
50+
|160 meters|1.899 MHz|
51+
|80 meters|3.599 MHz|
52+
|60 meters|5.349 MHz|
53+
|40 meters|7.099 MHz|
54+
|30 meters|10.109 MHz|
55+
|20 meters|14.099 MHz|
56+
|17 meters|18.099 MHz|
57+
|15 meters|21.099 MHz|
58+
|12 meters|24.899 MHz|
59+
|10 meters|28.099 MHz|
60+
|6 meters|50.099 MHz|
61+
|2 meters|144.099 MHz|
62+
|1.25 meters|222.99 MHz|
63+
|70 cm|420.69 MHz|
64+
65+
This has the benefit of giving us more 9s than GitHub, since 9s are in high demand these days.
66+
67+
### Software
68+
69+
It is RECOMMENDED for reviewers to have software running that allows for the automatic decoding of CW, [like this one](https://github.com/numinit/ifttx) based on [fldigi](https://search.nixos.org/packages?channel=unstable&query=fldigi). Alternatively, reviewers MAY do so by hand, provided that they are willing to enter nixpkgs-review commands manually and do not have a skill issue.
70+
71+
Correct review messages follow this ABNF:
72+
73+
```
74+
MCP = [RECEIVER PAUSE] [SENDER PAUSE] "PR" PAUSE (NUMBER / RESULT)
75+
RECEIVER = "CQ" / CALLSIGN
76+
SENDER = CALLSIGN
77+
CALLSIGN = 3*6(ALPHA / DIGIT)
78+
PAUSE = [SP]
79+
NUMBER = 6*7DIGIT
80+
RESULT = ("LGTM" / "NAK") PAUSE NUMBER
81+
```
82+
83+
Note that we define the PAUSE symbol as an optional space. There is frequent disagreement on what counts as a "space" in Morse code, so this definition SHOULD make everyone happy. (If it doesn't, you know exactly where to complain).
84+
85+
Callsigns are OPTIONAL in the protocol to facilitate correct decoding of more MCP commands, though they SHOULD be sent. If they are successfully decoded, they SHOULD be compared against the receiver's callsign, if any. Note that CQ is a valid callsign referring to anyone, because there are [always other receivers.](https://local58.tv/)
86+
87+
### Correct nixpkgs-review invocation
88+
89+
Reviewers SHOULD use an invocation similar to `nixpkgs review pr $NUMBER --post-result` given a MCP message `PR $NUMBER`.
90+
91+
Reviewers MAY include, in the result template, details about the frequency and grid square that the review was performed from, as well as information about their antenna.
92+
93+
Reviewers MAY also attach a [QSL card](https://en.wikipedia.org/wiki/QSL_card) to the review comment confirming contact.
94+
95+
If the PR is reviewed successfully, the reviewer MAY send back a result message, e.g. `PR LGTM $NUMBER` or `PR NAK $NUMBER`. However, the GitHub issue is the place that takes priority.
96+
97+
## Contributor requirements
98+
99+
To use the nixpkgs-review MCP, a contributor MUST have a radio transmitter and antenna tuned to the correct frequency, and SHOULD have an amateur radio license.
100+
101+
The contributor simply performs the opposite of the reviewer; that is, encodes the MCP message as CW and sends it to a reviewer.
102+
103+
# Examples and Interactions
104+
[examples-and-interactions]: #examples-and-interactions
105+
106+
- `CQ K1ABC PR 123456`: K1ABC wants anyone to review #123456
107+
- `K1ABC W2DEF PR NAK 123456`: W2DEF says you need to fix #123456
108+
- `W2DEF K1ABC WTF SRSLY`: K1ABC is annoyed that their PR got a NAK
109+
110+
## Live instance
111+
112+
21.099 MHz, grid DM13. Receive only mode for now, will reply using nixpkgs-review on the GH issue.
113+
114+
Yes, this is real. If you get CW down to southern California and fldigi decodes it, you'll get your PR merged if it passes review (and other checks). Try it.
115+
116+
(If you want a review on another frequency, let me know, I'll likely be switching to 30 and 40 at night in the US).
117+
118+
# Drawbacks
119+
[drawbacks]: #drawbacks
120+
121+
Everyone needs a radio and a large antenna. While this may use a similar amount of power to a GPU, it runs in multiplayer mode by default.
122+
123+
# Alternatives
124+
[alternatives]: #alternatives
125+
126+
Model Context Protocol, which was briefly considered before more token-efficient alternatives were chosen.
127+
128+
# Prior art
129+
[prior-art]: #prior-art
130+
131+
- https://github.com/NixOS/nixpkgs/pull/441048#issuecomment-3265365059
132+
- https://github.com/NixOS/nixpkgs/pull/427048#issuecomment-3265399043
133+
- https://github.com/NixOS/nixpkgs/pull/486609
134+
- https://github.com/Mic92/nixpkgs-review
135+
- https://sourceforge.net/projects/fldigi/
136+
137+
# Unresolved questions
138+
[unresolved]: #unresolved-questions
139+
140+
- Can we use RTTY for review comments?
141+
- What about WEFAX for faxing each other diffs?
142+
- Does Morse Code actually have spaces?
143+
- Will amateur radio tools ever have good UX?
144+
- How do we improve the experience for people who live in grid square RR73?
145+
146+
# Future work
147+
[future]: #future-work
148+
149+
- [Nix Village at DEF CON 34](https://nix.vegas). If you like more hacks like this, our [call for projects](https://cfp.nix.vegas/2026/) is out ;)

0 commit comments

Comments
 (0)