Skip to content

Commit 811e96a

Browse files
committed
prepare the 2025h1 starting page
and document the process as I go
1 parent 00223b0 commit 811e96a

File tree

13 files changed

+445
-6
lines changed

13 files changed

+445
-6
lines changed

src/2025h1/README.md

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
> *![Status: Accepting goal proposals](https://img.shields.io/badge/Status-Accepting%20goal%20proposals-yellow) We are in the process of assembling the goal slate.*
2+
3+
## Summary
4+
5+
This is a draft for the eventual RFC proposing the 2025H1 goals.
6+
7+
## Motivation
8+
9+
The 2025H1 goal slate consists of <!-- #GOALS --> project goals, of which we have selected (TBD) as **flagship goals**. Flagship goals represent the goals expected to have the broadest overall impact.
10+
11+
### How the goal process works
12+
13+
**Project goals** are proposed bottom-up by an **owner**, somebody who is willing to commit resources (time, money, leadership) to seeing the work get done. The owner identifies the problem they want to address and sketches the solution of how they want to do so. They also identify the support they will need from the Rust teams (typically things like review bandwidth or feedback on RFCs). Teams then read the goals and provide feedback. If the goal is approved, teams are committing to support the owner in their work.
14+
15+
Project goals can vary in scope from an internal refactoring that affects only one team to a larger cross-cutting initiative. No matter its scope, accepting a goal should never be interpreted as a promise that the team will make any future decision (e.g., accepting an RFC that has yet to be written). Rather, it is a promise that the team are aligned on the contents of the goal thus far (including the design axioms and other notes) and will prioritize giving feedback and support as needed.
16+
17+
Of the proposed goals, a small subset are selected by the roadmap owner as **flagship goals**. Flagship goals are chosen for their high impact (many Rust users will be impacted) and their shovel-ready nature (the org is well-aligned around a concrete plan). Flagship goals are the ones that will feature most prominently in our public messaging and which should be prioritized by Rust teams where needed.
18+
19+
### Rust’s mission
20+
21+
Our goals are selected to further Rust's mission of **empowering everyone to build reliable and efficient software**. Rust targets programs that prioritize
22+
23+
* reliability and robustness;
24+
* performance, memory usage, and resource consumption; and
25+
* long-term maintenance and extensibility.
26+
27+
We consider "any two out of the three" as the right heuristic for projects where Rust is a strong contender or possibly the best option.
28+
29+
### Axioms for selecting goals
30+
31+
We believe that...
32+
33+
* **Rust must deliver on its promise of peak performance and high reliability.** Rust’s maximum advantage is in applications that require peak performance or low-level systems capabilities. We must continue to innovate and support those areas above all.
34+
* **Rust's goals require high productivity and ergonomics.** Being attentive to ergonomics broadens Rust impact by making it more appealing for projects that value reliability and maintenance but which don't have strict performance requirements.
35+
* **Slow and steady wins the race.** For this first round of goals, we want a small set that can be completed without undue stress. As the Rust open source org continues to grow, the set of goals can grow in size.
36+
37+
## Guide-level explanation
38+
[guide-level-explanation]: #guide-level-explanation
39+
40+
### Flagship goals
41+
42+
The flagship goals proposed for this roadmap are as follows:
43+
44+
(TBD)
45+
46+
#### Why these particular flagship goals?
47+
48+
(TBD--typically one paragraph per goal)
49+
50+
### Project goals
51+
52+
The slate of additional project goals are as follows. These goals all have identified owners who will drive the work forward as well as a viable work plan. The goals include asks from the listed Rust teams, which are cataloged in the [reference-level explanation](#reference-level-explanation) section below.
53+
54+
Some goals here do not yet have an owner (look for the ![Help wanted][] badge). Teams have reserved some capacity to pursue these goals but until an appropriate owner is found they are only considered provisionally accepted. If you are interested in serving as the owner for one of these orphaned goals, reach out to the mentor listed in the goal to discuss.
55+
56+
<!-- GOALS 'Accepted,Orphaned' -->
57+
58+
# Reference-level explanation
59+
[reference-level-explanation]: #reference-level-explanation
60+
61+
The following table highlights the asks from each affected team.
62+
The "owner" in the column is the person expecting to do the design/implementation work that the team will be approving.
63+
64+
<!-- TEAM ASKS -->
65+
66+
### Definitions
67+
68+
Definitions for terms used above:
69+
70+
* *Author RFC* and *Implementation* means actually writing the code, document, whatever.
71+
* *Design meeting* means holding a synchronous meeting to review a proposal and provide feedback (no decision expected).
72+
* *RFC decisions* means reviewing an RFC and deciding whether to accept.
73+
* *Org decisions* means reaching a decision on an organizational or policy matter.
74+
* *Secondary review* of an RFC means that the team is "tangentially" involved in the RFC and should be expected to briefly review.
75+
* *Stabilizations* means reviewing a stabilization and report and deciding whether to stabilize.
76+
* *Standard reviews* refers to reviews for PRs against the repository; these PRs are not expected to be unduly large or complicated.
77+
* Other kinds of decisions:
78+
* [Lang team experiments](https://lang-team.rust-lang.org/how_to/experiment.html) are used to add nightly features that do not yet have an RFC. They are limited to trusted contributors and are used to resolve design details such that an RFC can be written.
79+
* Compiler [Major Change Proposal (MCP)](https://forge.rust-lang.org/compiler/mcp.html) is used to propose a 'larger than average' change and get feedback from the compiler team.
80+
* Library [API Change Proposal (ACP)](https://std-dev-guide.rust-lang.org/development/feature-lifecycle.html) describes a change to the standard library.
81+
82+
[AGS]: ./Project-goal-slate.md
83+
[AMF]: ./a-mir-formality.md
84+
[Async]: ./async.md
85+
[ATPIT]: ./ATPIT.md
86+
[CS]: ./cargo-script.md
87+
[CT]: ./const-traits.md
88+
[ERC]: ./ergonomic-rc.md
89+
[MGCA]: ./min_generic_const_arguments.md
90+
[NBNLB]: ./Polonius.md
91+
[NGS]: ./next-solver.md
92+
[PET]: ./Patterns-of-empty-types.md
93+
[PGC]: ./pubgrub-in-cargo.md
94+
[RFL]: ./rfl_stable.md
95+
[SBS]: ./sandboxed-build-script.md
96+
[YKR]: ./yank-crates-with-a-reason.md
97+
[SC]: ./Rust-for-SciComp.md
98+
[OC]: ./optimize-clippy.md
99+
100+
<!-- Github usernames -->

src/2025h1/goals.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Goals
2+
3+
This page lists the <!-- #GOALS --> project goals **proposed** for 2025h1.
4+
5+
> Just because a goal is listed on this list does not mean the goal has been accepted.
6+
> The owner of the goal process makes the final decisions on which goals to include
7+
> and prepares an RFC to ask approval from the teams.
8+
9+
## Flagship goals
10+
11+
Flagship goals represent the goals expected to have the broadest overall impact.
12+
13+
<!-- GOALS 'Flagship' -->
14+
15+
## Other goals
16+
17+
These are the other proposed goals.
18+
19+
**Orphaned goals.** Some goals here are marked with the ![Help wanted][] badge for their owner. These goals are called "orphaned goals". Teams have reserved some capacity to pursue these goals but until an appropriate owner is found they are only considered provisionally accepted. If you are interested in serving as the owner for one of these orphaned goals, reach out to the mentor listed in the goal to discuss.
20+
21+
<!-- GOALS 'Accepted,Proposed,Orphaned' -->

src/2025h1/not_accepted.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Not accepted
2+
3+
This section contains goals that were proposed but ultimately not accepted, either for want of resources or consensus. In many cases, narrower versions of these goals were proposed instead.
4+
5+
<!-- GOALS 'Not accepted' -->

src/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ There are [26 total goals](./2024h2/goals.md) established for the current goal p
1212

1313
## Next goal period (2025h1)
1414

15-
The next goal period will be 2025h1, which runs from Jan 1 to Jun 30. We have not formally begun assembling goals but you are still welcome to [open a PR proposing a goal](./how_to/propose_a_goal.md) at any time.
15+
The next goal period will be 2025h1 runs from Jan 1 to Jun 30. We are currently in the process of assembling goals. [Click here](./2025h1/goals.md) to see the current list. If you'd like to propose a goal, [instructions can be found here](./how_to/propose_a_goal.md).
1616

1717
## About the process
1818

src/SUMMARY.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111

1212
# ⏳ 2025H1 goal process
1313

14-
- [Starting in October]()
14+
- [Overview](./2025h1/README.md)
15+
- [Proposed goals](./2025h1/goals.md)
16+
- [Goals not accepted](./2025h1/not_accepted.md)
1517

1618
# 📖 Learn about
1719

@@ -29,7 +31,13 @@
2931

3032
# 🔧 Running the goals program
3133

34+
* [Running the program](./admin/running-the-program.md)
35+
* [Sample: Call for Proposal blog post](./admin/samples/cfp.md)
36+
* [Sample: Text for the main README](./admin/samples/main-readme.md)
37+
* [Sample: Starting RFC text](./admin/samples/rfc.md)
38+
* [Sample: Goals page](./admin/samples/goals.md)
3239
* [Overall setup](./admin/setup.md)
3340
* [Mdbook plugin details](./admin/mdbook_plugin.md)
3441
* [Commands you can run](./admin/commands.md)
35-
* [Creating tracking issues](./admin/issues.md)
42+
* [`issues`, creating tracking issues](./admin/issues.md)
43+
* [`updates`, create monthly blog post summary](./admin/updates.md)

src/admin/running-the-program.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Running the program
2+
3+
So... somebody suckered you into serving as the owner of the goals program. Congratulations!
4+
This page will walk you through the process.
5+
6+
## Call for proposals
7+
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:
10+
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.
13+
14+
This is the checklist of steps to starting accepting goal proposals:
15+
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.
28+
29+
Sample `SUMMARY.md` comments from 2025H1:
30+
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
68+
69+

src/admin/samples/cfp.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Call for PRs: YYYYHN goals
2+
3+
> **NOTE:** This is a sample blog post you can use as a starting point.
4+
> To begin a new goal season (e.g., 2222H1), do the following:
5+
>
6+
> * Copy this file to to the `blog.rust-lang.org` repository as a new post.
7+
> * Search and replace `YYYYHN` with `2222H1` and delete this section.
8+
> * Look for other "TBD" sections, you'll want to replace those eventually.
9+
10+
**As of today, we are officially accepting proposals for Rust Project Goals targeting YYYYHN (the (TBD) half of YYYY).** If you'd like to particiapte in the process, or just to follow along, please check out the [YYYYHN goal page][YYYYHN]. It includes listings of the goals currently under consideration , more details about the goals program, and instructions for how to submit a goal.
11+
12+
[YYYYHN]: https://rust-lang.github.io/rust-project-goals/YYYYHN/index.html
13+
14+
## What is the project goals program and how does it work?
15+
16+
Every six months, the Rust project commits to a set of goals for the upcoming half-year. The process involves:
17+
18+
* the owner of the goal program (currently me) posts a call for proposals (this post);
19+
* would-be goal owners [open PRs][] against the [rust-project-goals] repository;
20+
* the goal-program owner gathers feedback on these goals and chooses some of them to be included in the RFC proposing the final slate of goals.
21+
22+
To get an idea what the final slate of goals looks like, check out the RFC from the previous round of goals, [RFC (TBD)][]. The RFC describes a set of goals, designates a few of them as flagship goals, and summarizes the work expected from each team. The RFC is approved by (at least) the leads of each team, effectively committing their team to prove the support that is described.
23+
24+
[rust-project-goals]: https://rust-lang.github.io/rust-project-goals/
25+
[open PRs]: https://rust-lang.github.io/rust-project-goals/how_to/propose_a_goal.html
26+
[May of 2024]: https://blog.rust-lang.org/inside-rust/2024/05/07/announcing-project-goals.html
27+
[RFC 3614]: https://github.com/rust-lang/rfcs/pull/3614
28+
[RFC (TBD)]: https://github.com/rust-lang/rfcs/pull/TBD
29+
[PAIA]: https://blog.rust-lang.org/2024/08/12/Project-goals.html
30+
31+
## Should I submit a goal?
32+
33+
Opening a goal is an indication that you (or your company, etc) is willing to put up the resources needed to make it happen, at least if you get the indicated support from the teams. These resources are typically development time and effort, but they could be funding (in that case, we'd want to identify someone to take up the goal). If you pass that bar, then by all means, yes, open a goal.
34+
35+
Note though that controversial goals are likely to not be accepted. If you have an idea that you think people won't like, then you should find ways to lower the ask of the teams. For example, maybe the goal should be to perform experiments to help make the case for the idea, rather than jumping straight to implementation.
36+
37+
## Can I still do X, even if I don't submit a goal for it?
38+
39+
Yes. Goals are not mandatory for work to proceed. They are a tracking mechanism to help stay on course.
40+
41+
## Conclusion
42+
43+
The Rust Project Goals program is driving progress, increasing transparency, and energizing the community. As we enter the second round, we invite you to contribute your ideas and help shape Rust's future. Whether you're proposing a goal or following along, your engagement is vital to Rust's continued growth and success. Join us in making Rust even better in 2025!

src/admin/samples/goals.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Goals
2+
3+
> **NOTE:** This is a sample starting point for the `goals.md` page in a milestone directory.
4+
>
5+
> * Search and replace `YYYYHN` with `2222H1` and delete this section.
6+
7+
This page lists the <!-- #GOALS --> project goals **proposed** for YYYYHN.
8+
9+
> Just because a goal is listed on this list does not mean the goal has been accepted.
10+
> The owner of the goal process makes the final decisions on which goals to include
11+
> and prepares an RFC to ask approval from the teams.
12+
13+
## Flagship goals
14+
15+
Flagship goals represent the goals expected to have the broadest overall impact.
16+
17+
<!-- GOALS 'Flagship' -->
18+
19+
## Other goals
20+
21+
These are the other proposed goals.
22+
23+
**Orphaned goals.** Some goals here are marked with the ![Help wanted][] badge for their owner. These goals are called "orphaned goals". Teams have reserved some capacity to pursue these goals but until an appropriate owner is found they are only considered provisionally accepted. If you are interested in serving as the owner for one of these orphaned goals, reach out to the mentor listed in the goal to discuss.
24+
25+
<!-- GOALS 'Accepted,Proposed,Orphaned' -->

src/admin/samples/main-readme.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Sample: Text for the main README
2+
3+
> **NOTE:** This is a sample section you can use as a starting point.
4+
>
5+
> * Copy and paste the markdown below into the [main README](../../README.md).
6+
> * Replace `YYYYHN` with `2222h1` or whatever.
7+
>
8+
> (Note that the links on this page are relative to the main README, not its current location.)
9+
10+
## Next goal period (YYYYHN)
11+
12+
The next goal period will be YYYYHN, running from MM 1 to MM 30. We are currently in the process of assembling goals. [Click here](./YYYYHN/goals.md) to see the current list. If you'd like to propose a goal, [instructions can be found here](./how_to/propose_a_goal.md).

src/admin/samples/not_accepted.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Not accepted
2+
3+
> **NOTE:** This is a sample starting point for the `not_accepted.md` page in a milestone directory.
4+
5+
This section contains goals that were proposed but ultimately not accepted, either for want of resources or consensus. In many cases, narrower versions of these goals were proposed instead.
6+
7+
<!-- GOALS 'Not accepted' -->

0 commit comments

Comments
 (0)