|
| 1 | + |
| 2 | +## Nvidia Resiliency Extension (NVRx) OSS Contribution Rules |
| 3 | + |
| 4 | +#### Issue Tracking |
| 5 | + |
| 6 | +* All enhancement, bugfix, or change requests must begin with the creation of a [NVRx Issue Request](TBD). |
| 7 | + * The issue request must be reviewed by NVRx engineers and approved prior to code review. |
| 8 | + |
| 9 | + |
| 10 | +#### Coding Guidelines |
| 11 | + |
| 12 | +- All source code contributions must follow the existing conventions in the relevant file, submodule, module, and project when you add new code or when you extend/fix existing functionality. |
| 13 | + |
| 14 | +- Avoid introducing unnecessary complexity into existing code so that maintainability and readability are preserved. |
| 15 | + |
| 16 | +- Try to keep pull requests (PRs) as concise as possible: |
| 17 | + - Avoid committing commented-out code. |
| 18 | + - Wherever possible, each PR should address a single concern. If there are several otherwise-unrelated things that should be fixed to reach a desired endpoint, our recommendation is to open several PRs and indicate the dependencies in the description. The more complex the changes are in a single PR, the more time it will take to review those changes. |
| 19 | + |
| 20 | +- To ensure code consistency and maintainability across the project, please format and lint your code using the following tools before committing any changes: |
| 21 | + - We use black to automatically format Python code. It enforces a consistent style by reformatting code according to a set of rules. |
| 22 | + - To format your code, run: |
| 23 | +``` |
| 24 | +black . |
| 25 | +``` |
| 26 | + - isort is used to sort and format import statements automatically. Ensure that your imports are ordered correctly by running: |
| 27 | +``` |
| 28 | +isort . |
| 29 | +``` |
| 30 | + - ruff is a fast Python linter that helps catch common issues. Please run ruff to check for and fix linting problems: |
| 31 | +``` |
| 32 | +ruff check . |
| 33 | +``` |
| 34 | + |
| 35 | +- Write commit titles using imperative mood and [these rules](https://chris.beams.io/posts/git-commit/), and reference the Issue number corresponding to the PR. Following is the recommended format for commit texts: |
| 36 | +``` |
| 37 | +#<Issue Number> - <Commit Title> |
| 38 | +
|
| 39 | +<Commit Body> |
| 40 | +``` |
| 41 | + |
| 42 | +- Ensure that the build log is clean, meaning no warnings or errors should be present. |
| 43 | + |
| 44 | +- Ensure that all unit tests pass prior to submitting your code. |
| 45 | + |
| 46 | +- All OSS components must contain accompanying documentation (READMEs) describing the functionality, dependencies, and known issues. |
| 47 | + |
| 48 | + - See `README.md` for existing samples and plugins for reference. |
| 49 | + |
| 50 | +- All OSS components must have an accompanying test. |
| 51 | + |
| 52 | + - If introducing a new component, such as a plugin, provide a test sample to verify the functionality. |
| 53 | + |
| 54 | +- Make sure that you can contribute your work to open source (no license and/or patent conflict is introduced by your code). You will need to [`sign`](#signing-your-work) your commit. |
| 55 | + |
| 56 | +- Thanks in advance for your patience as we review your contributions; we do appreciate them! |
| 57 | + |
| 58 | + |
| 59 | +#### Pull Requests |
| 60 | +Developer workflow for code contributions is as follows: |
| 61 | + |
| 62 | +1. Developers must first [fork](https://help.github.com/en/articles/fork-a-repo) the [upstream](TBD) NVRx OSS repository. |
| 63 | + |
| 64 | +2. Git clone the forked repository and push changes to the personal fork. |
| 65 | + |
| 66 | + ```bash |
| 67 | +git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git NVRx |
| 68 | +# Checkout the targeted branch and commit changes |
| 69 | +# Push the commits to a branch on the fork (remote). |
| 70 | +git push -u origin <local-branch>:<remote-branch> |
| 71 | + ``` |
| 72 | + |
| 73 | +3. Once the code changes are staged on the fork and ready for review, a [Pull Request](https://help.github.com/en/articles/about-pull-requests) (PR) can be [requested](https://help.github.com/en/articles/creating-a-pull-request) to merge the changes from a branch of the fork into a selected branch of upstream. |
| 74 | + * Exercise caution when selecting the source and target branches for the PR. |
| 75 | + Note that versioned releases of NVRx OSS are posted to `release/` branches of the upstream repo. |
| 76 | + * Creation of a PR creation kicks off the code review process. |
| 77 | + * Atleast one NVRx engineer will be assigned for the review. |
| 78 | + * While under review, mark your PRs as work-in-progress by prefixing the PR title with [WIP]. |
| 79 | + |
| 80 | +4. Since there is no CI/CD process in place yet, the PR will be accepted and the corresponding issue closed only after adequate testing has been completed, manually, by the developer and/or NVRx engineer reviewing the code. |
| 81 | + |
| 82 | + |
| 83 | +#### Signing Your Work |
| 84 | + |
| 85 | +* We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license. |
| 86 | + |
| 87 | + * Any contribution which contains commits that are not Signed-Off will not be accepted. |
| 88 | + |
| 89 | +* To sign off on a commit you simply use the `--signoff` (or `-s`) option when committing your changes: |
| 90 | + ```bash |
| 91 | + $ git commit -s -m "Add cool feature." |
| 92 | + ``` |
| 93 | + This will append the following to your commit message: |
| 94 | + ``` |
| 95 | + Signed-off-by: Your Name <[email protected]> |
| 96 | + ``` |
| 97 | + |
| 98 | +* Full text of the DCO: |
| 99 | + |
| 100 | + ``` |
| 101 | + Developer Certificate of Origin |
| 102 | + Version 1.1 |
| 103 | + |
| 104 | + Copyright (C) 2004, 2006 The Linux Foundation and its contributors. |
| 105 | + 1 Letterman Drive |
| 106 | + Suite D4700 |
| 107 | + San Francisco, CA, 94129 |
| 108 | + |
| 109 | + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. |
| 110 | + ``` |
| 111 | + |
| 112 | + ``` |
| 113 | + Developer's Certificate of Origin 1.1 |
| 114 | + |
| 115 | + By making a contribution to this project, I certify that: |
| 116 | + |
| 117 | + (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or |
| 118 | + |
| 119 | + (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or |
| 120 | + |
| 121 | + (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. |
| 122 | + |
| 123 | + (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. |
| 124 | + ``` |
0 commit comments