How to Contribute ๐
Welcome! We're thrilled you're considering contributing to Ultralytics open-source projects. Your involvement helps enhance the quality of our repositories and benefits the entire computer vision community.
Complete Guidelines
For comprehensive contribution guidelines, also see the Official Ultralytics Contributing Guide in our main documentation.
Watch: Contributing to Ultralytics
Quick Start Guide ๐ฏ
Ready to contribute? Follow these steps:
- Read our Code of Conduct - Respect, kindness, and professionalism
- Fork the repository you want to contribute to
- Create a feature branch with descriptive name
- Make your changes following coding standards
- Write tests for new functionality
- Submit a pull request with clear description
- Sign the CLA by commenting in your PR
- Respond to feedback from reviewers
See Development Workflow for detailed PR process.
Contributing Guidelines ๐
Code of Conduct ๐ค
All contributors must adhere to our Code of Conduct, which is based on the Contributor Covenant. This ensures a welcoming and inclusive environment for everyone. Respect, kindness, and professionalism are at the heart of our community.
Contributor License Agreement (CLA) ๐
Before we can merge your PR, you must sign our CLA. This legal agreement ensures contributions are properly licensed under AGPL-3.0, protecting both you and the project.
After submitting your PR, the CLA bot will guide you. To sign, comment:
The CLA covers:
- Copyright and patent licenses for your contributions
- Rights for Ultralytics to use and distribute your work
- Representations that you own the rights to your contributions
- Disclaimer of warranties
Review the full CLA document for complete terms.
Best Practices โจ
When contributing code:
- Avoid duplication: Reuse existing code where possible
- Make smaller changes: Focused modifications over large-scale changes
- Simplify: Look for simplification opportunities
- Consider compatibility: Avoid breaking existing code
- Use consistent formatting: Follow Ruff Formatter
- Add tests: Include tests for new features
- Update docs: Keep documentation current
Coding Standards ๐
- Docstrings: Use Google-style docstrings with types in parentheses
- Line width: 120 characters maximum
- Imports: Use
pathlibinstead ofos - Testing: All PRs must pass CI tests
- Type hints: Use where beneficial
See Development Workflow for complete coding standards.
Ways to Contribute ๐
Code Contributions ๐ป
- New features and enhancements for YOLO models
- Bug fixes and issue resolution
- Performance optimizations for training and inference
- Export format support for various deployment options
- Platform compatibility improvements
Documentation ๐
- Improve existing documentation
- Add tutorials and guides for specific use cases
- Fix typos and errors
- Translate documentation to other languages
Testing ๐งช
- Write unit tests for new functionality
- Test new features across different models and tasks
- Report test coverage gaps
- Performance benchmarking across platforms
Community Support ๐ฌ
- Answer questions in GitHub Discussions
- Help users on Discord
- Review pull requests
- Triage issues
Reporting Bugs ๐
Help us improve by reporting bugs via GitHub Issues:
Bug Report Requirements
- Check existing issues to avoid duplicates
- Create Minimum Reproducible Example (MRE) - Small, self-contained code that reproduces the issue
- Describe environment: OS, Python version, library versions, hardware (CPU/GPU)
- Explain expected vs actual behavior with error messages and tracebacks
What Makes a Good MRE
A Minimum Reproducible Example should:
- Isolate the problem: Remove unnecessary code
- Use public models and datasets: e.g.,
yolov8n.ptandcoco8.yaml - Include dependencies: List with
yolo checksorpip list - Provide clear description: Expected vs actual behavior
- Format properly: Use code blocks with triple backticks
- Be testable: Others can run it without modifications
See the complete MRE Guide for detailed instructions.
Reviewing Pull Requests ๐
Reviewing PRs is valuable contribution:
- Check unit tests: Verify tests for new features
- Review documentation: Ensure docs are updated
- Evaluate performance: Consider impact on speed/memory
- Verify CI tests: Confirm all tests pass
- Provide constructive feedback: Be specific and helpful
- Recognize effort: Thank contributors
License Information ๐
AGPL-3.0 License
Ultralytics uses AGPL-3.0 for repositories. This promotes openness, transparency, and collaborative improvement.
Using YOLO in Your Project
If you use Ultralytics YOLO models or code in your project, AGPL-3.0 requires your entire derivative work also be open-sourced under AGPL-3.0.
Why compliance matters:
- Keeps software open for community benefit
- Legal requirement when using AGPL-3.0 code
- Fosters collaboration and transparency
Alternative: If you prefer not to open-source your project, obtain an Enterprise License.
How to Comply with AGPL-3.0
Make complete source code publicly available under AGPL-3.0:
-
Choose starting point:
-
License your project:
- Add
LICENSEfile with full AGPL-3.0 text - Add license notice at top of source files
- Add
-
Publish source code including:
- Complete application/system
- Modifications to Ultralytics code
- Training/validation/inference scripts
- Model weights if modified
- Configuration files and datasets used
- Backend/frontend code
- Third-party libraries modified
- Training data if redistributable
-
Document clearly:
- State AGPL-3.0 license in
README.md - Include setup instructions
- Attribute Ultralytics YOLO appropriately
- State AGPL-3.0 license in
See Ultralytics Template Repository for example structure.
Our Development Team ๐ฅ
Feel free to reach out to team members for guidance:
| Name | GitHub Profile |
|---|---|
| Abrish Sabri | asabri97 |
| Abirami Vina | abirami-vina |
| Alexis Schutzger | picsalex |
| Burhan Qaddoumi | Burhan-Q |
| Fatih Akyon | fcakyon |
| Francesco Mattioli | ambitious-octopus |
| Giovanni Dal Zillio | ggg-dz-ultralytics |
| Glenn Jocher | glenn-jocher |
| Hannah Streif | HannahStreif |
| Jake Qian | fengqianjake |
| Jing Qiu | Laughing-q |
| Joey Tjon | NoCodeJoey |
| Jordan Cooper | JCoops1 |
| Kasim Acikbas | kayselmecnun |
| Kirill Viarbitski | Kverbitski |
| Kiryl Oblikau | munknex |
| Kristian Sommer | sokrisba |
| Lakshantha Dissanayake | lakshanthad |
| Marius Keiser | Skillnoob |
| Mohammed Yasin | Y-T-G |
| Muhammad Rizwan Munawar | RizwanMunawar |
| Mykola Boiko | mykolaxboiko |
| Nicolai Nielsen | niconielsen32 |
| Nuvola Ladi | NLadi |
| Onuralp Sezer | onuralpszr |
| Pablo Karnbaum | pablokarnbaum |
| Paula Derrenger | pderrenger |
| Prateek Bhatnagar | prateek-ultralytics |
| Rick Hou | Bovey0809 |
| Ryan Leonel Somali | ryanleonels |
| Sergiu Waxmann | sergiuwaxmann |
| Thomas Chuang | chuang091 |
| William Beaven | william-beaven |
| Yogendra Singh | yogendrasinghx |
| Tigran Hakobyan | tthakz |
| Zinnia Pourdad | zinnialp |
| Shuai (Louis) Lyu | ShuaiLYU |
| Abi Anderson | UltralyticsAbi |
| Jin Xu | laodouya |
| Zuzana Kontrikova | zkontri |
| Miles Deans | miles-deans-ultralytics |
| Mengyu (Mason) Liu | lmycross |
Get Support ๐ฌ
Questions or need help?
- Open an issue on GitHub
- Join GitHub Discussions
- Connect on Discord
- Check documentation
- Visit Help Center
- Browse Ultralytics Blog for tutorials and guides
- Explore Solutions for industry-specific applications
Thank You! ๐
Thank you for your interest in contributing to Ultralytics open-source projects. Your participation is essential in shaping the future of our software and building a vibrant community of innovation and collaboration.
We're excited to see your ideas come to life and appreciate your commitment to advancing object detection technology. Together, let's continue to grow and innovate! ๐๐
Resources ๐
- Official Contributing Guide - Complete contribution guidelines
- Development Workflow - PR process and code standards
- CI/Testing - Testing and quality checks
- Documentation Workflow - Writing docs
- Code of Conduct - Community standards
- CLA Document - Contributor License Agreement
- MRE Guide - Bug reporting best practices
- Ultralytics Blog - Tutorials and case studies
- Community Events - Webinars and conferences
- Customer Stories - Real-world applications
