Contribuir al código de TensorFlow

Ya sea que esté agregando una función de pérdida, mejorando la cobertura de pruebas o escribiendo un RFC para un cambio de diseño importante, esta parte de la guía para colaboradores lo ayudará a comenzar. Gracias por el trabajo y el interés en mejorar TensorFlow.

Antes de empezar

Antes de contribuir con código fuente a un proyecto de TensorFlow, revise el archivo CONTRIBUTING.md en el repositorio de GitHub del proyecto. Por ejemplo, consulte el archivo CONTRIBUTING.md en el repositorio principal de TensorFlow. Todos los contribuyentes de código deben firmar un Acuerdo de licencia de colaborador (CLA).

Para evitar duplicar el trabajo, revise los RFC actuales o propuestos y comuníquese con los desarrolladores en los foros de TensorFlow ( desarrolladores@tensorflow.org ) antes de comenzar a trabajar en una característica no trivial. Somos algo selectivos a la hora de decidir agregar nuevas funciones y la mejor manera de contribuir y ayudar al proyecto es trabajar en problemas conocidos.

Problemas para nuevos contribuyentes

Los nuevos contribuyentes deben buscar las siguientes etiquetas cuando busquen una primera contribución al código base de TensorFlow. Recomendamos encarecidamente que los nuevos contribuyentes aborden primero los proyectos de “bueno primer tema” y “contribuciones bienvenidas”; esto ayuda al colaborador a familiarizarse con el flujo de trabajo de contribución y a que los desarrolladores principales se familiaricen con el colaborador.

Si está interesado en reclutar un equipo para ayudar a abordar un problema a gran escala o una nueva característica, envíe un correo electrónico al grupo de desarrolladores@ y revise nuestra lista actual de RFC.

Revisión de código

Las nuevas funciones, correcciones de errores y cualquier otro cambio en la base del código están sujetos a revisión del código.

Revisar el código contribuido al proyecto como solicitudes de extracción es un componente crucial del desarrollo de TensorFlow. Alentamos a cualquiera a comenzar a revisar el código enviado por otros desarrolladores, especialmente si la función es algo que probablemente utilizará.

Aquí hay algunas preguntas a tener en cuenta durante el proceso de revisión del código:

  • ¿Queremos esto en TensorFlow? ¿Es probable que se utilice? ¿A usted, como usuario de TensorFlow, le gusta el cambio y tiene intención de utilizarlo? ¿Este cambio está en el alcance de TensorFlow? ¿El costo de mantener una nueva función valdrá la pena por sus beneficios?
  • ¿El código es coherente con la API de TensorFlow? ¿Las funciones, clases y parámetros públicos están bien nombrados y diseñados de forma intuitiva?
  • ¿Incluye documentación? ¿Todas las funciones públicas, clases, parámetros, tipos de retorno y atributos almacenados están nombrados de acuerdo con las convenciones de TensorFlow y están claramente documentados? ¿Se describen las nuevas funciones en la documentación de TensorFlow y se ilustran con ejemplos, siempre que sea posible? ¿La documentación se muestra correctamente?

  • ¿El código es legible por humanos? ¿Tiene poca redundancia? ¿Deberían mejorarse los nombres de las variables para mayor claridad o coherencia? ¿Se deben agregar comentarios? ¿Debería eliminarse algún comentario por considerarlo inútil o superfluo?

  • ¿Es el código eficiente? ¿Podría reescribirse fácilmente para que se ejecute de manera más eficiente?

  • ¿El código es compatible con versiones anteriores de TensorFlow?

  • ¿El nuevo código agregará nuevas dependencias en otras bibliotecas?

Probar y mejorar la cobertura de las pruebas

Las pruebas unitarias de alta calidad son la piedra angular del proceso de desarrollo de TensorFlow. Para ello utilizamos imágenes de Docker. Las funciones de prueba tienen nombres apropiados y son responsables de verificar la validez de los algoritmos, así como las diferentes opciones del código.

Todas las funciones nuevas y correcciones de errores deben incluir una cobertura de prueba adecuada. También damos la bienvenida a contribuciones de nuevos casos de prueba o mejoras a las pruebas existentes. Si descubre que nuestras pruebas existentes no están completas, incluso si eso no está causando un error actualmente, presente un problema y, si es posible, una solicitud de extracción.

Para obtener detalles específicos de los procedimientos de prueba en cada proyecto de TensorFlow, consulte los archivos README.md y CONTRIBUTING.md en el repositorio del proyecto en GitHub.

De particular preocupación en las pruebas adecuadas :

  • ¿Se prueban todas las funciones y clases públicas ?
  • ¿Se prueba un conjunto razonable de parámetros , sus valores, tipos de valores y combinaciones?
  • ¿Las pruebas validan que el código es correcto y que está haciendo lo que la documentación dice que el código debe hacer?
  • Si el cambio es una corrección de errores, ¿se incluye una prueba de no regresión ?
  • ¿Las pruebas pasan la compilación de integración continua ?
  • ¿Las pruebas cubren cada línea de código? En caso negativo, ¿son las excepciones razonables y explícitas?

Si encuentra algún problema, considere ayudar al colaborador a comprender esos problemas y resolverlos.

Mejorar mensajes de error o registros

Agradecemos contribuciones que mejoren los mensajes de error y el registro.

Flujo de trabajo de contribución

Las contribuciones de código (correcciones de errores, nuevos desarrollos, mejoras de pruebas) siguen un flujo de trabajo centrado en GitHub. Para participar en el desarrollo de TensorFlow, configure una cuenta de GitHub. Entonces:

  1. Bifurca el repositorio en el que planeas trabajar. Vaya a la página del repositorio del proyecto y use el botón Fork . Esto creará una copia del repositorio, con su nombre de usuario. (Para obtener más detalles sobre cómo bifurcar un repositorio, consulte esta guía ).

  2. Clona el repositorio en tu sistema local.

    $ git clone git@github.com:your-user-name/project-name.git

  3. Crea una nueva sucursal para guardar tu trabajo.

    $ git checkout -b new-branch-name

  4. Trabaja en tu nuevo código. Escribir y ejecutar pruebas.

  5. Confirme sus cambios.

    $ git add -A

    $ git commit -m "commit message here"

  6. Envía tus cambios a tu repositorio de GitHub.

    $ git push origin branch-name

  7. Abra una solicitud de extracción (PR). Vaya al repositorio del proyecto original en GitHub. Habrá un mensaje sobre su rama enviada recientemente, preguntándole si desea abrir una solicitud de extracción. Siga las indicaciones, compare entre repositorios y envíe el PR. Esto enviará un correo electrónico a los confirmadores. Es posible que desee considerar enviar un correo electrónico a la lista de correo para obtener más visibilidad. (Para obtener más detalles, consulte la guía de GitHub sobre relaciones públicas .

  8. Los mantenedores y otros contribuyentes revisarán sus relaciones públicas . Participe en la conversación e intente realizar los cambios solicitados . Una vez que se apruebe el PR, el código se fusionará.

Antes de trabajar en su próxima contribución , asegúrese de que su repositorio local esté actualizado.

  1. Configure el control remoto ascendente. (Solo tienes que hacer esto una vez por proyecto, no todas las veces).

    $ git remote add upstream git@github.com:tensorflow/project-repo-name

  2. Cambie a la rama maestra local.

    $ git checkout master

  3. Baja los cambios desde arriba.

    $ git pull upstream master

  4. Envíe los cambios a su cuenta de GitHub. (Opcional, pero es una buena práctica).

    $ git push origin master

  5. Cree una nueva sucursal si está comenzando un nuevo trabajo.

    $ git checkout -b branch-name

Recursos adicionales git y GitHub:

Lista de verificación de contribuyentes