Skip to content

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.

Ultralytics open-source contributors

Watch: Contributing to Ultralytics

Quick Start Guide ๐ŸŽฏ

Ready to contribute? Follow these steps:

  1. Read our Code of Conduct - Respect, kindness, and professionalism
  2. Fork the repository you want to contribute to
  3. Create a feature branch with descriptive name
  4. Make your changes following coding standards
  5. Write tests for new functionality
  6. Submit a pull request with clear description
  7. Sign the CLA by commenting in your PR
  8. 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:

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.

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 pathlib instead of os
  • Testing: All PRs must pass CI tests
  • Type hints: Use where beneficial

See Development Workflow for complete coding standards.

Ways to Contribute ๐ŸŒŸ

Code Contributions ๐Ÿ’ป

Documentation ๐Ÿ“š

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 ๐Ÿ’ฌ

Reporting Bugs ๐Ÿž

Help us improve by reporting bugs via GitHub Issues:

Bug Report Requirements

  1. Check existing issues to avoid duplicates
  2. Create Minimum Reproducible Example (MRE) - Small, self-contained code that reproduces the issue
  3. Describe environment: OS, Python version, library versions, hardware (CPU/GPU)
  4. 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.pt and coco8.yaml
  • Include dependencies: List with yolo checks or pip 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:

  1. Choose starting point:

  2. License your project:

    • Add LICENSE file with full AGPL-3.0 text
    • Add license notice at top of source files
  3. 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
  4. Document clearly:

    • State AGPL-3.0 license in README.md
    • Include setup instructions
    • Attribute Ultralytics YOLO appropriately

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?

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 ๐Ÿ“š



๐Ÿ“… Created 1 month ago โœ๏ธ Updated 17 days ago