Cómo contribuir 🚀

¡Bienvenido! Nos emociona que consideres contribuir a los proyectos de código abierto de Ultralytics. Tu participación ayuda a mejorar la calidad de nuestros repositorios y beneficia a toda la comunidad de visión artificial.

Directrices completas

Para obtener directrices detalladas sobre cómo contribuir, consulta también la Guía oficial de contribución de Ultralytics en nuestra documentación principal.

Colaboradores de código abierto de Ultralytics

Vídeo: Cómo contribuir a Ultralytics

Guía de inicio rápido 🎯

¿Listo para contribuir? Sigue estos pasos:

  1. Lee nuestro Código de conducta - Respeto, amabilidad y profesionalidad
  2. Crea un fork del repositorio en el que quieras contribuir
  3. Crea una rama de funcionalidades con un nombre descriptivo
  4. Realiza tus cambios siguiendo los estándares de codificación
  5. Escribe tests para las nuevas funcionalidades
  6. Envía un pull request con una descripción clara
  7. Firma el CLA comentando en tu PR
  8. Responde a los comentarios de los revisores

Consulta el Flujo de trabajo de desarrollo para conocer el proceso detallado de PR.

Directrices de contribución 📋

Código de conducta 🤝

Todos los colaboradores deben cumplir nuestro Código de conducta, que se basa en el Contributor Covenant. Esto garantiza un entorno acogedor e inclusivo para todos. El respeto, la amabilidad y la profesionalidad son el núcleo de nuestra comunidad.

Acuerdo de licencia de colaborador (CLA) 📝

Antes de que podamos fusionar tu PR, debes firmar nuestro CLA. Este acuerdo legal garantiza que las contribuciones tengan la licencia adecuada bajo AGPL-3.0, protegiéndote a ti y al proyecto.

Después de enviar tu PR, el bot de CLA te guiará. Para firmar, comenta:

I have read the CLA Document and I sign the CLA

El CLA cubre:

  • Licencias de copyright y patentes para tus contribuciones
  • Derechos de Ultralytics para utilizar y distribuir tu trabajo
  • Declaraciones de que posees los derechos de tus contribuciones
  • Exención de garantías

Revisa el documento CLA completo para ver los términos detallados.

Buenas prácticas ✨

Al contribuir con código:

  • Evita la duplicación: reutiliza código existente siempre que sea posible
  • Haz cambios más pequeños: prioriza las modificaciones específicas frente a los cambios a gran escala
  • Simplifica: busca oportunidades de simplificación
  • Considera la compatibilidad: evita romper el código existente
  • Utiliza un formato coherente: sigue el Ruff Formatter
  • Añade tests: incluye pruebas para las nuevas funcionalidades
  • Actualiza la documentación: mantén la documentación al día

Estándares de codificación 📐

  • Docstrings: utiliza docstrings al estilo Google con los tipos entre paréntesis
  • Ancho de línea: 120 caracteres como máximo
  • Imports: utiliza pathlib en lugar de os
  • Testing: todos los PR deben superar los CI tests
  • Type hints: utilízalos cuando sea beneficioso

Consulta el Flujo de trabajo de desarrollo para ver los estándares de codificación completos.

Formas de contribuir 🌟

Contribuciones de código 💻

  • Nuevas funcionalidades y mejoras para los modelos YOLO
  • Corrección de errores y resolución de problemas
  • Optimizaciones de rendimiento para entrenamiento e inferencia
  • Soporte de formatos de exportación para diversas opciones de despliegue
  • Mejoras en la compatibilidad de plataformas

Documentación 📚

Testing 🧪

  • Escribe tests unitarios para nuevas funcionalidades
  • Prueba nuevas funcionalidades en diferentes modelos y tareas
  • Informa sobre vacíos en la cobertura de los tests
  • Benchmarking de rendimiento en todas las plataformas

Soporte a la comunidad 💬

Informar de errores 🐞

Ayúdanos a mejorar informando de errores mediante GitHub Issues:

Requisitos para informar de un error

  1. Comprueba si el error ya existe para evitar duplicados
  2. Crea un Ejemplo reproducible mínimo (MRE) - Código pequeño y autónomo que reproduzca el problema
  3. Describe el entorno: SO, versión de Python, versiones de librerías, hardware (CPU/GPU)
  4. Explica el comportamiento esperado frente al real con mensajes de error y trazas (tracebacks)

Qué hace que un MRE sea bueno

Un Ejemplo reproducible mínimo debería:

  • Aislar el problema: eliminar el código innecesario
  • Utilizar modelos y datasets públicos: p. ej., yolo26n.pt y coco8.yaml
  • Incluir dependencias: haz una lista con yolo checks o pip list
  • Proporcionar una descripción clara: comportamiento esperado frente al real
  • Formatear correctamente: usa bloques de código con triple comilla invertida
  • Ser ejecutable: otros deben poder ejecutarlo sin modificaciones

Consulta la Guía MRE completa para ver las instrucciones detalladas.

Revisión de pull requests 👀

Revisar PR es una contribución valiosa:

  • Comprueba los tests unitarios: verifica las pruebas para las nuevas funcionalidades
  • Revisa la documentación: asegúrate de que la documentación esté actualizada
  • Evalúa el rendimiento: considera el impacto en la velocidad/memoria
  • Verifica los CI tests: confirma que todos los tests se superen correctamente
  • Proporciona feedback constructivo: sé específico y útil
  • Reconoce el esfuerzo: agradece a los contribuyentes

Información de licencia 📜

Licencia AGPL-3.0

Ultralytics utiliza AGPL-3.0 para sus repositorios. Esto promueve la apertura, la transparencia y la mejora colaborativa.

Uso de YOLO en tu proyecto

Si utilizas modelos o código de Ultralytics YOLO en tu proyecto, AGPL-3.0 requiere que toda tu obra derivada también sea de código abierto bajo la licencia AGPL-3.0.

Por qué es importante el cumplimiento:

  • Mantiene el software abierto para beneficio de la comunidad
  • Es un requisito legal cuando se utiliza código bajo AGPL-3.0
  • Fomenta la colaboración y la transparencia

Alternativa: Si prefieres no abrir el código de tu proyecto, adquiere una Enterprise License.

Cómo cumplir con la AGPL-3.0

Haz que el código fuente completo esté disponible públicamente bajo la AGPL-3.0:

  1. Elige un punto de partida:

  2. Licencia tu proyecto:

  3. Publica el código fuente incluyendo:

    • Aplicación/sistema completo
    • Modificaciones al código de Ultralytics
    • Scripts de entrenamiento/validación/inferencia
    • Pesos del modelo si se han modificado
    • Archivos de configuración y datasets utilizados
    • Código de backend/frontend
    • Bibliotecas de terceros modificadas
    • Datos de entrenamiento si son redistribuibles
  4. Documenta claramente:

    • Indica la licencia AGPL-3.0 en el README.md
    • Incluye instrucciones de configuración
    • Atribuye Ultralytics YOLO adecuadamente

Consulta el repositorio de plantillas de Ultralytics para ver una estructura de ejemplo.

Nuestro equipo de desarrollo 👥

No dudes en contactar con los miembros del equipo para obtener orientación:

NombrePerfil de GitHub
Abi AndersonUltralyticsAbi
Abirami Vinaabirami-vina
Alex WongUltraAlex118
Alexis Schutzgerpicsalex
Altaïr Kabunda-Margaletaltair-jpg
Anastasiia Khrapalnastijakh
Andrei Banicabanica-ultralytics
Antonina PoludenaAntonina2111
Burhan QaddoumiBurhan-Q
Craig Johnstoncraigjohnston1
Craig Maxwellcraig-ships-it
Esat Kalfaogluartest08
Fatih Akyonfcakyon
Francesco Mattioliambitious-octopus
Giovanni Dal Zillioggg-dz-ultralytics
Glenn Jocherglenn-jocher
Hannah StreifHannahStreif
Jake Qianfengqianjake
Jianing Qi (Jalyn)jianing-Jalyn
Jin Xulaodouya
Jing QiuLaughing-q
Joey TjonNoCodeJoey
Kasim Acikbaskayselmecnun
Kirill VerbitskyKverbitski
Kristian Sommersokrisba
Lakshantha Dissanayakelakshanthad
Leo Samsingerlsamsinger
Marius KeiserSkillnoob
Matt Bristowmatt-ultralytics
Mengyu (Mason) Liulmycross
Miles Deansmiles-deans-ultralytics
Mohammed YasinY-T-G
Muhammad Rizwan MunawarRizwanMunawar
Mykola Boikomykolaxboiko
Nicolai Nielsenniconielsen32
Nuvola LadiNLadi
Olivia Wangziyue-olivia
Onuralp Sezeronuralpszr
Pablo Karnbaumpablokarnbaum
Paula Derrengerpderrenger
Prateek Bhatnagarprateek-ultralytics
Rick HouBovey0809
Sergiu Waxmannsergiuwaxmann
Shuai (Louis) LyuShuaiLYU
Thomas Chuangchuang091
Yogendra Singhyogendrasinghx
Tigran Hakobyant-hakobyan
Zinnia Pourdadzinnialp
Zuzana Kontrikovazkontri

Obtén asistencia 💬

¿Tienes preguntas o necesitas ayuda?

¡Gracias! 🎉

Gracias por tu interés en contribuir a los proyectos de código abierto de Ultralytics. Tu participación es esencial para dar forma al futuro de nuestro software y construir una comunidad vibrante de innovación y colaboración.

Estamos emocionados por ver cómo tus ideas cobran vida y agradecemos tu compromiso para avanzar en la tecnología de detección de objetos. ¡Juntos, sigamos creciendo e innovando! 🚀🌟

Recursos 📚