Skip to content

Commit ebf8220

Browse files
authored
Merge pull request #215 from nikomatsakis/team-functioning
proposal for how the team operates
2 parents 6fb8a86 + 8600ecc commit ebf8220

File tree

12 files changed

+183
-69
lines changed

12 files changed

+183
-69
lines changed

crates/rust-project-goals-cli/src/rfc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ pub fn generate_comment(path: &Path) -> anyhow::Result<()> {
6161
}
6262

6363
for member in members {
64-
println!("* [ ] @{} (optional)", member.github);
64+
println!("* [ ] {} (optional)", member.github);
6565
}
6666
}
6767

src/SUMMARY.md

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,20 @@
3535

3636
* [The goals team](./admin/team.md)
3737
* [Running the program](./admin/running-the-program.md)
38-
* [Sample: Call for Proposal blog post](./admin/samples/cfp.md)
39-
* [Sample: Text for the main README](./admin/samples/main-readme.md)
40-
* [Sample: Starting RFC text](./admin/samples/rfc.md)
41-
* [Sample: Goals page](./admin/samples/goals.md)
42-
* [Overall setup](./admin/setup.md)
43-
* [Mdbook plugin details](./admin/mdbook_plugin.md)
44-
* [Commands you can run](./admin/commands.md)
45-
* [`issues`, creating tracking issues](./admin/issues.md)
46-
* [`updates`, create monthly blog post summary](./admin/updates.md)
38+
* [Team coordination](./admin/coordination.md)
39+
* [Call for proposals](./admin/cfp.md)
40+
* [Preparing the RFC](./admin/prepare_rfc.md)
41+
* [Authoring monthly updates](./admin/author_updates.md)
42+
* [Sample texts](./admin/samples.md)
43+
* [Sample: Call for Proposal blog post](./admin/samples/cfp.md)
44+
* [Sample: Text for the main README](./admin/samples/main-readme.md)
45+
* [Sample: Starting RFC text](./admin/samples/rfc.md)
46+
* [Sample: Goals page](./admin/samples/goals.md)
47+
* [Technical reference](./admin/reference.md)
48+
* [Overall setup](./admin/setup.md)
49+
* [Mdbook plugin details](./admin/mdbook_plugin.md)
50+
* [`cargo rpg` command reference](./admin/commands.md)
51+
* [`rfc`, export RFC text](./admin/rfc_command.md)
52+
* [`fcp`, create the FCP merge comment](./admin/fcp_command.md)
53+
* [`issues`, creating tracking issues](./admin/issues.md)
54+
* [`updates`, create monthly blog post summary](./admin/updates.md)

src/admin/author_updates.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Author updates
2+
3+
## Soliciting updates
4+
5+
Triagebot can ping project-goal owners for updates. To use it, go to Zulip and execute a command like this.
6+
7+
```
8+
@triagebot ping-goals 14 Oct-21
9+
```
10+
11+
The first number (14) is a threshold, it is typically set to the current day of the month (e.g., the above command assumes it is Oct 14). It means "if they have posted a comment in the last 14 days, don't bug them".
12+
13+
The second string ("Oct-21") is the deadline for updates to be included.
14+
15+
We need to improve this UI.
16+
17+
## Drafting the post
18+
19+
The [blog post template][updates template] includes a longer description of the flagship goals as well as a bullet-point or two for each of the other goals -- more than that and the blog post becomes overwhelming, the goal is mostly to let people find the goal they're interested in and click to read the full details. You can fill out the template by hand but you can also use the `cargo rpg updates` ([documented here](./updates.md)) to prepare a rough draft; the tool uses an LLM currently hosted on AWS Bedrock and hence requires setting up an AWS account.
20+
21+
```bash
22+
> cargo rpg updates
23+
```
24+
25+
Once the draft is prepared, create a hackmd in the rust-project-goals hackmd team, post it to `#project-goals` and apply edits (particularly for the flagship goals). Then open a PR against [the blog.rust-lang.org repository](https://github.com/rust-lang/blog.rust-lang.org).
26+
27+
[updates template]: https://github.com/rust-lang/rust-project-goals/blob/main/templates/updates.hbs

src/admin/cfp.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Call for proposals
2+
3+
Each goal milestone corresponds to six months, designated in the format YYYYhN, e.g., 2024h2 or 2025h1. To launch a new goal season, you should get started a couple of months before the new season starts:
4+
5+
* For an H1 season, start around mid October of the year before.
6+
* For an H2 season, start around mid April of the year before.
7+
8+
This is the checklist of steps to starting accepting goal proposals:
9+
10+
* [ ] Prepare a Call For Proposals blog post on the [Inside Rust] blog based on [this sample](./samples/cfp.md).
11+
* We use Inside Rust and not the Main blog because the target audience is would-be Rust contributors and maintainers.
12+
* [ ] Update the [main README page](../README.md) to indicate that the next round of goals is begin accepted.
13+
* [Sample text to include.](./samples/main-readme.md)
14+
* [ ] Create a new directory `src/YYYYhN`, e.g., `src/2025h1`, with the following files. Note that the sample files below include `<!-- XXX -->` directives that are detected by the [mdbook plugin](./mdbook_plugin.md) and replaced with appropriate content automatically.
15+
* A `src/YYYYhN/README.md` file that contains the draft RFC.
16+
* [You can start with this sample file.](./samples/rfc.md)
17+
* A `src/YYYYhN/goals.md` file containing the draft goal listing.
18+
* [You can start with this sample file.](./samples/goals.md)
19+
* A `src/YYYYhN/not_accepted.md` file containing the list of goals that were not accepted.
20+
* [You can start with this sample file.](./samples/not_accepted.md)
21+
* [ ] Modify SUMMARY.md to include your new milestone with some text like what is shown below.
22+
23+
Sample `SUMMARY.md` comments from 2025H1:
24+
25+
```
26+
# ⏳ 2025H1 goal process
27+
28+
- [Overview](./2025h1/README.md)
29+
- [Proposed goals](./2025h1/goals.md)
30+
- [Goals not accepted](./2025h1/not_accepted.md)
31+
```
32+
33+
[Inside Rust]: https://blog.rust-lang.org/inside-rust/
34+
35+
## Receiving PRs
36+
37+
*to be written*

src/admin/commands.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# Commands
22

3-
There is a CLI for manipulating and checking project goals. You can run it with `cargo rpg` and it has a number of useful commands, described in this section. Use `cargo rpg --help` to get a summary.
3+
The `cargo rpg` command is a CLI for manipulating and checking project goals. This section provides a reference describing (some of) the ability commands. You can also try `cargo rpg --help` to get a summary.

src/admin/coordination.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Team coordination
2+
3+
## Discussion channels
4+
5+
The [project-goals channel][pg] on Zulip is used for discussing the "meat" of project goals: e.g., updates, proposed goals, etc.
6+
7+
[pg]: https://rust-lang.zulipchat.com/#narrow/channel/435869-project-goals
8+
9+
The [project-goals/meta channel][pgm] on Zulip is used for meta discussions about running the program itself rest.
10+
11+
[pgm]: https://rust-lang.zulipchat.com/#narrow/channel/478266-project-goals.2Fmeta
12+
13+
To broadcast updates about the status of the goal program, we create a goal in every goal program correpsonding to running the program. Updates posted on that tracking issue will be posted in `project-goals`.
14+
15+
## Meetings
16+
17+
We do not currently have a regularly scheduled meeting. Sync meetings are coordinated ad-hoc and typically take place on Zulip in the [project-goals/meta channel][pgm].
18+
19+
## Tracking our work
20+
21+
To track work items, we use [issues tagged with the `meta` label](https://github.com/rust-lang/rust-project-goals/issues?q=is%3Aissue%20state%3Aopen%20label%3Ameta) on the [rust-lang/rust-project-goals](https://github.com/rust-lang/rust-project-goals/) repository.
22+
23+
Issues [tagged with "help wanted"](https://github.com/rust-lang/rust-project-goals/issues?q=state%3Aopen%20label%3A%22help%20wanted%22) indicates places where we would like somebody to jump in. **Every such issue will also be tagged with mentoring instructions giving some idea how to get started.**
24+
25+
There are also "meta" milestones for each program period to track specific goals related to that period.

src/admin/fcp_command.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# `fcp`, create the FCP merge comment
2+
3+
The `cargo rpg fcp` command creates an FCP comment, since the format for the project goals RFC is distinct from other RFCs.
4+
5+
To use, simply invoke the command with the directory for the goal period, e.g., something like this:
6+
7+
```
8+
> cargo rpg rfc src/2025h1
9+
```
10+
11+
This will emit a comment to stdout that includes the name of each team which has registered asks along with checkboxes for each individual on that team.
12+
13+
To avoid exceeding Github's limit of 50 usernames per message, only leads are cited with `@` usernames.

src/admin/prepare_rfc.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Preparing the RFC
2+
3+
## Review with teams
4+
5+
Before opening the RFC it is best to review its current state with teams that have large number of goals. You want there to be as little surprise as possible once the RFC itself is opened, as it will be more annoying to make changes.
6+
7+
Encourage teams to read over the list of asks assigned to them and answer questions like
8+
9+
* Are there any goals that you are not aligned with? (i.e., work that you do not think should happen, or do not think should happen now)
10+
* Is there important work not represented here? Should that work have a project goal?
11+
* Is the team capable of following through on the total asks, or will that exceed team capacity?
12+
* If [flagship goals](../about/flagship_goals.md) have been decided, are there any concerns with those goals? Any suggestions for changes or alternatives?
13+
14+
## Select flagship goals
15+
16+
[Flagship goals](../about/flagship_goals.md) represent the 2-3 items that will be highlighted and will be the focus of external communication. The project goal team is responsible for selecting flagship goals. The criteria for flagship goals is described in the [About page](../about//flagship_goals.md). Because flagship goals generally take longer than 6 months to complete, most flagship goals are continuations from previous sessions, but as those goals get closer to completion, it may be good to shift the messaging towards a fresh focus.
17+
18+
## Creating the RFC
19+
20+
Run [`cargo rpg rfc`](./rfc_command.md) to export the RFC text in a format suitable for adding into the RFCs repository.
21+
22+
## Beginning Final Comment Period
23+
24+
Unlike ordinary RFCs, project goal RFCs are not chosen by any one team. Instead we craft a comment with the names of all project members. The leads of each team at minimum are required to check their box, though obviously the more boxes the better. You can craft this comment with the [`cargo rpg fcp`](./fcp_command.md) command.

src/admin/reference.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Technical reference
2+

src/admin/rfc_command.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# `rfc`, export RFC text
2+
3+
The `cargo rpg rfc` command exports RFC text suitable for inclusion in the rust-lang/rfcs repository. It is intended for use when [preparing the RFC](./prepare_rfc.md) at the start of a goal period.
4+
5+
To use, simply invoke the command with the directory for the goal period, e.g., something like this:
6+
7+
```
8+
> cargo rpg rfc src/2025h1
9+
```
10+
11+
This will read the README.md file and dump a version to stdout that can be copy-and-paste. This version will have URLs adjusted to point at the rust-lang/rust-project-goals repository and other cosmetic changes.

src/admin/running-the-program.md

Lines changed: 24 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,35 @@
11
# Running the program
22

3-
So... somebody suckered you into serving as the owner of the goals program. Congratulations!
4-
This page will walk you through the process.
3+
Thank you for helping to run the goals program. Congratulations!
4+
This page will walk you through what is involved at each step of the the process.
55

6-
## Call for proposals
6+
## Calendar
77

8-
Each goal milestone corresponds to six months, designated in the format YYYYHN, e.g., 2024H2 or 2025H1.
9-
To launch a new goal season, you should get started a month or two before the new season starts:
8+
This section summarizes the dates involved with a theoretical program taking place in the year 2222.
9+
Each item has a link to more instructions.
1010

11-
* For an H1 season, start around mid Oct or November of the year before.
12-
* For an H2 season, start around mid April or May of the year before.
11+
Each of the calendars has someoverlap with the previous and next previous.
1312

14-
This is the checklist of steps to starting accepting goal proposals:
13+
### H1 calendar
1514

16-
* [ ] Prepare a Call For Proposals blog post on the [Inside Rust] blog based on [this sample](./samples/cfp.md).
17-
* We use Inside Rust and not the Main blog because the target audience is would-be Rust contributors and maintainers.
18-
* [ ] Update the [main README page](../README.md) to indicate that the next round of goals is begin accepted.
19-
* [Sample text to include.](./samples/main-readme.md)
20-
* [ ] Create a new directory `src/YYYYhN`, e.g., `src/2025h1`, with the following files. Note that the sample files below include `<!-- XXX -->` directives that are detected by the [mdbook plugin](./mdbook_plugin.md) and replaced with appropriate content automatically.
21-
* A `src/YYYYhN/README.md` file that contains the draft RFC.
22-
* [You can start with this sample file.](./samples/rfc.md)
23-
* A `src/YYYYhN/goals.md` file containing the draft goal listing.
24-
* [You can start with this sample file.](./samples/goals.md)
25-
* A `src/YYYYhN/not_accepted.md` file containing the list of goals that were not accepted.
26-
* [You can start with this sample file.](./samples/not_accepted.md)
27-
* [ ] Modify SUMMARY.md to include your new milestone with some text like what is shown below.
15+
| Task | *Nov–Dec <br> (prev. H2)* | Jan | Feb–Jun | *Jul <br> (next H2*) |
16+
|-----------|---------------------------|-----|-----------------|----------------------|
17+
| [CFP] | ██████ | ░░░ | | |
18+
| [RFC] | | ███ | | |
19+
| [Updates] | | | ███████████████ | |
20+
| [Retro] | | | | ███ |
2821

29-
Sample `SUMMARY.md` comments from 2025H1:
22+
### H2 calendar
3023

31-
```
32-
# ⏳ 2025H1 goal process
33-
34-
- [Overview](./2025h1/README.md)
35-
- [Proposed goals](./2025h1/goals.md)
36-
- [Goals not accepted](./2025h1/not_accepted.md)
37-
```
38-
39-
[Inside Rust]: https://blog.rust-lang.org/inside-rust/
40-
41-
## Receiving PRs
42-
43-
*to be written*
44-
45-
## Preparing the RFC
46-
47-
*to be written*
48-
49-
## Opening the RFC
50-
51-
*to be written*
52-
53-
## Once the RFC is accepted
54-
55-
*to be written*
56-
57-
## Running the goal season
58-
59-
* Every Monday go to Zulip and run:
60-
* `@triagebot ping-goals 14 Oct-21`
61-
* To prepare the monthly blog post:
62-
* Run [the `cargo run -- updates` command](./updates.md)
63-
* Create a new post in main Rust blog found at [the blog.rust-lang.org repository](https://github.com/rust-lang/blog.rust-lang.org).
64-
65-
66-
67-
## Finalizing the goal season
24+
| Task | *May–Jun <br> (prev. H1)* | Jul | Aug–Dec | *Jan <br> (next H1)* |
25+
|-----------|---------------------------|-----|-----------------|----------------------|
26+
| [CFP] | ██████ | ░░░ | | |
27+
| [RFC] | | ███ | | |
28+
| [Updates] | | | ███████████████ | |
29+
| [Retro] | | | | ███ |
6830

6931

32+
[CFP]: ./cfp.md
33+
[RFC]: ./prepare_rfc.md
34+
[Updates]: ./author_updates.md
35+
[Retro]: ./retro.md

src/admin/samples.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Sample texts

0 commit comments

Comments
 (0)