Cómo contribuir 🚀#
¡Te damos la bienvenida! Nos encanta que te estés planteando 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 la visión por ordenador.
Para consultar unas directrices de contribución exhaustivas, visita 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 al que quieras contribuir
- Crea una rama de funcionalidad con un nombre descriptivo
- Haz 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 el Flujo de trabajo de desarrollo para conocer el proceso detallado de las PR.
Directrices de contribución 📋#
Código de conducta 🤝#
Todas las personas colaboradoras deben cumplir nuestro Código de conducta, basado en el Pacto del Colaborador. Esto garantiza un entorno acogedor e inclusivo para todos. El respeto, la amabilidad y la profesionalidad son la base de nuestra comunidad.
Acuerdo de licencia del contribuyente (CLA) 📝#
Antes de que podamos fusionar tu PR, debes firmar nuestro CLA. Este acuerdo legal garantiza que las contribuciones se autoricen correctamente 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 firmarlo, escribe un comentario:
I have read the CLA Document and I sign the CLA
El CLA incluye:
- Licencias de derechos de autor y patentes para tus contribuciones
- Derechos de Ultralytics para usar y distribuir tu trabajo
- Declaraciones de que eres titular de los derechos de tus contribuciones
- Exención de garantías
Consulta el documento completo del CLA para conocer todas las condiciones.
Buenas 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 frente a cambios a gran escala
- Simplifica: Busca oportunidades de simplificación
- Ten en cuenta la compatibilidad: Evita romper el código existente
- Usa un formato coherente: Sigue Ruff Formatter
- Añade pruebas: Incluye pruebas para las nuevas funcionalidades
- Actualiza la documentación: Mantén la documentación al día
Estándares de codificación 📐#
- Docstrings: Usa docstrings con el estilo de Google con tipos entre paréntesis
- Longitud de línea: 120 caracteres como máximo
- Imports: Usa
pathliben lugar deos - Pruebas: Todas las PR deben superar las pruebas de CI
- Anotaciones de tipo: Úsalas cuando resulten beneficiosas
Consulta el Flujo de trabajo de desarrollo para conocer todos los estándares de codificación.
Formas de contribuir 🌟#
Contribuciones de código 💻#
- Nuevas funcionalidades y mejoras para los modelos YOLO
- Correcciones de errores y resolución de incidencias
- Optimizaciones de rendimiento para el entrenamiento y la inferencia
- Compatibilidad con formatos de exportación para distintas opciones de despliegue
- Mejoras de compatibilidad con plataformas
Documentación 📚#
- Mejora la documentación existente
- Añade tutoriales y guías para casos de uso específicos
- Corrige errores tipográficos y fallos
- Traduce la documentación a otros idiomas
Pruebas 🧪#
- Escribe pruebas unitarias para las nuevas funcionalidades
- Prueba las nuevas funcionalidades con distintos modelos y tareas
- Informa de las carencias de cobertura de pruebas
- Evaluación comparativa del rendimiento en distintas plataformas
Soporte de la comunidad 💬#
- Responde a preguntas en GitHub Discussions
- Ayuda a los usuarios en Discord
- Revisa las pull requests
- Clasifica las incidencias
Informar de errores 🐞#
Ayúdanos a mejorar informando de errores mediante GitHub Issues:
Requisitos para informar de errores#
- Comprueba las incidencias existentes para evitar duplicados
- Crea un Ejemplo mínimo reproducible (MRE) - Código pequeño y autónomo que reproduce la incidencia
- Describe el entorno: sistema operativo, versión de Python, versiones de las bibliotecas y hardware (CPU/GPU)
- Explica el comportamiento esperado y el real con mensajes de error y trazas
Qué debe tener un buen MRE#
Un ejemplo mínimo reproducible debe:
- Aislar el problema: Elimina el código innecesario
- Usar modelos y conjuntos de datos públicos: p. ej.,
yolo26n.ptycoco8.yaml - Incluir las dependencias: Enuméralas con
yolo checksopip list - Ofrecer una descripción clara: Comportamiento esperado y real
- Tener el formato adecuado: Usa bloques de código con tres comillas invertidas
- Ser comprobable: Otras personas deben poder ejecutarlo sin modificaciones
Consulta la guía completa de MRE para obtener instrucciones detalladas.
Revisión de pull requests 👀#
Revisar PR es una contribución valiosa:
- Comprueba las pruebas unitarias: Verifica las pruebas de las nuevas funcionalidades
- Revisa la documentación: Asegúrate de que la documentación esté actualizada
- Evalúa el rendimiento: Ten en cuenta el impacto en la velocidad y la memoria
- Verifica las pruebas de CI: Confirma que todas las pruebas superen los controles
- Ofrece comentarios constructivos: Sé específico y útil
- Reconoce el esfuerzo: Da las gracias a las personas colaboradoras
Información sobre la licencia 📜#
Licencia AGPL-3.0#
Ultralytics usa AGPL-3.0 para sus repositorios. Esto fomenta la apertura, la transparencia y la mejora colaborativa.
Uso de YOLO en tu proyecto#
Si usas modelos o código de Ultralytics YOLO en tu proyecto, AGPL-3.0 exige que todo tu trabajo derivado también se publique como código abierto bajo AGPL-3.0.
Por qué es importante cumplir:
- Mantiene el software abierto en beneficio de la comunidad
- Es un requisito legal al usar código AGPL-3.0
- Fomenta la colaboración y la transparencia
Alternativa: Si prefieres no publicar tu proyecto como código abierto, obtén una licencia Enterprise.
Cómo cumplir con AGPL-3.0#
Haz que el código fuente completo esté disponible públicamente bajo AGPL-3.0:
-
Elige el punto de partida:
- Bifurca el repositorio de Ultralytics YOLO
- Usa el repositorio de plantillas de Ultralytics
-
Concede una licencia a tu proyecto:
- Añade el archivo
LICENSEcon el texto completo de AGPL-3.0 - Añade el aviso de licencia al principio de los archivos de código fuente
- Añade el archivo
-
Publica el código fuente, incluidos:
- Aplicación o sistema completo
- Modificaciones del código de Ultralytics
- Scripts de entrenamiento/validación/inferencia
- Pesos del modelo si se han modificado
- Archivos de configuración y conjuntos de datos utilizados
- Código del backend/frontend
- Bibliotecas de terceros modificadas
- Datos de entrenamiento si se pueden redistribuir
-
Documenta claramente:
- Indica la licencia AGPL-3.0 en
README.md - Incluye instrucciones de configuración
- Atribuye Ultralytics YOLO correctamente
- Indica la licencia AGPL-3.0 en
Consulta el repositorio de plantillas de Ultralytics para ver un ejemplo de estructura.
Nuestro equipo de desarrollo 👥#
No dudes en ponerte en contacto con los miembros del equipo para recibir 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 |
| Anthony Evans | antevansultralytics |
| Antonina Poludena | Antonina2111 |
| Craig Johnston | craigjohnston1 |
| Darin Kabashi | darin-k |
| Ed Crook | ed-yolo |
| Esat Kalfaoglu | artest08 |
| Fatih Akyon | fcakyon |
| Francesco Mattioli | ambitious-octopus |
| Giovanni Dal Zillio | ggg-dz-ultralytics |
| Glenn Jocher | glenn-jocher |
| Hannah Streif | HannahStreif |
| Irene Calatrava | icalatrava |
| Jake Qian | fengqianjake |
| Javier Chulvi | JaviChulvi |
| Jianing Qi (Jalyn) | jianing-Jalyn |
| Jin Xu | laodouya |
| Jing Qiu | Laughing-q |
| Joey Cherisea | Cherisea |
| Joey Tjon | NoCodeJoey |
| Kasim Acikbas | kayselmecnun |
| Kristian Sommer | sokrisba |
| Lakshantha Dissanayake | lakshanthad |
| Leo Samsinger | lsamsinger |
| Marius Keiser | Skillnoob |
| Matt Bristow | matt-ultralytics |
| Maxim Sokolov | somal |
| Mengyu (Mason) Liu | lmycross |
| Miles Deans | miles-deans-ultralytics |
| Mohammed Yasin | Y-T-G |
| Muhammad Rizwan Munawar | RizwanMunawar |
| Murat Raimbekov | raimbekovm |
| 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 |
| Tianshu Li | tianshu-Li715 |
| Yogendra Singh | yogendrasinghx |
| Zinnia Pourdad | zinnialp |
| Zuzana Kontrikova | zkontri |
Obtén asistencia 💬#
¿Tienes preguntas o necesitas ayuda?
- Abre una incidencia en GitHub
- Únete a las debates de GitHub
- Conecta en Discord
- Consulta la documentación
- Visita el Centro de ayuda
- Consulta el blog de Ultralytics para ver tutoriales y guías
- Explora las soluciones para aplicaciones específicas de cada 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 dinámica de innovación y colaboración.
Nos entusiasma ver cómo tus ideas cobran vida y agradecemos tu compromiso con el avance de la tecnología de detección de objetos. ¡Sigamos creciendo e innovando juntos! 🚀🌟
Recursos 📚#
- Guía oficial para colaboradores - Directrices completas para contribuir
- Flujo de trabajo de desarrollo - Proceso de PR y estándares de código
- CI/Testing - Pruebas y comprobaciones de calidad
- Flujo de trabajo de documentación - Redacción de documentación
- Código de conducta - Normas de la comunidad
- Documento CLA - Acuerdo de licencia de contribución
- Guía de MRE - Buenas prácticas para informar de errores
- Blog de Ultralytics - Tutoriales y casos prácticos
- Eventos de la comunidad - Seminarios web y conferencias
- Historias de clientes - Aplicaciones en el mundo real
