Link to this sectionContribuir a los proyectos de código abierto de Ultralytics#
Welcome! We're thrilled that you're considering contributing to our Ultralytics open-source projects. Your involvement not only helps enhance the quality of our repositories but also benefits the entire computer vision community. This guide provides clear guidelines and best practices to help you get started.
Watch: How to Contribute to Ultralytics Repository | Ultralytics Models, Datasets and Documentation 🚀
Link to this section🤝 Código de conducta#
Para garantizar un entorno acogedor e inclusivo para todos, todos los colaboradores deben cumplir con nuestro Código de conducta. El respeto, la amabilidad y el profesionalismo son el corazón de nuestra comunidad.
Link to this section🚀 Contribuir mediante pull requests#
Agradecemos enormemente las contribuciones en forma de pull requests (PRs). Para que el proceso de revisión sea lo más fluido posible, sigue estos pasos:
- Haz un fork del repositorio: Empieza haciendo un fork del repositorio de Ultralytics correspondiente (por ejemplo, ultralytics/ultralytics) a tu cuenta de GitHub.
- Crea una rama: Crea una nueva rama en tu repositorio bifurcado con un nombre claro y descriptivo que refleje tus cambios (por ejemplo,
fix-issue-123,add-feature-xyz). - Realiza tus cambios: Implementa tus mejoras o correcciones. Asegúrate de que tu código cumpla con las directrices de estilo del proyecto y no introduzca nuevos errores ni advertencias.
- Prueba tus cambios: Antes de enviarlos, prueba tus cambios localmente para confirmar que funcionan según lo previsto y no provocan regresiones. Añade pruebas si vas a introducir una funcionalidad nueva.
- Confirma tus cambios: Confirma tus cambios con mensajes de confirmación concisos y descriptivos. Si tus cambios solucionan un problema específico, incluye el número de incidencia (por ejemplo,
Fix #123: Corrected calculation error.). - Crea un pull request: Envía un pull request desde tu rama a la rama
maindel repositorio original de Ultralytics. Proporciona un título claro y una descripción detallada que explique el propósito y el alcance de tus cambios.
Link to this section📝 Firma del CLA#
Antes de que podamos fusionar tu solicitud de extracción (pull request), debes firmar nuestro Acuerdo de licencia de colaborador (CLA). Este acuerdo legal garantiza que tus contribuciones tengan la licencia adecuada, lo que permite que el proyecto siga distribuyéndose bajo la licencia AGPL-3.0.
Después de enviar tu pull request, el bot del CLA te guiará durante el proceso de firma. Para firmar el CLA, simplemente añade un comentario en tu PR indicando:
I have read the CLA Document and I sign the CLA
Link to this section✍️ Docstrings al estilo Google#
Al añadir nuevas funciones o clases, incluye docstrings al estilo Google para obtener una documentación clara y estandarizada. Encierra siempre tanto las types de entrada como de salida entre paréntesis (por ejemplo, (bool), (np.ndarray)).
Este ejemplo ilustra el formato estándar de docstring al estilo Google. Observa cómo separa claramente la descripción de la función, los argumentos, el valor de retorno y los ejemplos para lograr la máxima legibilidad.
def example_function(arg1, arg2=4):
"""Example function demonstrating Google-style docstrings.
Args:
arg1 (int): The first argument.
arg2 (int): The second argument.
Returns:
(bool): True if arguments are equal, False otherwise.
Examples:
>>> example_function(4, 4) # True
>>> example_function(1, 2) # False
"""
return arg1 == arg2Link to this section✅ Pruebas de CI con GitHub Actions#
All pull requests must pass the GitHub Actions Continuous Integration (CI) tests before they can be merged. These tests include linting, unit tests, and other checks to ensure that your changes meet the project's quality standards. Review the CI output and address any issues that arise.
Link to this section✨ Mejores prácticas para contribuciones de código#
Al contribuir con código a los proyectos de Ultralytics, ten en cuenta estas mejores prácticas:
- Evita la duplicación de código: Reutiliza el código existente siempre que sea posible y minimiza los argumentos innecesarios.
- Realiza cambios pequeños y específicos: Céntrate en modificaciones concretas en lugar de en cambios a gran escala.
- Simplifica siempre que puedas: Busca oportunidades para simplificar el código o eliminar partes innecesarias.
- Considera la compatibilidad: Antes de realizar cambios, valora si podrían romper el código existente que utiliza Ultralytics.
- Utiliza un formato coherente: Herramientas como Ruff Formatter pueden ayudar a mantener la coherencia estilística.
- Añade pruebas adecuadas: Incluye pruebas para las nuevas funcionalidades para asegurar que funcionan según lo previsto.
Link to this section👀 Revisión de pull requests#
Revisar pull requests es otra forma valiosa de contribuir. Al revisar PRs:
- Comprueba las pruebas unitarias: Verifica que el PR incluya pruebas para nuevas funciones o cambios.
- Revisa las actualizaciones de la documentación: Asegúrate de que la documentación esté actualizada para reflejar los cambios.
- Evalúa el impacto en el rendimiento: Considera cómo los cambios podrían afectar al rendimiento.
- Verifica las pruebas de CI: Confirma que todas las pruebas de Integración continua se están superando correctamente.
- Proporciona comentarios constructivos: Ofrece comentarios específicos y claros sobre cualquier problema o duda.
- Reconoce el esfuerzo: Reconoce el trabajo del autor para mantener un ambiente de colaboración positivo.
Link to this section🐞 Informar de errores#
Valoramos mucho los informes de errores, ya que nos ayudan a mejorar la calidad y fiabilidad de nuestros proyectos. Al informar de un error a través de GitHub Issues:
- Comprueba los problemas existentes: Busca primero para ver si el error ya ha sido reportado.
- Proporciona un Ejemplo mínimo reproducible: Crea un fragmento de código pequeño y autocontenido que reproduzca el problema de forma constante. Esto es crucial para una depuración eficiente.
- Describe el entorno: Especifica tu sistema operativo, versión de Python, versiones relevantes de las bibliotecas (por ejemplo,
torch,ultralytics) y hardware (CPU/GPU). - Explica el comportamiento esperado frente al real: Indica claramente qué esperabas que ocurriera y qué ocurrió realmente. Incluye cualquier mensaje de error o rastro (traceback).
Link to this section📜 Licencia#
Ultralytics utiliza la GNU Affero General Public License v3.0 (AGPL-3.0) para sus repositorios. Esta licencia promueve la apertura, la transparencia y la mejora colaborativa en el desarrollo de software. Garantiza que todos los usuarios tengan la libertad de usar, modificar y compartir el software, fomentando una sólida comunidad de colaboración e innovación.
Animamos a todos los colaboradores a familiarizarse con los términos de la licencia AGPL-3.0 para contribuir de forma eficaz y ética a la comunidad de código abierto de Ultralytics.
Link to this section🌍 Publicar tu proyecto YOLO bajo AGPL-3.0#
¿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. Esto garantiza que las modificaciones y los proyectos de mayor envergadura construidos sobre bases de código abierto permanezcan abiertos.
Link to this sectionPor qué es importante el cumplimiento de la AGPL-3.0#
- Mantiene el software abierto: Garantiza que las mejoras y obras derivadas beneficien a la comunidad.
- Requisito legal: El uso de código con licencia AGPL-3.0 vincula tu proyecto a sus términos.
- Fomenta la colaboración: Incentiva el intercambio y la transparencia.
Si prefieres no publicar tu proyecto como código abierto, considera obtener una Licencia Enterprise.
Link to this sectionCómo cumplir con la AGPL-3.0#
Cumplir significa poner el código fuente completo correspondiente de tu proyecto a disposición del público bajo la licencia AGPL-3.0.
-
Elige tu punto de partida:
- Haz un fork de Ultralytics YOLO: Haz un fork directamente del repositorio de Ultralytics YOLO si vas a construir tu proyecto basándote estrechamente en él.
- Utiliza la plantilla de Ultralytics: Empieza con el repositorio de plantillas de Ultralytics para una configuración limpia y modular que integre YOLO.
-
Licencia tu proyecto:
- Añade un archivo
LICENSEque contenga el texto completo de la licencia AGPL-3.0. - Añade un aviso en la parte superior de cada archivo de código fuente indicando la licencia.
- Añade un archivo
-
Publica tu código fuente:
- Haz que el código fuente de todo tu proyecto sea accesible públicamente (por ejemplo, en GitHub). Esto incluye:
- La aplicación o sistema completo más grande que incorpore el modelo o código YOLO.
- Cualquier modificación realizada en el código original de Ultralytics YOLO.
- Scripts para entrenamiento, validación e inferencia.
- Pesos del modelo si se han modificado o ajustado.
- Archivos de configuración, configuraciones de entorno (
requirements.txt,Dockerfiles). - Código de backend y frontend si forma parte de una aplicación web.
- Cualquier biblioteca de terceros que hayas modificado.
- Datos de entrenamiento si son necesarios para ejecutar/volver a entrenar y si son redistribuibles.
- Haz que el código fuente de todo tu proyecto sea accesible públicamente (por ejemplo, en GitHub). Esto incluye:
-
Documenta claramente:
- Actualiza tu
README.mdpara indicar que el proyecto tiene licencia AGPL-3.0. - Incluye instrucciones claras sobre cómo configurar, compilar y ejecutar tu proyecto a partir del código fuente.
- Atribuye a Ultralytics YOLO de forma adecuada, incluyendo un enlace al repositorio original. Ejemplo:
This project utilizes code from [Ultralytics YOLO](https://github.com/ultralytics/ultralytics), licensed under AGPL-3.0.
- Actualiza tu
Link to this sectionEjemplo de estructura de repositorio#
Consulta el repositorio de plantillas de Ultralytics para ver una estructura de ejemplo práctica:
my-yolo-project/
│
├── LICENSE # Full AGPL-3.0 license text
├── README.md # Project description, setup, usage, license info & attribution
├── pyproject.toml # Dependencies (or requirements.txt)
├── scripts/ # Training/inference scripts
│ └── train.py
├── src/ # Your project's source code
│ ├── __init__.py
│ ├── data_loader.py
│ └── model_wrapper.py # Code interacting with YOLO
├── tests/ # Unit/integration tests
├── configs/ # YAML/JSON config files
├── docker/ # Dockerfiles, if used
│ └── Dockerfile
└── .github/ # GitHub specific files (e.g., workflows for CI)
└── workflows/
└── ci.ymlAl seguir estas directrices, garantizas el cumplimiento de la AGPL-3.0, apoyando el ecosistema de código abierto que hace posibles herramientas potentes como Ultralytics YOLO.
Link to this sectionConclusión#
Gracias por tu interés en contribuir a los proyectos de código abierto Ultralyticsopen-source de YOLO. Tu participación es esencial para dar forma al futuro de nuestro software y construir una comunidad vibrante de innovación y colaboración. Tanto si mejoras el código, informas de errores o sugieres nuevas funciones, tus contribuciones son invaluables.
Estamos emocionados por ver cómo cobran vida tus ideas y agradecemos tu compromiso para avanzar en la tecnología de detección de objetos. Juntos, sigamos creciendo e innovando en este emocionante viaje de código abierto.
Link to this sectionFAQ#
Link to this section¿Por qué debería contribuir a los repositorios de código abierto de Ultralytics YOLO?#
Contribuir a los repositorios de código abierto de Ultralytics YOLO mejora el software, haciéndolo más robusto y rico en funciones para toda la comunidad. Las contribuciones pueden incluir mejoras de código, correcciones de errores, mejoras de la documentación e implementaciones de nuevas funciones. Además, contribuir te permite colaborar con otros desarrolladores expertos y profesionales del sector, mejorando tus propias habilidades y reputación. Para obtener detalles sobre cómo empezar, consulta la sección Contribuir mediante pull requests.
Link to this section¿Cómo firmo el Acuerdo de Licencia de Contribuyente (CLA) para Ultralytics YOLO?#
Para firmar el Acuerdo de Licencia de Contribuyente (CLA), sigue las instrucciones proporcionadas por el bot del CLA después de enviar tu pull request. Este proceso garantiza que tus contribuciones tengan la licencia adecuada bajo la licencia AGPL-3.0, manteniendo la integridad legal del proyecto de código abierto. Añade un comentario en tu pull request indicando:
I have read the CLA Document and I sign the CLA
Para más información, consulta la sección Firma del CLA.
Link to this section¿Qué son los docstrings al estilo Google y por qué son necesarios para las contribuciones a Ultralytics YOLO?#
Los docstrings al estilo Google proporcionan una documentación clara y concisa para funciones y clases, mejorando la legibilidad y el mantenimiento del código. Estos docstrings describen el propósito de la función, los argumentos y los valores de retorno con reglas de formato específicas. Al contribuir a Ultralytics YOLO, seguir los docstrings al estilo Google garantiza que tus aportaciones estén bien documentadas y sean fáciles de entender. Para ver ejemplos y directrices, visita la sección Docstrings al estilo Google.
Link to this section¿Cómo puedo asegurar que mis cambios pasen las pruebas de CI de GitHub Actions?#
Antes de que se pueda fusionar tu pull request, debe pasar todas las pruebas de Integración Continua (CI) de GitHub Actions. Estas pruebas incluyen linting, pruebas unitarias y otras comprobaciones para asegurar que el código cumpla con los estándares de calidad del proyecto. Revisa la salida de CI y soluciona cualquier problema. Para obtener información detallada sobre el proceso de CI y consejos de resolución de problemas, consulta la sección GitHub Actions CI Tests.
Link to this section¿Cómo informo de un error en los repositorios de YOLO de Ultralytics?#
Para informar de un error, proporciona un Ejemplo mínimo reproducible claro y conciso junto con tu informe de error. Esto ayuda a los desarrolladores a identificar y solucionar el problema rápidamente. Asegúrate de que tu ejemplo sea mínimo pero suficiente para replicar el problema. Para obtener pasos más detallados sobre cómo informar de errores, consulta la sección Informar de errores.
Link to this section¿Qué significa la licencia AGPL-3.0 si utilizo YOLO de Ultralytics en mi propio proyecto?#
Si utilizas código o modelos de YOLO de Ultralytics (bajo la licencia AGPL-3.0) en tu proyecto, la licencia AGPL-3.0 requiere que todo tu proyecto (la obra derivada) también esté licenciado bajo AGPL-3.0 y que su código fuente completo se haga público. Esto asegura que la naturaleza de código abierto del software se preserve en sus derivados. Si no puedes cumplir con estos requisitos, necesitas obtener una Enterprise License. Consulta la sección Open-Sourcing Your Project para obtener más detalles.
