|
| 1 | +# Contributing Guide |
| 2 | + |
| 3 | +* [Ways to Contribute](#ways-to-contribute) |
| 4 | +* [Development Environment Setup](#development-environment-setup) |
| 5 | +* [Pull Request Lifecycle](#pull-request-lifecycle) |
| 6 | +* [Sign off on Commits](#sign-off-on-commits) |
| 7 | +* [Ask for Help](#ask-for-help) |
| 8 | + |
| 9 | +Welcome! We are so excited that you want to contribute to our project! 💖 |
| 10 | + |
| 11 | +As you get started, you are in the best position to give us feedback on areas of our project that we need help with including: |
| 12 | + |
| 13 | +* Problems found during setting up a new developer environment |
| 14 | +* Gaps in our guides or documentation |
| 15 | +* Bugs in our tools and automation scripts |
| 16 | + |
| 17 | +If anything doesn't make sense, or doesn't work when you try it, please open a bug report and let us know! |
| 18 | + |
| 19 | +## Ways to Contribute |
| 20 | + |
| 21 | +We welcome many different types of contributions including: |
| 22 | + |
| 23 | +* [New features](https://github.com/kitops-ml/pykitops/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) |
| 24 | +* [Bug fixes](https://github.com/kitops-ml/pykitops/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) |
| 25 | +* [Documentation](https://github.com/kitops-ml/pykitops/issues?q=is%3Aopen+is%3Aissue+label%3Adocumentation) |
| 26 | +* [Builds and CI/CD](https://github.com/kitops-ml/pykitops/issues?q=is%3Aopen+is%3Aissue+label%3Abuild) |
| 27 | +* Answering questions on Discord, or the mailing list |
| 28 | +* Communications, social media, blog posts, or other marketing |
| 29 | + |
| 30 | +If you think there's something else you can help with please contact us in the [#general channel of our Discord server](https://discord.gg/Tapeh8agYy) or during our [office hours meeting](https://github.com/jozu-ai/kitops/blob/main/GOVERNANCE.md#-meetings) and let's discuss how we can work together. |
| 31 | + |
| 32 | +## Development Environment Setup |
| 33 | + |
| 34 | +### Prerequisites |
| 35 | + |
| 36 | +* Python: At least the minimum support version of Python. |
| 37 | +* Poetry: Latest version. Installation instructions are available at https://python-poetry.org/docs/#installation. |
| 38 | +* Git: Version control system for cloning the repository and managing code changes. Installation instructions are available at https://git-scm.com/book/en/v2/Getting-Started-Installing-Git. |
| 39 | + |
| 40 | +### Setting up the project |
| 41 | + |
| 42 | +1. Clone the Repository: Clone the PyKitOps source code to your local machine: |
| 43 | + |
| 44 | + ```shell |
| 45 | + git clone https://github.com/kitops-ml/pykitops.git |
| 46 | + cd pykitops |
| 47 | + ``` |
| 48 | + |
| 49 | +1. Install Project Dependencies: Inside the project directory, fetch and install the project's dependencies using the poetry command: |
| 50 | +
|
| 51 | + ```shell |
| 52 | + poetry install --with=dev |
| 53 | + ``` |
| 54 | +
|
| 55 | +1. Run test |
| 56 | +
|
| 57 | + ```shell |
| 58 | + poetry run pytest |
| 59 | + ``` |
| 60 | +
|
| 61 | +1. Run ruff: Execute the built CLI to see all available commands: |
| 62 | +
|
| 63 | + ```shell |
| 64 | + poetry run ruff format |
| 65 | + poetry run ruff check |
| 66 | + ``` |
| 67 | +
|
| 68 | +1. Updating Dependencies: If you add or update dependencies: |
| 69 | +
|
| 70 | + ```shell |
| 71 | + poetry add <dependency> |
| 72 | + ``` |
| 73 | + |
| 74 | + or for development dependencies: |
| 75 | + ```shell |
| 76 | + poetry add --group dev <dependency> |
| 77 | + ``` |
| 78 | +
|
| 79 | +## Reporting Bugs/Feature Requests |
| 80 | +
|
| 81 | +We use the project's GitHub issue tracker to report bugs or suggest features/enhancements. |
| 82 | + |
| 83 | +Before creating an issue, please check [existing open](https://github.com/kitops-ml/pykitops/issuess) or [recently closed](https://github.com/kitops-ml/pykitops/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aclosed%20) issues to make sure somebody else hasn't already |
| 84 | +reported the issue. Please try to include as much information as you can. Details like these are incredibly useful: |
| 85 | +
|
| 86 | +* A series of steps to reproduce |
| 87 | +* The version of our code being used |
| 88 | +* Any modifications you've made relevant to the bug |
| 89 | + |
| 90 | +## Pull Request Lifecycle |
| 91 | + |
| 92 | +Pull requests are often called a "PR". KitOps generally follows the standard [GitHub pull request process](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests). |
| 93 | + |
| 94 | +Before sending us a pull request, please ensure that: |
| 95 | + |
| 96 | +1. You are working against the latest source on the *main* branch. |
| 97 | +2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already. |
| 98 | +3. You open an issue to discuss any significant work - we would hate for your time to be wasted. |
| 99 | +4. PR is merged submitted to merge into *main* branch. |
| 100 | +
|
| 101 | +To send us a pull request, please: |
| 102 | +
|
| 103 | +1. Fork the repository. |
| 104 | +2. Modify the source; please focus on the specific change you are contributing. |
| 105 | +3. Ensure local tests pass. |
| 106 | +4. Commit to your fork using clear commit messages. Don't forget to [sign off on your commits](#sign-off-on-commits)! |
| 107 | +5. Send us a pull request, answering any default questions in the pull request interface. |
| 108 | +6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation. |
| 109 | + |
| 110 | +GitHub provides additional documents on [forking a repository](https://help.github.com/articles/fork-a-repo/) and |
| 111 | +[creating a pull request](https://help.github.com/articles/creating-a-pull-request/). |
| 112 | + |
| 113 | +## Sign off on Commits |
| 114 | + |
| 115 | +Licensing is important to open source projects. It provides some assurances that the software will continue to be available based under the terms that the author(s) desired. We require that contributors sign off on commits submitted to our project's repositories. The [Developer Certificate of Origin (DCO)](https://probot.github.io/apps/dco/) is a way to certify that you wrote and have the right to contribute the code you are submitting to the project. |
| 116 | +
|
| 117 | +You sign-off by adding the following to your commit messages. Your sign-off must match the git user and email associated with the commit. Your commit message should be followed by: |
| 118 | +
|
| 119 | + Signed-off-by: Your Name <[email protected]> |
| 120 | +
|
| 121 | +Git has a `-s` command line option to do this automatically: |
| 122 | +
|
| 123 | + git commit -s -m 'This is my commit message' |
| 124 | +
|
| 125 | +If you forgot to do this and have not yet pushed your changes to the remote |
| 126 | +repository, you can amend your commit with the sign-off by running |
| 127 | +
|
| 128 | + git commit --amend -s |
| 129 | +
|
| 130 | +## Ask for Help |
| 131 | +
|
| 132 | +The best way to reach us with a question when contributing is to ask on: |
| 133 | +
|
| 134 | +* The original github issue |
| 135 | +* Our [Discord server](https://discord.gg/Tapeh8agYy) |
| 136 | +* At our [office hours meeting](https://github.com/jozu-ai/kitops/blob/main/GOVERNANCE.md#-meetings) |
0 commit comments