Skip to content

Commit f412866

Browse files
committed
Initial commit
1 parent 90e30c8 commit f412866

File tree

2 files changed

+125
-0
lines changed

2 files changed

+125
-0
lines changed

0000-template-en.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
- Proposal date: (in the format of YYYY-MM-DD)
2+
- Affected version: (e.g. 1.2.0.X)
3+
- Related Issues: (if any)
4+
5+
## [Mandatory] Overview
6+
7+
Briefly describe the feature.
8+
9+
## [Mandatory] Motivation
10+
11+
Why do we need to make this change? What scenarios does it generally address? What will be the result of this change?
12+
13+
## [Mandatory] API specifications and use cases
14+
15+
If the proposal adds or modifies an API, please specify the API specifications in the following format and provide a basic code example.
16+
17+
#### Interface Definition
18+
19+
##### Parameters:
20+
21+
| Parameter Name | Type | Mandatory | Description |
22+
| -------------- | ---- | --------- | ----------- |
23+
| | | | |
24+
25+
For more API specifications, please refer to [Interface](https://doc.quickapp.cn/features/).
26+
27+
##### Code Example
28+
29+
*Show a simple code snippet of API usage*
30+
31+
## [Mandatory] Will the proposer implement the feature themselves?
32+
33+
*Yes: The proposer is willing to implement the feature themselves after the proposal is approved;*
34+
35+
*No: After the proposal is approved, other developers in the community will need to help implement it;*
36+
37+
## Detailed Design
38+
39+
Optional. Please explain to someone familiar with the implementation of hapjs how to implement this feature in hapjs or what steps are required to implement this feature.
40+
41+
## Defects
42+
43+
Can we not implement this feature? Please consider:
44+
45+
- The investment required to implement this feature, including the complexity of the code, the increase in code size, and the manpower required to implement the feature.
46+
- Whether this feature does not need to be provided by hapjs and developers using hapjs can even implement it better at the application layer.
47+
- The impact on the established development habits of hapjs.
48+
- The impact on the published versions and existing features, as well as the cost of user migration.
49+
- The impact on other RFC proposals that have not yet been implemented.
50+
51+
## Alternative Choices
52+
53+
Are there other options to implement this feature?
54+
55+
## Adaptation Strategy
56+
57+
If we implement this proposal, is there any way to help developers adapt to this change better?

README-en.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# hapjs RFC
2+
3+
Most code changes for feature updates and bug fixes can follow the normal GitHub Flow process and be completed by submitting a pull request and undergoing code review. However, some updates may cause fundamental changes to the system architecture and APIs - for these types of updates, we need to design a process to ensure consensus between the hapjs team and the community.
4+
5+
RFC (Request for Comments) is a process mechanism designed to ensure that significant feature updates and architectural changes can be smoothly advanced.
6+
7+
## Which types of changes require the RFC process
8+
9+
As mentioned earlier, any change that causes changes to the system architecture or APIs or causes changes to the overall code structure requires the RFC process, for example:
10+
11+
- Adding a package that needs to be installed by developers
12+
- Modifying API parameters or deleting APIs
13+
- Changing the scheme for hapjs's established development practices
14+
- Any changes that render published versions unusable
15+
16+
The following types of changes do not require the RFC process:
17+
18+
- Bug fixes
19+
- Feature iterations that do not affect the use of published versions
20+
- Adding or deleting warnings
21+
- Internal architecture adjustments or code refactoring
22+
- Performance improvements or compatibility improvements
23+
24+
If a developer submits a pull request that should go through the RFC process, the hapjs team will close the pull request and ask the developer who submitted the pull request to execute the RFC process in the RFC repository.
25+
26+
## Why do we need the RFC process?
27+
28+
Cumbersome processes are undoubtedly harmful to development and iteration efficiency, but for the following reasons, let us introduce the RFC mechanism even if we are willing to reduce iteration efficiency:
29+
30+
1. Stability. The existing RFC process can minimize the impact of each iteration on old users as much as possible. The RFC process is also tied to a certain extent with version releases to ensure that hapjs iterations comply with semantic versioning specifications as much as possible.
31+
2. Openness and transparency. We hope that hapjs iterations are as open, public, and transparent as possible, and that everyone can participate in the RFC discussion and influence the next version of hapjs. At the same time, we also hope to increase the participation of the hapjs community through this and let more people participate in the core construction of hapjs.
32+
3. Code quality. The existing RFC process requires a design document before implementation, which is very helpful for specific code implementation.
33+
4. Design tracking. We hope that every RFC document and the PR behind it can reflect the thinking and compromise behind adding, canceling, or modifying a feature, which is very important for the long-term development of hapjs and developers who want to delve into hapjs.
34+
35+
## RFC process mechanism
36+
37+
In short, if the RFC change needs to be released in future hapjs versions, the RFC proposal document needs to be merged in the RFC repository first.
38+
39+
- Fork hapjs RFC repository: #TODO;
40+
- Copy `0000-template.md` to `rfcs/0000-my-feature.md` (`my-feature` needs to be changed to a word that can describe the RFC, and `0000` is the RFC number, which does not need to be changed for now);
41+
- Fill in the RFC proposal according to the template in active/0000-my-feature: The RFC needs to describe the motivation and reasons clearly, show specific cases and design details, and the possible problems. The RFC proposal enters the `Pending` stage;
42+
- Submit a pull request to hapjs RFC repository. At this stage, hapjs team and the community will discuss the RFC proposal together;
43+
- When the RFC proposal reaches consensus in the community, the RFC proposal enters the `Active` stage;
44+
- The code implementation of the RFC proposal is merged into the hapjs main repository, and the RFC proposal enters the `Landed` stage. The RFC proposal is also merged into the RFC repository;
45+
- Finally, the hapjs team will decide which version to release the RFC proposal changes.
46+
47+
## RFC proposals in the `Pending` stage
48+
49+
When an RFC proposal is submitted as a pull request:
50+
51+
- The RFC proposal will be discussed by the hapjs team and the community together, and the details and conclusions finally obtained may not be consistent with the initial RFC proposal;
52+
- The RFC proposal may be rejected due to failure to reach consensus, and at least one member of the hapjs team will give the reason for rejection;
53+
- When the RFC proposal reaches consensus in the community, it enters the `Active` stage, and the hapjs team or the community can begin to implement the proposal's code;
54+
- The RFC proposal may fail to reach consensus due to no discussion, and the hapjs team can decide whether to accept the proposal based on the actual situation.
55+
56+
## RFC proposals in the `Active` stage
57+
58+
When an RFC proposal reaches consensus in the community and enters the `Active` stage, it does not mean that the changes proposed in the RFC proposal are set in stone, and the code implementation of the RFC proposal may not be merged into the hapjs main repository. However, when the RFC proposal enters the `Active` stage, it does mean that the hapjs team and the community recognize the changes proposed in the RFC proposal and believe that this is something that should be implemented in the future.
59+
60+
That is to say, when an RFC proposal enters the `Active` stage, it does not mean that this change has been assigned a priority, and the specific release time also needs to be determined after the code implementation.
61+
62+
## Implementation of RFC proposals
63+
64+
The author of the RFC proposal document is not obligated to implement the RFC proposal code. Of course, if the author of the RFC proposal (or any developer) is willing to implement the code after the RFC proposal document is accepted, this is also very welcome.
65+
66+
Accepted RFC proposals need to include a pull request link in the hapjs main repository (even if the PR is still being drafted or incomplete), and the author of the RFC proposal and the hapjs team need to urge the RFC implementation PR to move in the direction described in the RFC proposal document.
67+
68+
The hapjs RFC process mechanism is inspired by Taro RFC, Rust RFC Process, React RFC Process, and Vue RFC Process.

0 commit comments

Comments
 (0)