|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "Lang team Backlog Bonanza and Project Proposals" |
| 4 | +author: Nicholas Matsakis |
| 5 | +team: the lang team <https://www.rust-lang.org/governance/teams/lang> |
| 6 | +--- |
| 7 | + |
| 8 | +A month or two back, the lang team embarked on a new initiative that |
| 9 | +we call the "Backlog Bonanza". The idea is simple: we are holding a |
| 10 | +series of meetings in which we go through every pending RFC, one by |
| 11 | +one, and try to reach some sort of determination about what to do with |
| 12 | +it. Once we've finished that, we can start in on categorizing other |
| 13 | +forms of backlog, such as tracking issues. |
| 14 | + |
| 15 | +### Possible outcomes for each RFC |
| 16 | + |
| 17 | +When we look at an RFC, we're typically deciding between one of the following outcomes: |
| 18 | + |
| 19 | +* **Close** the RFC, if the problem doesn't seem like high priority at the moment, or the solution seems quite far from what we would want. |
| 20 | +* Close, but **suggest a [project proposal]**, if we think that the we might like to see the problem solved, but we aren't sure if the RFC has the design right, or we're not sure who would be a good liaison. |
| 21 | +* **Merge** the RFC, if we think the RFC basically nailed it and we have a lang team liaison in mind. |
| 22 | + |
| 23 | +[project proposal]: https://lang-team.rust-lang.org/proposing_a_project.html |
| 24 | + |
| 25 | +### Wait, what is a project proposal? |
| 26 | + |
| 27 | +I'm so glad you asked! The lang team is experimenting with a new |
| 28 | +process for extending the language. Instead of starting out by writing |
| 29 | +an RFC, the idea is to start with a **[project proposal]**. This is a |
| 30 | +lightweight description that you do by [opening an issue] on the |
| 31 | +[lang-team repository] using the "Project proposal" template. That |
| 32 | +will create an issue and a corresponding stream on Zulip. |
| 33 | + |
| 34 | +[lang-team repository]: https://github.com/rust-lang/lang-team/ |
| 35 | +[opening an issue]: https://github.com/rust-lang/lang-team/issues/new/choose |
| 36 | + |
| 37 | +In our [weekly triage meetings], we go over each new project proposal |
| 38 | +and try to provide feedback. Project proposals generally result in one |
| 39 | +of a few possible outcomes: |
| 40 | + |
| 41 | +* **Close**, if we feel like the idea isn't a good fit right now. |
| 42 | +* **Suggest implementing**, if we feel like the idea is simple or obvious enough that an RFC isn't really needed. In that case, folks can just write a PR and we can use the fcp process to approve the PR. |
| 43 | +* **Charter a project group**, if we feel like the idea is good, but we'd like to see the design spelled out. To do this, there has to be some lang-team liaison who wants to help see it through (though that liaison doesn't have to be a member of the team; [serving as a liaison is a good way to get more involved in the lang team][path]). |
| 44 | + |
| 45 | +[weekly triage meetings]: https://lang-team.rust-lang.org/meetings.html |
| 46 | +[path]: https://blog.rust-lang.org/inside-rust/2020/07/09/lang-team-path-to-membership.html |
| 47 | + |
| 48 | +### Chartering a project group |
| 49 | + |
| 50 | +A "project group" is basically just a group of people working together |
| 51 | +completing some idea. Project groups are often pretty small, just 1 or 2 |
| 52 | +people, though they can get significantly larger. |
| 53 | + |
| 54 | +Creating a smaller project group is meant to be lightweight. We |
| 55 | +basically convert the project proposal into a charter that states the |
| 56 | +general goals and create an associated zulip stream where folks can |
| 57 | +chat. Each project also gets a tracking issue that shows up on our |
| 58 | +[lang team project board]. (For larger project groups, we can make a |
| 59 | +dedicated repo and an entry in the [Rust team repo].) |
| 60 | + |
| 61 | +[recent example]: https://github.com/rust-lang/lang-team/tree/master/projects/declarative-macro-repetition-counts |
| 62 | +[Rust team repo]: https://github.com/rust-lang/team |
| 63 | +[lang team project board]: https://github.com/rust-lang/lang-team/projects/2 |
| 64 | + |
| 65 | +In the early stages of an idea, project groups work to draft an |
| 66 | +RFC. This RFC is then taken to the lang-team for feedback. Once the |
| 67 | +lang-team is basically happy on the direction things are going, we'll |
| 68 | +encourage the group to open the RFC on the main RFC repository, where |
| 69 | +it'll get feedback from a broader audience. |
| 70 | + |
| 71 | +Once the RFC is **accepted**, the hope is that project groups stick |
| 72 | +around. If desired, the same folks can try to implement the feature |
| 73 | +(in collaboration with the compiler team) or we can find new people. |
| 74 | +But this way, as those people try to implement, they'll become a part |
| 75 | +of the same group that was designing the feature so that we can |
| 76 | +iterate more readily. The same logic applies to the other aspects of |
| 77 | +shipping a feature, most notably writing documentation. |
| 78 | + |
| 79 | +### Tracking projects: the lang team project board |
| 80 | + |
| 81 | +I mentioned the [lang team project board] off-hand in the previous |
| 82 | +paragraph. This is our attempt to track the ongoing efforts. It breaks |
| 83 | +down the various projects into stages, with the things that are closest |
| 84 | +to shipping coming first: |
| 85 | + |
| 86 | +* **Stabilization** -- projects that we are ready to stabilize, or in |
| 87 | + the process of stabilizing. |
| 88 | +* **Evaluation** -- projects that are fully implemented but where we are |
| 89 | + seeking feedback on how well the design works. |
| 90 | +* **Implementation** -- projects that are currently working on implementation |
| 91 | + (and sometimes concurrent design iteration). |
| 92 | +* **Pending RFC** -- projects with an RFC that is pending public comment |
| 93 | +* **Design** -- projects actively iterating towards an RFC |
| 94 | +* **Shortlisted** -- project ideas that we might want to take up once we |
| 95 | + find a suitable liaison or people have enough bandwidth |
| 96 | + |
| 97 | +### Ways to get involved |
| 98 | + |
| 99 | +If you like, you are welcome to attend backlog bonanza meetings. They |
| 100 | +are open for anyone and take place during our [design meeting slot] |
| 101 | +most weeks. We haven't setup a very good process for announcing our |
| 102 | +design meeting schedule, though, that's something that we need to get |
| 103 | +better at. |
| 104 | + |
| 105 | +[design meeting]: https://lang-team.rust-lang.org/meetings.html |
| 106 | + |
| 107 | +Alternatively, if you have ideas you'd like to float, please feel free |
| 108 | +to open a [project proposal]. |
0 commit comments