Contribua com o código do TensorFlow

Esteja você adicionando uma função de perda, melhorando a cobertura de testes ou escrevendo uma RFC para uma grande mudança de design, esta parte do guia do contribuidor o ajudará a começar. Obrigado pelo trabalho e interesse em melhorar o TensorFlow.

Antes de começar

Antes de contribuir com o código-fonte para um projeto do TensorFlow, revise o arquivo CONTRIBUTING.md no repositório GitHub do projeto. Por exemplo, consulte o arquivo CONTRIBUTING.md no repositório principal do TensorFlow. Todos os contribuidores de código são obrigados a assinar um Contrato de Licença de Contribuidor (CLA).

Para evitar a duplicação de trabalho, revise as RFCs atuais ou propostas e entre em contato com os desenvolvedores nos fóruns do TensorFlow ( developers@tensorflow.org ) antes de começar a trabalhar em um recurso não trivial. Somos um tanto seletivos ao decidir adicionar novas funcionalidades, e a melhor forma de contribuir e ajudar o projeto é trabalhar em problemas conhecidos.

Problemas para novos contribuidores

Novos contribuidores devem procurar as tags a seguir ao procurar uma primeira contribuição para a base de código do TensorFlow. Recomendamos fortemente que os novos contribuidores abordem primeiro os projetos de “primeira edição boa” e de “contribuições bem-vindas”; isso ajuda o contribuidor a se familiarizar com o fluxo de trabalho de contribuição e os principais desenvolvedores a se familiarizarem com o contribuidor.

Se você estiver interessado em recrutar uma equipe para ajudar a resolver um problema de grande escala ou um novo recurso, envie um e-mail para o grupo developers@ e revise nossa lista atual de RFCs.

Revisão de código

Novos recursos, correções de bugs e quaisquer outras alterações na base de código estão sujeitos à revisão do código.

A revisão do código contribuído para o projeto como solicitações pull é um componente crucial do desenvolvimento do TensorFlow. Incentivamos qualquer pessoa a começar a revisar o código enviado por outros desenvolvedores, especialmente se o recurso for algo que você provavelmente usará.

Aqui estão algumas perguntas que você deve ter em mente durante o processo de revisão de código:

  • Queremos isso no TensorFlow? É provável que seja usado? Você, como usuário do TensorFlow, gostou da mudança e pretende utilizá-la? Essa mudança está no escopo do TensorFlow? O custo de manutenção de um novo recurso compensará seus benefícios?
  • O código é consistente com a API TensorFlow? As funções, classes e parâmetros públicos estão bem nomeados e projetados intuitivamente?
  • Inclui documentação? Todas as funções públicas, classes, parâmetros, tipos de retorno e atributos armazenados são nomeados de acordo com as convenções do TensorFlow e claramente documentados? As novas funcionalidades são descritas na documentação do TensorFlow e ilustradas com exemplos, sempre que possível? A documentação é renderizada corretamente?

  • O código é legível por humanos? Há pouca redundância? Os nomes das variáveis ​​devem ser melhorados para maior clareza ou consistência? Devem ser adicionados comentários? Algum comentário deve ser removido como inútil ou estranho?

  • O código é eficiente? Poderia ser reescrito facilmente para funcionar com mais eficiência?

  • O código é compatível com versões anteriores do TensorFlow?

  • O novo código adicionará novas dependências em outras bibliotecas?

Teste e melhore a cobertura dos testes

O teste de unidade de alta qualidade é a base do processo de desenvolvimento do TensorFlow. Para isso, utilizamos imagens Docker. As funções de teste são nomeadas apropriadamente e são responsáveis ​​​​por verificar a validade dos algoritmos, bem como das diferentes opções do código.

Todos os novos recursos e correções de bugs devem incluir cobertura de testes adequada. Também acolhemos contribuições de novos casos de teste ou melhorias em testes existentes. Se você descobrir que nossos testes existentes não estão completos — mesmo que isso não esteja causando um bug no momento — registre um problema e, se possível, uma solicitação pull.

Para obter detalhes específicos dos procedimentos de teste em cada projeto do TensorFlow, consulte os arquivos README.md e CONTRIBUTING.md no repositório do projeto no GitHub.

De particular preocupação em testes adequados :

  • Todas as funções e classes públicas são testadas?
  • Foi testado um conjunto razoável de parâmetros , seus valores, tipos de valores e combinações?
  • Os testes validam se o código está correto e se está fazendo o que a documentação diz que o código pretende fazer?
  • Se a mudança for uma correção de bug, um teste de não regressão está incluído?
  • Os testes passam na construção de integração contínua ?
  • Os testes cobrem todas as linhas de código? Caso contrário, as exceções são razoáveis ​​e explícitas?

Se você encontrar algum problema, considere ajudar o colaborador a entendê-los e resolvê-los.

Melhorar mensagens de erro ou logs

Aceitamos contribuições que melhorem as mensagens de erro e o registro.

Fluxo de trabalho de contribuição

Contribuições de código – correções de bugs, novos desenvolvimentos, melhorias de testes – todas seguem um fluxo de trabalho centrado no GitHub. Para participar do desenvolvimento do TensorFlow, configure uma conta GitHub. Então:

  1. Bifurque o repositório no qual você planeja trabalhar. Vá para a página do repositório do projeto e use o botão Fork . Isso criará uma cópia do repositório, com seu nome de usuário. (Para obter mais detalhes sobre como fazer fork de um repositório, consulte este guia .)

  2. Clone o repositório para o seu sistema local.

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

  3. Crie um novo branch para armazenar seu trabalho.

    $ git checkout -b new-branch-name

  4. Trabalhe em seu novo código. Escreva e execute testes.

  5. Confirme suas alterações.

    $ git add -A

    $ git commit -m "commit message here"

  6. Envie suas alterações para seu repositório GitHub.

    $ git push origin branch-name

  7. Abra uma solicitação pull (PR). Acesse o repositório do projeto original no GitHub. Haverá uma mensagem sobre seu branch enviado recentemente, perguntando se você gostaria de abrir uma solicitação pull. Siga as instruções, compare os repositórios e envie o PR. Isso enviará um email aos committers. Você pode considerar enviar um e-mail para a lista de discussão para obter mais visibilidade. (Para obter mais detalhes, consulte o guia do GitHub sobre PRs .

  8. Os mantenedores e outros colaboradores revisarão seu PR . Participe da conversa e tente fazer as alterações solicitadas . Assim que o PR for aprovado, o código será mesclado.

Antes de trabalhar em sua próxima contribuição , certifique-se de que seu repositório local esteja atualizado.

  1. Defina o controle remoto upstream. (Você só precisa fazer isso uma vez por projeto, não sempre.)

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

  2. Mude para o branch master local.

    $ git checkout master

  3. Retire as alterações do upstream.

    $ git pull upstream master

  4. Envie as alterações para sua conta GitHub. (Opcional, mas uma boa prática.)

    $ git push origin master

  5. Crie um novo branch se estiver iniciando um novo trabalho.

    $ git checkout -b branch-name

Recursos adicionais git e do GitHub:

Lista de verificação do colaborador