Contribuya al código de TensorFlow

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

Antes de empezar

Antes de contribuir con el código fuente a un proyecto de TensorFlow, revise el archivo CONTRIBUTING.md en el repositorio de GitHub del proyecto. Por ejemplo, vea el archivo CONTRIBUTING.md en el repositorio principal de TensorFlow. Todos los colaboradores 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 ( developers@tensorflow.org ) antes de comenzar a trabajar en una característica no trivial. Somos algo selectivos cuando decidimos agregar nuevas funcionalidades, y la mejor manera de contribuir y ayudar al proyecto es trabajar en problemas conocidos.

Problemas para los nuevos contribuyentes

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

Si está interesado en reclutar un equipo para ayudar a abordar un problema a gran escala o una nueva función, 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, las 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 incorporación de cambios es un componente crucial del desarrollo de TensorFlow. Alentamos a todos a comenzar a revisar el código enviado por otros desarrolladores, especialmente si la función es algo que probablemente usará.

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

  • ¿Queremos esto en TensorFlow? ¿Es probable que se use? ¿A usted, como usuario de TensorFlow, le gusta el cambio y tiene la intención de usarlo? ¿Es este un cambio en el alcance de TensorFlow? ¿Valdrá la pena el costo de mantener una nueva característica por sus beneficios?
  • ¿El código es coherente con la API de TensorFlow? ¿Las funciones públicas, las clases y los parámetros están bien nombrados y diseñados intuitivamente?
  • ¿Incluye documentación? ¿Todas las funciones públicas, las clases, los parámetros, los tipos de valor devuelto y los atributos almacenados se nombran de acuerdo con las convenciones de TensorFlow y están claramente documentados? ¿Se describe la nueva funcionalidad en la documentación de TensorFlow y se ilustra con ejemplos, siempre que sea posible? ¿La documentación se procesa correctamente?

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

  • ¿Es eficiente el código? ¿Podría reescribirse fácilmente para ejecutarse 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 están debidamente nombradas y son las encargadas de comprobar la validez de los algoritmos así como las diferentes opciones del código.

Todas las funciones nuevas y las correcciones de errores deben incluir una cobertura de prueba adecuada. También agradecemos las 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 ?
  • ¿ Pasan las pruebas la compilación de integración continua ?
  • ¿Las pruebas cubren cada línea de código? De no ser así, ¿son las excepciones razonables y explícitas?

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

Mejorar los mensajes de error o registros

Damos la bienvenida a las contribuciones que mejoran 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. Luego:

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

  2. Clone el repositorio en su sistema local.

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

  3. Cree una nueva rama para guardar su 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íe sus cambios a su 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, que le preguntará 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 autores. 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 colaboradores revisarán su PR . 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 aguas arriba. (Solo tiene 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. Extraiga los cambios desde arriba.

    $ git pull upstream master

  4. Envía los cambios a tu cuenta de GitHub. (Opcional, pero 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 de git y GitHub:

Lista de verificación del colaborador