Seja para adicionar uma função de perda, melhorar a cobertura de testes ou escrever uma RFC para uma grande mudança de design, esta seção do guia do colaborador ajudará você a começar. Agradecemos seu trabalho e interesse em aprimorar o TensorFlow.
Antes de começar
Antes de contribuir com código-fonte para um projeto TensorFlow, revise o arquivo CONTRIBUTING.md no repositório GitHub do projeto. Por exemplo, veja o arquivo CONTRIBUTING.md no repositório principal do TensorFlow. Todos os colaboradores de código devem assinar um Contrato de Licença de Contribuidor (CLA).
Para evitar 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 maneira de contribuir e ajudar o projeto é trabalhar em problemas conhecidos.
Questões para novos colaboradores
Novos colaboradores devem procurar as seguintes tags ao buscarem sua primeira contribuição para a base de código do TensorFlow. Recomendamos fortemente que novos colaboradores comecem pelos projetos "boa primeira tarefa" e "contribuições bem-vindas"; isso ajuda o colaborador a se familiarizar com o fluxo de trabalho de contribuição e permite que os desenvolvedores principais conheçam o colaborador.
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 developers@group e consulte 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 de código.
Revisar o código contribuído para o projeto por meio de pull requests é um componente crucial do desenvolvimento do TensorFlow. Encorajamos todos a começarem a revisar o código enviado por outros desenvolvedores, especialmente se o recurso for algo que você provavelmente usará.
Aqui estão algumas perguntas para 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, gosta da mudança e pretende usá-la? Essa mudança está dentro do escopo do TensorFlow? O custo de manutenção de um novo recurso compensará seus benefícios?
- O código está em conformidade com a API do TensorFlow? As funções, classes e parâmetros públicos têm nomes adequados e um design intuitivo?
Inclui documentação? Todas as funções públicas, classes, parâmetros, tipos de retorno e atributos armazenados estã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 é exibida corretamente?
O código é legível para humanos? Apresenta baixa 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 por ser inútil ou supérfluo?
O código é eficiente? Poderia ser facilmente reescrito para ser executado de forma mais eficiente?
O código é compatível com versões anteriores do TensorFlow?
O novo código adicionará novas dependências a outras bibliotecas?
Testar e melhorar a cobertura de testes
Testes unitários de alta qualidade são um pilar fundamental do processo de desenvolvimento do TensorFlow. Para isso, utilizamos imagens Docker. As funções de teste possuem nomes apropriados e são responsáveis por verificar a validade dos algoritmos, bem como diferentes opções do código.
Todas as novas funcionalidades e correções de bugs devem incluir cobertura de testes adequada. Também aceitamos contribuições de novos casos de teste ou melhorias para os 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 — por favor, abra uma issue e, se possível, um pull request.
Para obter detalhes específicos sobre os procedimentos de teste em cada projeto do TensorFlow, consulte os arquivos README.md e CONTRIBUTING.md no repositório do projeto no GitHub.
Uma preocupação específica reside na adequação dos testes :
- Todas as funções e classes públicas são testadas?
- Foram testados 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 ele deve fazer?
- Se a alteração for uma correção de bug, um teste que não seja de regressão está incluído?
- Os testes passam na compilação de integração contínua ?
- Os testes abrangem todas as linhas de código? Caso contrário, as exceções são razoáveis e explícitas?
Caso encontre algum problema, considere ajudar o colaborador a entender e resolver esses problemas.
Melhorar as mensagens de erro ou os registos
Agradecemos contribuições que melhorem as mensagens de erro e o registro de logs.
Fluxo de trabalho de contribuição
As contribuições de código — correções de bugs, novos desenvolvimentos, melhorias nos testes — seguem um fluxo de trabalho centrado no GitHub. Para participar do desenvolvimento do TensorFlow, crie uma conta no GitHub. Em seguida:
Faça um fork do repositório no qual você pretende trabalhar. Acesse a página do repositório do projeto e use o botão "Fork" . Isso criará uma cópia do repositório com o seu nome de usuário. (Para mais detalhes sobre como fazer um fork de um repositório, consulte este guia .)
Clone o repositório para o seu sistema local.
$ git clone git@github.com:your-user-name/project-name.gitCrie uma nova ramificação para armazenar seu trabalho.
$ git checkout -b new-branch-nameTrabalhe no seu novo código. Escreva e execute testes.
Confirme as alterações.
$ git add -A$ git commit -m "commit message here"Envie suas alterações para o seu repositório do GitHub.
$ git push origin branch-nameAbra uma solicitação de pull request (PR). Acesse o repositório original do projeto no GitHub. Haverá uma mensagem sobre a sua branch recém-enviada, perguntando se você gostaria de abrir uma solicitação de pull request. Siga as instruções, compare os repositórios e envie a PR. Isso enviará um e-mail aos responsáveis pela alteração. Você também pode enviar um e-mail para a lista de discussão para obter maior visibilidade. (Para mais detalhes, consulte o guia do GitHub sobre PRs ).
Os mantenedores e outros colaboradores analisarão seu PR (Pull Request) . Participe da discussão e tente implementar as alterações solicitadas . Assim que o PR for aprovado, o código será integrado.
Antes de começar a trabalhar na sua próxima contribuição , certifique-se de que seu repositório local esteja atualizado.
Configure o servidor remoto upstream. (Você só precisa fazer isso uma vez por projeto, não precisa fazer isso sempre.)
$ git remote add upstream git@github.com:tensorflow/project-repo-nameMude para a branch master local.
$ git checkout masterBaixe as alterações do repositório remoto.
$ git pull upstream masterEnvie as alterações para sua conta do GitHub. (Opcional, mas uma boa prática.)
$ git push origin masterCrie uma nova ramificação se estiver iniciando um novo trabalho.
$ git checkout -b branch-name
Recursos adicionais git e GitHub:
Lista de verificação do colaborador
- Leia as diretrizes de contribuição .
- Leia o Código de Conduta .
- Certifique-se de ter assinado o Contrato de Licença de Colaborador (CLA) .
- Verifique se as suas alterações estão de acordo com as diretrizes .
- Verifique se as suas alterações estão de acordo com o estilo de codificação do TensorFlow .
- Execute os testes unitários .