|
2 | 2 |
|
3 | 3 | This page describes ways to help or contribute to Phobos and lists the contributing guidelines that are used in the project.
|
4 | 4 |
|
5 |
| -## Guidelines for contributors |
| 5 | +## Project guidelines and policies |
| 6 | + |
| 7 | +### Phobos maintenance crew structure |
| 8 | + |
| 9 | +Due to the size of the project and varying complexity of the codebase, we have established a maintenance crew structure to help with the project's development and maintenance. The structure is as follows: |
| 10 | + |
| 11 | +- **Leads** (or `T3` maintainers) - primary decision makers, define where the project is headed and have the final say in case of disputes. They are responsible for the project's vision and direction, and are the main point of contact for the community. |
| 12 | +- **`T2` maintainers** - assigned to more complex PRs, can make releases. |
| 13 | +- **`T1` maintainers** - assigned to less complex PRs. |
| 14 | +- **Triages** - help triage/label/assign PRs, issues, discussions, help with communication with the community. |
| 15 | + |
| 16 | +Those roles are assigned based on the complexity of the PRs and the experience of the contributors. The roles are not fixed and can change based on the contributor's experience and the complexity of the PRs they are working on. Also only the commonly occured roles are established in the list, in case of need - individual permissions can be assigned to contributors by leads (for example, to help with documentation translations). |
| 17 | + |
| 18 | +### Types of contributions |
| 19 | + |
| 20 | +To distribute the workload and make the project more manageable, we have established several commonly occuring types of contributions that can be made to the project. These types are as follows: |
| 21 | + |
| 22 | +- Phobos bugfixes, including reconnection error (desync), crash (fatal error) fixes, and documentation fixes |
| 23 | + - `T1` complexity by default |
| 24 | +- Vanilla bugfixes |
| 25 | + - `T1` complexity by default |
| 26 | +- Unhardcodings/customizations - contributions that only make something customizable through the INI or other way (by the modder usually), without adding too much code to handle the customization |
| 27 | + - `T1` complexity by default |
| 28 | +- New features |
| 29 | + - Extensions of existing systems - add logic to existing systems, doesn't warrant it's own entity or type classes generally, but may introduce new hooks |
| 30 | + - Examples: feedback weapon logic, superweapon launch warhead logic, a new type of trajectory that uses existing custom trajectory framework, etc. |
| 31 | + - `T1` or `T2` complexity by default, depending on judgement of the one who assigns the PR |
| 32 | + - New systems - generally with their own classes that don't extend game classes/logics (or have such amount of code that should be separated into separate classes) |
| 33 | + - Examples: custom trajectories framework, interceptor logic, shield logic, etc. |
| 34 | + - `T2` complexity by default |
| 35 | +- Contributions to project infrastructure - changes to the project's build system, CI, documentation, etc. |
| 36 | + - `T2` complexity by default |
| 37 | +- Project policy changes - changes to the project's guidelines, contributing guidelines, etc. |
| 38 | + - `T3` complexity by default (has to be reviewed by leads) |
| 39 | + |
| 40 | +```{hint} |
| 41 | +Modders are highly encouraged to submit feedback on reusability of added features (preferably most important takeaways should be tracked in pull requests, discussions and issues) in order to not bloat the project with one-off features. |
| 42 | +``` |
| 43 | + |
| 44 | +The list is not exhaustive, you are welcome to propose/submit changes to it (or to any project policies in order to improve how the project is maintained). |
| 45 | + |
| 46 | +In absence of a fitting category - a lead should review it. |
| 47 | + |
| 48 | +What can make any PR more controversial and requiring a higher level maintainer's assignment: |
| 49 | +- Modifying/breaking previous (or vanilla) behavior |
| 50 | +- Requiring migration |
| 51 | +- Mixing contribution types |
| 52 | +- Current level of maintainers not being sure about whether they can judge this PR |
6 | 53 |
|
7 | 54 | ### Project structure
|
8 | 55 |
|
@@ -194,7 +241,7 @@ When you clone Phobos recursively - you also clone YRpp as a submodule. Basicall
|
194 | 241 |
|
195 | 242 | The suggested workflow is as follows:
|
196 | 243 | 1. In your IDE of choice rename fields and functions using symbol renaming feature (`Rename...` feature in Visual Studio (regular or Code), `[F2]` by default), then you will have two "levels" of changes displayed in your Git client:
|
197 |
| - - for Phobos repository - changes in the Phobos code (as regular changes) and changes to YRpp (as one submodule change) |
| 244 | + - for Phobos repository - changes in the Phobos code (as regular changes) and changes to YRpp (as one submodule change). |
198 | 245 | - for YRpp repository - changes to the field names and function names in YRpp as regular changes.
|
199 | 246 | 2. Create a branch in YRpp repository (create a fork of it if you didn't yet), commit and push the changes and submit it as a pull request. After pushing it you have two options in Phobos repository:
|
200 | 247 | - wait until it's accepted, then checkout YRpp at the newest commit, then commit and push - this will save you having to commit and push multiple times, but you won't be able to get a nightly build for people to test;
|
|
0 commit comments