Cómo contribuir 🚀#
¡Te damos la bienvenida! Nos alegra mucho que te plantees 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 consultar directrices de contribución completas, echa un vistazo también a la Guía oficial de contribución de Ultralytics en nuestra documentación principal.
Ver: Cómo contribuir a Ultralytics#
Guía de inicio rápido 🎯#
¿Quieres contribuir? Sigue estos pasos:
- Lee nuestro Código de conducta - Respeto, amabilidad y profesionalidad
- Haz un fork del repositorio al que quieras contribuir
- Crea una rama para la funcionalidad con un nombre descriptivo
- Haz los cambios siguiendo las normas de programación
- Escribe pruebas para la nueva funcionalidad
- Envía una solicitud de cambios con una descripción clara
- Firma el CLA dejando un comentario en tu PR
- Responde a los comentarios de quienes revisen el código
Consulta el Flujo de trabajo de desarrollo para ver 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 Pacto del colaborador. Así se garantiza un entorno acogedor e inclusivo para todo el mundo. El respeto, la amabilidad y la profesionalidad son los pilares de nuestra comunidad.
Acuerdo de licencia de colaborador (CLA) 📝#
Antes de poder integrar tu PR, debes firmar nuestro CLA. Este acuerdo legal garantiza que las contribuciones se licencien correctamente bajo AGPL-3.0, lo que os protege tanto a ti como al proyecto.
Después de enviar tu PR, el bot del CLA te guiará. Para firmarlo, 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
Consulta el documento completo del CLA para ver todas las condiciones.
Buenas prácticas ✨#
Al contribuir código:
- Evita las duplicaciones: Reutiliza el código existente siempre que sea posible
- Haz cambios más pequeños: Prioriza modificaciones concretas frente a cambios a gran escala
- Simplifica: Busca oportunidades para simplificar
- 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 al día la documentación
Normas de programación 📐#
- Docstrings: Usa docstrings al estilo de Google con los tipos entre paréntesis
- Longitud de línea: Máximo de 120 caracteres
- Importaciones: Usa
pathliben lugar deos - Pruebas: Todas las PR deben superar las pruebas de CI
- Anotaciones de tipos: Úsalas cuando aporten valor
Consulta el Flujo de trabajo de desarrollo para ver todas las normas de programación.
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 del rendimiento del 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 concretos
- Corrige erratas y errores
- 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 en la cobertura de pruebas
- Evaluación comparativa del rendimiento en distintas plataformas
Ayuda a la comunidad 💬#
- Responde a preguntas en GitHub Discussions
- Ayuda a los usuarios en Discord
- Revisa las solicitudes de cambios
- Clasifica y prioriza las incidencias
Informar de errores 🐞#
Ayúdanos a mejorar comunicando 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 breve y autónomo que reproduce el problema
- 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 los mensajes de error y las trazas de ejecución
Qué caracteriza a 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: por ejemplo,
yolo26n.ptycoco8.yaml - Incluir las dependencias: Enuméralas con
yolo checksopip list - Ofrecer una descripción clara: comportamiento esperado y comportamiento real
- Dar el formato adecuado: Usa bloques de código con tres acentos graves
- Permitir su prueba: Otras personas pueden ejecutarlo sin modificaciones
Consulta la guía completa de MRE para obtener instrucciones detalladas.
Revisión de solicitudes de cambios 👀#
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 se superen
- Ofrece comentarios constructivos: Sé concreto y útil
- Reconoce el esfuerzo: Da las gracias a quienes contribuyen
Información sobre la licencia 📜#
Licencia AGPL-3.0#
Ultralytics utiliza AGPL-3.0 para sus repositorios. Esto fomenta 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, AGPL-3.0 exige que toda tu obra derivada también se publique con la licencia AGPL-3.0.
Por qué es importante cumplirla:
- Mantiene el software abierto para beneficio de la comunidad
- Es un requisito legal cuando se utiliza código con licencia 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#
Pon a disposición del público el código fuente completo con licencia AGPL-3.0:
-
Elige un punto de partida:
- Haz un fork del repositorio de Ultralytics YOLO
- Usa el repositorio de plantillas de Ultralytics
-
Aplica una licencia a tu proyecto:
- Añade el archivo
LICENSEcon el texto completo de la licencia AGPL-3.0 - Añade un aviso de licencia al principio de los archivos de código fuente
- Añade el archivo
-
Publica el código fuente, incluidos:
- La aplicación o el sistema completos
- Las modificaciones del código de Ultralytics
- Entrenamiento/validación/inferencia: los scripts
- Los pesos del modelo, si se han modificado
- Los archivos de configuración y los conjuntos de datos utilizados
- El código del backend y del frontend
- Las bibliotecas de terceros modificadas
- Los datos de entrenamiento, si se pueden redistribuir
-
Documenta claramente:
- Indica la licencia AGPL-3.0 en
README.md - Incluye instrucciones de instalación
- Atribuye correctamente Ultralytics YOLO
- 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 contactar con los miembros del equipo para pedir orientación:
| Nombre | Perfil de GitHub |
|---|---|
| Abi Anderson | UltralyticsAbi |
| Alex Wong | UltraAlex118 |
| Alexis Schutzger | picsalex |
| Altaïr Kabunda-Margalet | altair-jpg |
| Anastasiia Khrapal | nastijakh |
| Anthony Evans | antevansultralytics |
| Antonina Poludenna | Antonina2111 |
| Craig Johnston | craigjohnston1 |
| Darin Kabashi | darin-k |
| Ed Crook | ed-yolo |
| Emilia Farifteh | emilia-fari |
| Esat Kalfaoglu | artest08 |
| Fatih Akyon | fcakyon |
| Giovanni Dal Zilio | ggg-dz-ultralytics |
| Glenn Jocher | glenn-jocher |
| Hannah Streif | HannahStreif |
| Irene Calatrava | icalatrava |
| Jake Qian | fengqianjake |
| Javier Chulvi | JaviChulvi |
| Jianing Qi (Jalyn) | jianing-Jalyn |
| Jillian Rubenoff | jillian-rubenoff |
| Jin Xu | laodouya |
| Jing Qiu | Laughing-q |
| Joey Cherisea | Cherisea |
| Joey Tjon | NoCodeJoey |
| Josh Goldenberg | JoshyG-Ultralytics |
| Kasim Acikbas | kayselmecnun |
| Kristian Sommer | sokrisba |
| Lakshantha Dissanayake | lakshanthad |
| Leo Samsinger | lsamsinger |
| Manuel Calve | ManuelCalve96 |
| Marius Keiser | Skillnoob |
| Matt Bristow | matt-ultralytics |
| Maxim Sokolov | somal |
| Mengyu (Mason) Liu | lmycross |
| Mihai Pricochi | mihai-ultralytics |
| Miles Deans | miles-deans-ultralytics |
| Mohammed Yasin | Y-T-G |
| Muhammad Rizwan Munawar | RizwanMunawar |
| Murat Raimbekov | raimbekovm |
| 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 |
Obtener ayuda 💬#
¿Tienes preguntas o necesitas ayuda?
- Abre una incidencia en GitHub
- Únete a los debates de GitHub
- Conecta con nosotros en Discord
- Consulta la documentación
- Visita el Centro de ayuda
- Explora el blog de Ultralytics para encontrar tutoriales y guías
- Explora las soluciones para descubrir 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 crear una comunidad dinámica de innovación y colaboración.
Nos entusiasma ver cómo tus ideas se hacen realidad 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 contribuir - Directrices completas para contribuir
- Flujo de trabajo de desarrollo - Proceso de PR y estándares de código
- CI/Pruebas - Pruebas y controles de calidad
- Flujo de trabajo de la documentación - Redacción de documentación
- Código de conducta - Normas de la comunidad
- Documento CLA - Acuerdo de licencia de colaborador
- 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 del mundo real
