|
| 1 | +## Contributing to YOLOv8 🚀 |
| 2 | + |
| 3 | +We love your input! We want to make contributing to YOLOv8 as easy and transparent as possible, whether it's: |
| 4 | + |
| 5 | +- Reporting a bug |
| 6 | +- Discussing the current state of the code |
| 7 | +- Submitting a fix |
| 8 | +- Proposing a new feature |
| 9 | +- Becoming a maintainer |
| 10 | + |
| 11 | +YOLOv8 works so well due to our combined community effort, and for every small improvement you contribute you will be |
| 12 | +helping push the frontiers of what's possible in AI 😃! |
| 13 | + |
| 14 | +## Submitting a Pull Request (PR) 🛠️ |
| 15 | + |
| 16 | +Submitting a PR is easy! This example shows how to submit a PR for updating `requirements.txt` in 4 steps: |
| 17 | + |
| 18 | +### 1. Select File to Update |
| 19 | + |
| 20 | +Select `requirements.txt` to update by clicking on it in GitHub. |
| 21 | + |
| 22 | +<p align="center"><img width="800" alt="PR_step1" src="https://user-images.githubusercontent.com/26833433/122260847-08be2600-ced4-11eb-828b-8287ace4136c.png"></p> |
| 23 | + |
| 24 | +### 2. Click 'Edit this file' |
| 25 | + |
| 26 | +Button is in top-right corner. |
| 27 | + |
| 28 | +<p align="center"><img width="800" alt="PR_step2" src="https://user-images.githubusercontent.com/26833433/122260844-06f46280-ced4-11eb-9eec-b8a24be519ca.png"></p> |
| 29 | + |
| 30 | +### 3. Make Changes |
| 31 | + |
| 32 | +Change `matplotlib` version from `3.2.2` to `3.3`. |
| 33 | + |
| 34 | +<p align="center"><img width="800" alt="PR_step3" src="https://user-images.githubusercontent.com/26833433/122260853-0a87e980-ced4-11eb-9fd2-3650fb6e0842.png"></p> |
| 35 | + |
| 36 | +### 4. Preview Changes and Submit PR |
| 37 | + |
| 38 | +Click on the **Preview changes** tab to verify your updates. At the bottom of the screen select 'Create a **new branch** |
| 39 | +for this commit', assign your branch a descriptive name such as `fix/matplotlib_version` and click the green **Propose |
| 40 | +changes** button. All done, your PR is now submitted to YOLOv8 for review and approval 😃! |
| 41 | + |
| 42 | +<p align="center"><img width="800" alt="PR_step4" src="https://user-images.githubusercontent.com/26833433/122260856-0b208000-ced4-11eb-8e8e-77b6151cbcc3.png"></p> |
| 43 | + |
| 44 | +### PR recommendations |
| 45 | + |
| 46 | +To allow your work to be integrated as seamlessly as possible, we advise you to: |
| 47 | + |
| 48 | +- ✅ Verify your PR is **up-to-date** with `ultralytics/ultralytics` `main` branch. If your PR is behind you can update |
| 49 | + your code by clicking the 'Update branch' button or by running `git pull` and `git merge main` locally. |
| 50 | + |
| 51 | +<p align="center"><img width="751" alt="Screenshot 2022-08-29 at 22 47 15" src="https://user-images.githubusercontent.com/26833433/187295893-50ed9f44-b2c9-4138-a614-de69bd1753d7.png"></p> |
| 52 | + |
| 53 | +- ✅ Verify all YOLOv8 Continuous Integration (CI) **checks are passing**. |
| 54 | + |
| 55 | +<p align="center"><img width="751" alt="Screenshot 2022-08-29 at 22 47 03" src="https://user-images.githubusercontent.com/26833433/187296922-545c5498-f64a-4d8c-8300-5fa764360da6.png"></p> |
| 56 | + |
| 57 | +- ✅ Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase |
| 58 | + but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_ — Bruce Lee |
| 59 | + |
| 60 | +### Docstrings |
| 61 | + |
| 62 | +Not all functions or classes require docstrings but when they do, we |
| 63 | +follow [google-style docstrings format](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings). |
| 64 | +Here is an example: |
| 65 | + |
| 66 | +```python |
| 67 | +""" |
| 68 | + What the function does. Performs NMS on given detection predictions. |
| 69 | +
|
| 70 | + Args: |
| 71 | + arg1: The description of the 1st argument |
| 72 | + arg2: The description of the 2nd argument |
| 73 | +
|
| 74 | + Returns: |
| 75 | + What the function returns. Empty if nothing is returned. |
| 76 | +
|
| 77 | + Raises: |
| 78 | + Exception Class: When and why this exception can be raised by the function. |
| 79 | +""" |
| 80 | +``` |
| 81 | + |
| 82 | +## Submitting a Bug Report 🐛 |
| 83 | + |
| 84 | +If you spot a problem with YOLOv8 please submit a Bug Report! |
| 85 | + |
| 86 | +For us to start investigating a possible problem we need to be able to reproduce it ourselves first. We've created a few |
| 87 | +short guidelines below to help users provide what we need in order to get started. |
| 88 | + |
| 89 | +When asking a question, people will be better able to provide help if you provide **code** that they can easily |
| 90 | +understand and use to **reproduce** the problem. This is referred to by community members as creating |
| 91 | +a [minimum reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). Your code that reproduces |
| 92 | +the problem should be: |
| 93 | + |
| 94 | +- ✅ **Minimal** – Use as little code as possible that still produces the same problem |
| 95 | +- ✅ **Complete** – Provide **all** parts someone else needs to reproduce your problem in the question itself |
| 96 | +- ✅ **Reproducible** – Test the code you're about to provide to make sure it reproduces the problem |
| 97 | + |
| 98 | +In addition to the above requirements, for [Ultralytics](https://ultralytics.com/) to provide assistance your code |
| 99 | +should be: |
| 100 | + |
| 101 | +- ✅ **Current** – Verify that your code is up-to-date with current |
| 102 | + GitHub [main](https://github.com/ultralytics/ultralytics/tree/main) branch, and if necessary `git pull` or `git clone` |
| 103 | + a new copy to ensure your problem has not already been resolved by previous commits. |
| 104 | +- ✅ **Unmodified** – Your problem must be reproducible without any modifications to the codebase in this |
| 105 | + repository. [Ultralytics](https://ultralytics.com/) does not provide support for custom code ⚠️. |
| 106 | + |
| 107 | +If you believe your problem meets all of the above criteria, please close this issue and raise a new one using the 🐛 |
| 108 | +**Bug Report** [template](https://github.com/ultralytics/ultralytics/issues/new/choose) and providing |
| 109 | +a [minimum reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) to help us better |
| 110 | +understand and diagnose your problem. |
| 111 | + |
| 112 | +## License |
| 113 | + |
| 114 | +By contributing, you agree that your contributions will be licensed under |
| 115 | +the [GPL-3.0 license](https://choosealicense.com/licenses/gpl-3.0/) |
0 commit comments