Link to this sectionHow 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.
For comprehensive contribution guidelines, also see the Official Ultralytics Contributing Guide in our main documentation.
Link to this sectionWatch: Contributing to Ultralytics#
Link to this sectionQuick 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.
Link to this sectionContributing Guidelines 📋#
Link to this sectionCode 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.
Link to this sectionContributor 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:
I have read the CLA Document and I sign the CLA
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.
Link to this sectionBest 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
Link to this sectionCoding 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.
Link to this sectionWays to Contribute 🌟#
Link to this sectionCode 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
Link to this sectionDocumentation 📚#
- Improve existing documentation
- Add tutorials and guides for specific use cases
- Fix typos and errors
- Translate documentation to other languages
Link to this sectionTesting 🧪#
- Write unit tests for new functionality
- Test new features across different models and tasks
- Report test coverage gaps
- Performance benchmarking across platforms
Link to this sectionCommunity Support 💬#
- Answer questions in GitHub Discussions
- Help users on Discord
- Review pull requests
- Triage issues
Link to this sectionReporting Bugs 🐞#
Help us improve by reporting bugs via GitHub Issues:
Link to this sectionBug 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
Link to this sectionWhat Makes a Good MRE#
A Minimum Reproducible Example should:
- Isolate the problem: Remove unnecessary code
- Use public models and datasets: e.g.,
yolo26n.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.
Link to this sectionReviewing 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
Link to this sectionLicense Information 📜#
Link to this sectionAGPL-3.0 License#
Ultralytics uses AGPL-3.0 for repositories. This promotes openness, transparency, and collaborative improvement.
Link to this sectionUsing 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.
Link to this sectionHow 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.
Link to this sectionOur Development Team 👥#
Feel free to reach out to team members for guidance:
| Name | GitHub Profile |
|---|---|
| Abi Anderson | UltralyticsAbi |
| Abirami Vina | abirami-vina |
| Alex Wong | UltraAlex118 |
| Alexis Schutzger | picsalex |
| Altaïr Kabunda-Margalet | altair-jpg |
| Anastasiia Khrapal | nastijakh |
| Andrei Banica | banica-ultralytics |
| Antonina Poludena | Antonina2111 |
| Burhan Qaddoumi | Burhan-Q |
| Craig Johnston | craigjohnston1 |
| Craig Maxwell | craig-ships-it |
| Esat Kalfaoglu | artest08 |
| Fatih Akyon | fcakyon |
| Francesco Mattioli | ambitious-octopus |
| Giovanni Dal Zillio | ggg-dz-ultralytics |
| Glenn Jocher | glenn-jocher |
| Hannah Streif | HannahStreif |
| Jake Qian | fengqianjake |
| Jianing Qi (Jalyn) | jianing-Jalyn |
| Jin Xu | laodouya |
| Jing Qiu | Laughing-q |
| Joey Tjon | NoCodeJoey |
| Kasim Acikbas | kayselmecnun |
| Kirill Verbitsky | Kverbitski |
| Kristian Sommer | sokrisba |
| Lakshantha Dissanayake | lakshanthad |
| Leo Samsinger | lsamsinger |
| Marius Keiser | Skillnoob |
| Matt Bristow | matt-ultralytics |
| Mengyu (Mason) Liu | lmycross |
| Miles Deans | miles-deans-ultralytics |
| Mohammed Yasin | Y-T-G |
| Muhammad Rizwan Munawar | RizwanMunawar |
| Mykola Boiko | mykolaxboiko |
| Nicolai Nielsen | niconielsen32 |
| Nuvola Ladi | NLadi |
| Olivia Wang | ziyue-olivia |
| Onuralp Sezer | onuralpszr |
| Pablo Karnbaum | pablokarnbaum |
| Paula Derrenger | pderrenger |
| Prateek Bhatnagar | prateek-ultralytics |
| Rick Hou | Bovey0809 |
| Sergiu Waxmann | sergiuwaxmann |
| Shuai (Louis) Lyu | ShuaiLYU |
| Thomas Chuang | chuang091 |
| Yogendra Singh | yogendrasinghx |
| Tigran Hakobyan | t-hakobyan |
| Zinnia Pourdad | zinnialp |
| Zuzana Kontrikova | zkontri |
Link to this sectionGet 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
Link to this sectionThank 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! 🚀🌟
Link to this sectionResources 📚#
- 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
