¿Cómo contribuir? 🚀
¡Bienvenido! Nos emociona 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 visión artificial.
Directrices completas
Para obtener directrices completas sobre contribuciones, consulta también la Guía oficial de contribución de Ultralytics en nuestra documentación principal.
Ver: Contribución a Ultralytics
Guía de inicio rápido 🎯
¿Listo para contribuir? Sigue estos pasos:
- Lee nuestro Código de Conducta - Respeto, amabilidad y profesionalidad
- Haz un fork del repositorio al que deseas contribuir
- Crea una rama de función con un nombre descriptivo
- Realiza tus cambios siguiendo los estándares de codificación
- Escribe pruebas para la nueva funcionalidad
- Envía una solicitud de extracción (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 obtener información detallada sobre el proceso de PR.
Directrices de contribución 📋
Código de conducta 🤝
Todos los colaboradores deben adherirse a nuestro Código de Conducta, que se basa en el Pacto del Colaborador. Esto garantiza un entorno acogedor e inclusivo para todos. El respeto, la amabilidad y la profesionalidad son el corazón de nuestra comunidad.
Acuerdo de licencia de colaborador (CLA) 📝
Antes de que podamos fusionar tu PR, debes firmar nuestro CLA. Este acuerdo legal asegura que las contribuciones estén debidamente licenciadas bajo AGPL-3.0, protegiéndote tanto a ti como al proyecto.
Después de enviar tu PR, el bot de CLA te guiará. Para firmar, comenta:
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
- Exclusión de garantías
Revisa el documento completo del CLA para conocer los términos completos.
Mejores prácticas ✨
Al contribuir con código:
- Evita la duplicación: Reutiliza el código existente siempre que sea posible
- Realiza cambios más pequeños: Modificaciones enfocadas en lugar de cambios a gran escala
- Simplifica: Busca oportunidades de simplificación
- Considere la compatibilidad: Evite romper el código existente
- Utilice un formato consistente: Siga Ruff Formatter
- Añada pruebas: Incluya pruebas para las nuevas funcionalidades
- Actualice la documentación: Mantenga la documentación actualizada
Estándares de codificación 📐
- Cadenas de documentación: Utilice cadenas de documentación al estilo de Google con tipos entre paréntesis
- Ancho de línea: 120 caracteres como máximo
- Importaciones: Use
pathlib
en lugar deos
- Pruebas: Todas las PR deben pasar las pruebas de CI
- Sugerencias de tipo: Utilícelas donde sea beneficioso
Consulte el Flujo de trabajo de desarrollo para conocer los estándares de codificación completos.
Formas de contribuir 🌟
Contribuciones de código 💻
- Nuevas características y mejoras para los modelos YOLO
- Corrección de errores y resolución de problemas
- Optimizaciones de rendimiento para el entrenamiento y la inferencia
- Soporte de formatos de exportación para varias opciones de implementación
- Mejoras en la compatibilidad de la plataforma
Documentación 📚
- Mejorar la documentación existente
- Añadir tutoriales y guías para casos de uso específicos
- Corregir errores tipográficos y errores
- Traducir la documentación a otros idiomas
Pruebas 🧪
- Escribir pruebas unitarias para nuevas funcionalidades
- Probar nuevas funciones en diferentes modelos y tareas
- Informar sobre las lagunas en la cobertura de las pruebas
- Evaluación comparativa del rendimiento en diferentes plataformas
Soporte de la comunidad 💬
- Responder preguntas en Discusiones de GitHub
- Ayuda a los usuarios en Discord
- Revisa las "pull requests"
- Gestiona los problemas
Informar de errores 🐞
Ayúdanos a mejorar informando de los errores a través de GitHub Issues:
Requisitos para informar de errores
- Comprueba los problemas existentes para evitar duplicados
- Crear un Ejemplo Mínimo Reproducible (EMR) - Código pequeño y autónomo que reproduce el problema
- Describe el entorno: SO, versión de Python, versiones de las bibliotecas, hardware (CPU/GPU)
- Explica el comportamiento esperado frente al real con mensajes de error y seguimientos de pila
Qué hace que un MRE sea bueno
Un Ejemplo Mínimo Reproducible debe:
- Aislar el problema: Eliminar el código innecesario
- Usar modelos y conjuntos de datos públicos: p. ej.,
yolov8n.pt
ycoco8.yaml
- Incluir dependencias: Lista con
yolo checks
opip list
- Proporcionar una descripción clara: Comportamiento esperado vs. comportamiento real
- Formatear correctamente: Usar bloques de código con triples comillas invertidas
- Ser comprobable: Otros pueden ejecutarlo sin modificaciones
Consulta la Guía de EMR completa para obtener instrucciones detalladas.
Revisar las solicitudes de extracción 👀
La revisión de las "PR" es una valiosa contribución:
- Comprueba las pruebas unitarias: Verifica las pruebas para las nuevas funciones
- 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 las pruebas de CI: Confirma que todas las pruebas pasan
- Proporciona comentarios constructivos: Sé específico y útil
- Reconoce el esfuerzo: Agradece a los colaboradores
Información de la licencia 📜
Licencia AGPL-3.0
Ultralytics utiliza AGPL-3.0 para los repositorios. Esto promueve la apertura, la transparencia y la mejora colaborativa.
Usando YOLO en su 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 AGPL-3.0.
Por qué es importante el cumplimiento:
- Mantiene el software abierto para el beneficio de la comunidad
- Requisito legal al utilizar código AGPL-3.0
- Fomenta la colaboración y la transparencia
Alternativa: Si prefieres no hacer de código abierto tu proyecto, obtén una Licencia Empresarial.
¿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:
- Haz un "fork" del repositorio YOLO de Ultralytics
- Utilice el repositorio de plantillas de Ultralytics
-
Licencia tu proyecto:
- Añadir
LICENSE
archivo con el texto completo de AGPL-3.0 - Añade un aviso de licencia en la parte superior de los archivos de código fuente
- Añadir
-
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 conjuntos de datos 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
README.md
- Incluye instrucciones de configuración
- Atribuye Ultralytics YOLO apropiadamente
- 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 obtener ayuda:
Nombre | Perfil de GitHub |
---|---|
Abrish Sabri | asabri97 |
Abirami Vina | abirami-vina |
Alexis Schutzger | picsalex |
Burhan Qaddoumi | Burhan-Q |
Fatih Akyon | fcakyon |
Francesco Mattioli | ambitious-octopus |
Giovanni Dal Zillio | ggg-dz-ultralytics |
Glenn Jocher | glenn-jocher |
Hannah Streif | HannahStreif |
Jake Qian | fengqianjake |
Jing Qiu | Laughing-q |
Joey Tjon | NoCodeJoey |
Jordan Cooper | JCoops1 |
Kasim Acikbas | kayselmecnun |
Kirill Viarbitski | Kverbitski |
Kiryl Oblikau | munknex |
Kristian Sommer | sokrisba |
Lakshantha Dissanayake | lakshanthad |
Marius Keiser | Skillnoob |
Mohammed Yasin | Y-T-G |
Muhammad Rizwan Munawar | RizwanMunawar |
Mykola Boiko | mykolaxboiko |
Nicolai Nielsen | niconielsen32 |
Nuvola Ladi | NLadi |
Onuralp Sezer | onuralpszr |
Pablo Karnbaum | pablokarnbaum |
Paula Derrenger | pderrenger |
Prateek Bhatnagar | prateek-ultralytics |
Rick Hou | Bovey0809 |
Ryan Leonel Somali | ryanleonels |
Sergiu Waxmann | sergiuwaxmann |
Thomas Chuang | chuang091 |
William Beaven | william-beaven |
Yogendra Singh | yogendrasinghx |
Tigran Hakobyan | tthakz |
Zinnia Pourdad | zinnialp |
Shuai (Louis) Lyu | ShuaiLYU |
Abi Anderson | UltralyticsAbi |
Jin Xu | laodouya |
Zuzana Kontrikova | zkontri |
Miles Deans | miles-deans-ultralytics |
Mengyu (Mason) Liu | lmycross |
Obtener soporte 💬
¿Tienes preguntas o necesitas ayuda?
- Abre un issue en GitHub
- Únete a las Discusiones de GitHub
- Conéctate 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 de la industria
¡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.
Nos entusiasma ver tus ideas hacerse realidad 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 para contribuir
- 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 - Escribir documentación
- Código de conducta - Normas de la comunidad
- Documento CLA - Acuerdo de Licencia del Colaborador
- Guía de EMR - 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