Cómo contribuir 🚀#
¡Bienvenido! Nos encanta que estés considerando 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 computer vision.
Para ver las pautas de contribución completas, consulta también la Official Ultralytics Contributing Guide en nuestra documentación principal.
Ver: Contribuir a Ultralytics#
Guía de inicio rápido 🎯#
¿Listo para contribuir? Sigue estos pasos:
- Lee nuestro Code of Conduct - Respeto, amabilidad y profesionalidad
- Haz un fork del repositorio en el que quieras contribuir
- Crea una rama de funcionalidades con un nombre descriptivo
- Realiza tus cambios siguiendo los estándares de codificación
- Escribe pruebas para la nueva funcionalidad
- Envía una pull request con una descripción clara
- Firma el CLA comentando en tu PR
- Responde a los comentarios de los revisores
Consulta Development Workflow para ver el proceso detallado de PR.
Directrices de contribución 📋#
Código de conducta 🤝#
Todos los colaboradores deben adherirse a nuestro Code of Conduct, basado en el Contributor Covenant. Esto garantiza un entorno acogedor e inclusivo para todos. El respeto, la amabilidad y la profesionalidad son la esencia 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 tanto a ti como al proyecto.
Después de enviar tu PR, el bot del CLA te guiará. Para firmar, comenta:
I have read the CLA Document and I sign the CLA
El CLA cubre:
- Licencias de derechos de autor y patentes para tus contribuciones
- Derechos de Ultralytics para usar y distribuir tu trabajo
- Declaraciones de que posees los derechos de tus contribuciones
- Exención de garantías
Revisa el CLA Document completo para conocer todos los términos.
Mejores prácticas ✨#
Al contribuir con código:
- Evita la duplicación: Reutiliza el código existente siempre que sea posible
- Haz cambios más pequeños: Prioriza modificaciones específicas sobre cambios a gran escala
- Simplifica: Busca oportunidades de simplificación
- Considera la compatibilidad: Evita romper el código existente
- Usa un formato consistente: Sigue Ruff Formatter
- Añade pruebas: Incluye pruebas para nuevas funciones
- Actualiza la documentación: Mantén la documentation al día
Estándares de codificación 📐#
- Docstrings: Usa Google-style docstrings con los tipos entre paréntesis
- Ancho de línea: 120 caracteres máximo
- Imports: Usa
pathliben lugar deos - Pruebas: Todos los PRs deben superar las CI tests
- Type hints: Úsalos cuando sean beneficiosos
Consulta Development Workflow para conocer los estándares de código completos.
Formas de contribuir 🌟#
Contribuciones de código 💻#
- Nuevas funciones y mejoras para YOLO models
- Corrección de errores y resolución de problemas
- Optimizaciones de rendimiento para training e inference
- Compatibilidad con formatos de exportación para varias deployment options
- Mejoras en la compatibilidad de plataformas
Documentación 📚#
- Mejorar la documentation existente
- Añadir tutorials and guides para casos de uso específicos
- Corrige erratas y errores
- Traduce la documentación a otros idiomas
Pruebas 🧪#
- Escribe pruebas unitarias para nuevas funcionalidades
- Probar nuevas funciones en diferentes models y tasks
- Informa sobre lagunas en la cobertura de pruebas
- Benchmarking de rendimiento en distintas plataformas
Soporte comunitario 💬#
- Responder preguntas en GitHub Discussions
- Ayudar a los usuarios en Discord
- Revisa pull requests
- Clasifica issues
Informar de errores 🐞#
Ayúdanos a mejorar informando de errores a través de GitHub Issues:
Requisitos para informar de errores#
- Comprueba las issues existentes para evitar duplicados
- Crea un Minimum Reproducible Example (MRE) - Código pequeño y autónomo que reproduzca el problema
- Describe el entorno: SO, versión de Python, versiones de librerías, hardware (CPU/GPU)
- Explica el comportamiento esperado frente al real con mensajes de error y trazas
Qué hace a un buen MRE#
Un ejemplo mínimo reproducible debería:
- Aislar el problema: Eliminar código innecesario
- Usa modelos y datasets públicos: por ejemplo,
yolo26n.ptycoco8.yaml - Incluye dependencias: Enuméralas con
yolo checksopip list - Proporcionar una descripción clara: Comportamiento esperado frente al real
- Formatear correctamente: Usar bloques de código con triple comilla invertida
- Ser testable: Que otros puedan ejecutarlo sin modificaciones
Consulta la MRE Guide completa para obtener instrucciones detalladas.
Revisar Pull Requests 👀#
Revisar PRs es una contribución valiosa:
- Comprobar pruebas unitarias: Verificar las pruebas para nuevas funcionalidades
- Revisar documentación: Asegurarse de que la documentación esté actualizada
- Evaluar rendimiento: Considerar el impacto en velocidad/memoria
- Verificar pruebas CI: Confirmar que todas las pruebas pasen
- Proporcionar comentarios constructivos: Sé específico y servicial
- Reconocer el esfuerzo: Da las gracias a los colaboradores
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.
Usar YOLO en tu proyecto#
Si utilizas modelos o código de Ultralytics YOLO en tu proyecto, la licencia AGPL-3.0 exige que toda tu obra derivada también sea de código abierto bajo AGPL-3.0.
Por qué es importante el cumplimiento:
- Mantiene el software abierto para beneficio de la comunidad
- Requisito legal al usar código AGPL-3.0
- Fomenta la colaboración y la transparencia
Alternativa: Si prefieres no hacer que tu proyecto sea de código abierto, obtén una Enterprise License.
Cómo cumplir con AGPL-3.0#
Haz que el código fuente completo esté disponible públicamente bajo AGPL-3.0:
-
Elige un punto de partida:
- Haz un fork del Ultralytics YOLO repository
- Usa el Ultralytics template repository
-
Licencia tu proyecto:
- Añade el archivo
LICENSEcon todo el AGPL-3.0 text - Añade el aviso de licencia en la parte superior de los archivos fuente
- Añade el archivo
-
Publica el código fuente incluyendo:
- La aplicación o el sistema completo
- Modificaciones al código de Ultralytics
- Scripts de Training/validation/inference
- Pesos del modelo si han sido modificados
- Archivos de configuración y datasets utilizados
- Código del backend/frontend
- Bibliotecas de terceros modificadas
- Datos de entrenamiento si son redistribuibles
-
Documenta claramente:
- Indica la licencia AGPL-3.0 en
README.md - Incluye instrucciones de instalación
- Atribuye adecuadamente Ultralytics YOLO
- Indica la licencia AGPL-3.0 en
Consulta el Ultralytics Template Repository para ver una estructura de ejemplo.
Nuestro equipo de desarrollo 👥#
No dudes en contactar con los miembros del equipo para obtener orientación:
| Nombre | Perfil de GitHub |
|---|---|
| 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 |
| Craig Johnston | craigjohnston1 |
| Darin Kabashi | darin-k) |
| 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 |
| Javier Chulvi | JaviChulvi |
| Jianing Qi (Jalyn) | jianing-Jalyn |
| Jin Xu | laodouya |
| Jing Qiu | Laughing-q |
| Joey Tjon | NoCodeJoey |
| Joey Cherisea | Cherisea |
| Kasim Acikbas | kayselmecnun |
| 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 |
| 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 |
Obtén ayuda 💬#
¿Tienes preguntas o necesitas ayuda?
- Abre un issue en GitHub
- Únete a GitHub Discussions
- Conéctate en Discord
- Consulta la documentation
- Visita el Help Center
- Explora el Ultralytics Blog para ver tutoriales y guías
- Explora las Solutions para aplicaciones específicas de la industria
¡Gracias! 🎉#
Gracias por tu interés en contribuir a los proyectos de código abierto de Ultralytics. Tu participación es fundamental para dar forma al futuro de nuestro software y construir una comunidad vibrante de innovación y colaboración.
Estamos deseando ver cómo cobran vida tus ideas y agradecemos tu compromiso con el avance de la tecnología de detección de objetos. ¡Sigamos creciendo e innovando juntos! 🚀🌟
Recursos 📚#
- Official Contributing Guide - Pautas de contribución completas
- Development Workflow - Proceso de PR y estándares de código
- CI/Testing - Pruebas y controles de calidad
- Documentation Workflow - Redacción de documentación
- Code of Conduct - Estándares de la comunidad
- CLA Document - Acuerdo de licencia de colaborador
- Guía MRE - Buenas prácticas para el reporte de errores
- Blog de Ultralytics - Tutoriales y casos de estudio
- Eventos de la comunidad - Seminarios web y conferencias
- Casos de clientes - Aplicaciones del mundo real
