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.
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.
Vídeo: Cómo contribuir a Ultralytics
Guía de inicio rápido 🎯
¿Listo para contribuir? Sigue estos pasos:
- Lee nuestro Código de conducta - Respeto, amabilidad y profesionalidad
- Crea 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 tests para las nuevas funcionalidades
- Envía un pull request con una descripción clara
- Firma el CLA comentando en tu PR
- 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
pathliben lugar deos - 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 📚
- Mejora la documentación existente
- Añade tutoriales y guías para casos de uso específicos
- Corrige erratas y errores
- Traduce la documentación a otros idiomas
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 💬
- Responde a preguntas en GitHub Discussions
- Ayuda a los usuarios en Discord
- Revisa pull requests
- Clasifica issues
Informar de errores 🐞
Ayúdanos a mejorar informando de errores mediante GitHub Issues:
Requisitos para informar de un error
- Comprueba si el error ya existe para evitar duplicados
- Crea un Ejemplo reproducible mínimo (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 (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.ptycoco8.yaml - Incluir dependencias: haz una lista con
yolo checksopip 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:
-
Elige un punto de partida:
- Haz un fork del repositorio Ultralytics YOLO
- Usa el repositorio de plantillas de Ultralytics
-
Licencia tu proyecto:
- Añade un archivo
LICENSEcon el texto completo de la AGPL-3.0 - Añade un aviso de licencia en la parte superior de los archivos fuente
- Añade un archivo
-
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
-
Documenta claramente:
- Indica la licencia AGPL-3.0 en el
README.md - Incluye instrucciones de configuración
- Atribuye Ultralytics YOLO adecuadamente
- Indica la licencia AGPL-3.0 en el
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:
| 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 |
| 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 |
Obtén asistencia 💬
¿Tienes preguntas o necesitas ayuda?
- Abre un issue en GitHub
- Únete a GitHub Discussions
- Conecta en Discord
- Consulta la documentación
- Visita el Centro de ayuda
- Explora el Blog de Ultralytics para ver tutoriales y guías
- Explora las Soluciones para aplicaciones específicas del sector
¡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 📚
- Guía oficial de contribución - Directrices completas de contribución
- Flujo de trabajo de desarrollo - Proceso de PR y estándares de código
- CI/Testing - Pruebas y controles de calidad
- Flujo de trabajo de documentación - Redacción de documentos
- Código de conducta - Normas de la comunidad
- Documento de CLA - Acuerdo de licencia de colaborador
- Guía de MRE - Mejores prácticas para informar de errores
- Blog de Ultralytics - Tutoriales y estudios de caso
- Eventos de la comunidad - Seminarios web y conferencias
- Historias de clientes - Aplicaciones del mundo real
