|
 |
fd40ec |
To start with, thank you for taking the time to contribute! ❤️
|
|
 |
fd40ec |
|
|
 |
fd40ec |
## How to contribute to the project?
|
|
 |
fd40ec |
There are a lot of ways with which one can contribute to this project.
|
|
 |
fd40ec |
1. As a user of the project, if one comes across a certain discrepancy or if one wants a certain feature to be implemented, they can open up an issue ticket at https://github.com/CentOS/duffy/issues.
|
|
 |
fd40ec |
2. As a developer of the project, one can help with providing the code that helps fix a certain issue or helps attain a certain new feature by opening up a pull request against the primary branch.
|
|
 |
fd40ec |
3. As a user or developer of the project, one can help with documenting the ins and outs of the project with respect to its usage, development, contribution, maintenance, deployment etc.
|
|
 |
fd40ec |
|
|
 |
fd40ec |
## How to set up the development environment?
|
|
 |
fd40ec |
1. Fork the repository to your own GitHub namespace.
|
|
 |
fd40ec |
2. Clone the forked repository and navigate into the project directory.
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
git clone https://github.com/<namespace>/duffy.git
|
|
 |
fd40ec |
cd duffy
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
3. Set up and activate a virtual environment.
|
|
 |
fd40ec |
* Using native virtual environment
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
python3 -m venv duffyenv
|
|
 |
fd40ec |
source duffyenv/bin/activate
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
Or
|
|
 |
fd40ec |
* Using virtualenv wrapper
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
virtualenv duffyenv
|
|
 |
fd40ec |
source duffyenv/bin/activate
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
Or
|
|
 |
fd40ec |
* Using Poetry virtual environment shell
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
poetry shell
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
4. Install using Poetry
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
poetry install
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
5. Checkout to a new branch with a clear descriptive name.
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
git checkout -b <some-branch-name>
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
6. Open up the project in an IDE or a code-editor to start adding your contributions.
|
|
 |
fd40ec |
7. Test your changes by running the server using
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
duffy -p 8000 -4 -l trace
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
1. Please choose a port number that you have the permissions for and is not already in use.
|
|
 |
fd40ec |
2. Please make use of the variety of log levels in order to better facilitate the debugging process
|
|
 |
fd40ec |
1. `critical` - Exhibit extremely severe error events, which may result in the application's termination
|
|
 |
fd40ec |
2. `error` - Exhibit significant error events that will halt normal programme execution but may still allow the application to execute
|
|
 |
fd40ec |
3. `warning` - Exhibit potentially dangerous circumstances that may be of interest to end users or system administrators and identify potential issues
|
|
 |
fd40ec |
4. `info` - Exhibit informational messages that may be useful to end users and system administrators, as well as the application's progress
|
|
 |
fd40ec |
5. `debug` - Exhibit application developers' usage of relatively detailed debugging
|
|
 |
fd40ec |
6. `trace` - Exhibits all related messages.
|
|
 |
fd40ec |
8. Once done making the changes, be sure to add tests for the code and see if your code changes comply with them by running
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
pytest
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
10. Please commit with a precise commit message and signature.
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
git commit -sm "<some-commit-message-which-actually-makes-sense>"
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
11. Push your local commits to the remote branch of your fork.
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
git push origin <some-branch-name>
|
|
 |
fd40ec |
```
|
|
 |
fd40ec |
|
|
 |
fd40ec |
## How do I contribute in the right way?
|
|
 |
fd40ec |
1. Please follow the following standard for your commit messages,
|
|
 |
fd40ec |
1. Limit the subject line of a commit to 50 characters and the body of a commit to 72 characters.
|
|
 |
fd40ec |
2. Use the imperative sense of a verb in the subject line (eg. Use `Update ...` and not `Updated ...`).
|
|
 |
fd40ec |
3. Capitalize the subject line and do not use periods at the end of the sentence.
|
|
 |
fd40ec |
4. Use the body to justify and describe the changes and start it after leaving a blank line under the subject.
|
|
 |
fd40ec |
5. Be sure to sign your commits before pushing them to the remote branch of your fork.
|
|
 |
fd40ec |
2. For every code addition made to the project,
|
|
 |
fd40ec |
1. Add inline comments to the parts of the code which require additional context and add to the documentation as well.
|
|
 |
fd40ec |
2. Ensure that the code is semantic and the names provided to variables, functions and classes describe their purpose.
|
|
 |
fd40ec |
3. Tests must be added in the same pull request to ensure that a good coverage and great overall code quality.
|
|
 |
fd40ec |
4. If there are parts in the code that do not require testing or cannot be tested, be sure to exclude them in the config.
|
|
 |
fd40ec |
5. Use `black .` to format the code and `isort .` to automatically sort the imports before pushing the changes.
|
|
 |
fd40ec |
|
|
 |
fd40ec |
## Where do I reach out if I wish to discuss the project?
|
|
 |
fd40ec |
The current maintainers of the project are available at the #centos-ci IRC channel of libera.chat. Please feel free to reach out to them. As the team members hail from a various countries across the world, patience in waiting for a reply back is greatly appreciated.
|