Skip to content
This repository was archived by the owner on Oct 31, 2025. It is now read-only.

Commit 68ff38e

Browse files
authored
Document MCP process and add issue template (#80)
1 parent 0710f9d commit 68ff38e

3 files changed

Lines changed: 77 additions & 14 deletions

File tree

.github/ISSUE_TEMPLATE/mcp.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
name: Major change proposal (MCP)
3+
about: Propose a major change to the project.
4+
title: "(My major change proposal)"
5+
labels: "mcp: proposed"
6+
---
7+
8+
<!--
9+
Thank you for your interest in proposing a new feature for the `rust-gpu`
10+
project. Please try to provide a short high level overview of what you would
11+
like you to add. Also be sure to check the existing and closed MCPs to see
12+
if it's already been proposed before posting.
13+
14+
Existing Proposals: https://github.com/EmbarkStudios/rust-gpu/issues?q=is%3Aopen+is%3Aissue+label%3A%22mcp%3A+proposed%22
15+
Closed Proposals: https://github.com/EmbarkStudios/rust-gpu/issues?q=is%3Aclosed+is%3Aissue+label%3A%22mcp%3A+proposed%22
16+
17+
-->
18+
19+
# Proposal
20+

.github/workflows/ISSUE_TEMPLATE/bug_report.md

Whitespace-only changes.

CONTRIBUTING.md

Lines changed: 57 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,23 @@ Feature requests will be tagged as `enhancement` and their status will be update
1818

1919
### Bugs
2020

21-
When reporting a bug or unexpected behaviour in a project, make sure your issue descibes steps to reproduce the behaviour, including the platform you were using, what steps you took, and any error messages.
21+
When reporting a bug or unexpected behaviour in a project, make sure your issue describes steps to reproduce the behaviour, including the platform you were using, what steps you took, and any error messages.
2222

2323
Reproducible bugs will be tagged as `bug` and their status will be updated in the comments of the issue.
2424

2525
### Wontfix
2626

2727
Issues will be closed and tagged as `wontfix` if we decide that we do not wish to implement it, usually due to being misaligned with the project vision or out of scope. We will comment on the issue with more detailed reasoning.
2828

29+
### Labels
30+
The labels for this repository are divided into the following categories;
31+
32+
- **`c:` Crate** Issues specific a single crate in the repository.
33+
- **`g:` GPU** Issues specific a GPU vendor.
34+
- **`p:` Platform** Issues specific a single operating system or platform.
35+
- **`s:` Status** The current status of a PR or issue.
36+
- **`t:` Type** The general type of the issue. (E.g. `t: bug` for bugs.)
37+
2938
## Contribution Workflow
3039

3140
### Open Issues
@@ -34,31 +43,65 @@ If you're ready to contribute, start by looking at our open issues tagged as [`h
3443

3544
You can comment on the issue to let others know you're interested in working on it or to ask questions.
3645

37-
### Making Changes
46+
### Major Change Process
47+
Most bug fixes can be implemented directly by opening a PR, however for larger design decisions and major changes to the compiler's architecture, this repository uses a two stage "Major Change Proposal" and "Request For Comments" process. If you're unsure about what's required for a specific change you should always start with [**opening an issue**][open-issue] or asking the team over on the `#rust-gpu` channel in the [Embark Discord][dis].
3848

39-
1. Fork the repository.
49+
[dis]: https://discord.gg/8TW9nfF
50+
[open-issue]: https://github.com/EmbarkStudios/rust-gpu/issues/new
4051

41-
2. Create a new feature branch.
52+
#### Definitions
4253

43-
3. Make your changes. Ensure that there are no build errors by running the project with your changes locally.
54+
##### **Major Change Proposal (MCP)**
55+
A proposal to make a significant internal changes or small public facing changes to the compiler. An MCP is opened as an issue on `rust-gpu` the repository. An MCP typically only requires one member's approval. Though if the change is significantly big enough it may require the full team's sign off or require an RFC.
4456

45-
4. Open a pull request with a name and description of what you did. You can read more about working with pull requests on GitHub [here](https://help.github.com/en/articles/creating-a-pull-request-from-a-fork).
57+
An MCP should generally be a short (1-2 paragraphs) high level overview of the change you would want to make, the motivation behind the change, and potential solutions. There is a [major change issue template][mcp-template] you can use for convenience.
4658

47-
5. A maintainer will review your pull request and may ask you to make changes.
59+
[mcp-template]: https://github.com/rust-lang/rust/issues/new?labels=mcp%3A%20proposed&template=mcp.md
4860

49-
## Code Guidelines
61+
Examples of what would require an MCP:
5062

51-
### Rust
63+
- Changing the compiler architecture.
64+
- Adding support for an existing Rust language or feature.
65+
- Small additions (e.g. new methods) to `spirv-std` types.
66+
- Proposing an RFC.
5267

53-
You can read about our standards and recommendations for working with Rust [here](https://github.com/EmbarkStudios/rust-ecosystem/blob/master/guidelines.md).
68+
Examples of what would **not** require an MCP:
69+
70+
- Updating documentation
71+
- Fixing existing bugs
72+
- Performance improvements
73+
74+
##### **Request For Comments (RFC)**
75+
A proposal to make significant public facing changes to the compiler or standard library. RFCs are opened as pull requests to the `rust-gpu` repository. RFCs require full sign off by the team, before being approved or implemented. Check out the [RFC `000-template.md` document][rfc-template] for details on the structure.
76+
77+
[rfc-template]: https://github.com/EmbarkStudios/rust-gpu/blob/main/rfcs/000-template.md
5478

55-
### Python
79+
Examples of what would require an RFC:
5680

57-
We recommend following [PEP8 conventions](https://www.python.org/dev/peps/pep-0008/) when working with Python modules.
81+
- Major additions to `spirv-std`, such as new APIs, or breaking changes to existing ones.
5882

59-
### JavaScript
83+
#### Life-cycle
6084

61-
We follow the [AirBnB JavaScript style guide](https://github.com/airbnb/javascript). You can find the ESLint configuration in relevant repositories.
85+
1. You file a [major change proposal][mcp-template] outlining the changes and the motivation for it.
86+
2. A member of the team will review the proposal and tag it with the appropiate label.
87+
2.1. `mcp: accepted` means that the MCP has been accepted and is ready for a pull request implementing it.
88+
2.2. `mcp: rfc needed` means that the MCP has been accepted as something the team would like but needs a full RFC before the implementation.
89+
2.3 Closing an issue means that the MCP has rejected.
90+
3. If the proposal has been accepted then the implementation can begin.
91+
92+
### Pull Request Process
93+
94+
1. Fork the repository.
95+
2. Create a new feature branch.
96+
3. Make your changes. Ensure that there are no build errors by running the project with your changes locally.
97+
4. Open a pull request with a name and description of what you did. You can read more about working with pull requests on GitHub [here](https://help.github.com/en/articles/creating-a-pull-request-from-a-fork).
98+
5. A maintainer will review your pull request and may ask you to make changes.
99+
100+
## Code Guidelines
101+
102+
### Rust
103+
104+
You can read about our standards and recommendations for working with Rust [here](https://github.com/EmbarkStudios/rust-ecosystem/blob/master/guidelines.md).
62105

63106
## Licensing
64107

0 commit comments

Comments
 (0)