Uso e Boas Práticas em Projetos Open Source
www.cdsinformatica.com.br
• Mais de 25 anos de experiência no desenvolvimento de software
• Responsável por Pesquisa e Desenvolvimento na CDS Informática
• Microsoft MVP desde 2008
• Microsoft Regional Director
• Um dos criadores do projeto open source CodeCracker: www.github.com/code-cracker
• Mantenedor do projeto open source BoletoNet: www.github.com/boletonet
• Blog: www.carloscds.net
• GitHub: www.github.com/carloscds
www.gotaskfly.com
• Serviço de controle de versão de arquivos
• Mas não somente isto...
• Um dos maiores repositórios de código open source
• Gratuito para repositórios públicos, mas permite privados também
• Oferece uma dinâmica excelente para trabalho em equipe
• Permite versionamento offline e sincronização online
• Permite várias versões do projeto simultaneamente
www.gotaskfly.com
www.gotaskfly.com
www.gotaskfly.com
www.gotaskfly.com
www.gotaskfly.com
www.gotaskfly.com
• Readonly:
• Só vou baixar e usar!
• Folgado:
• Fica achando que o projeto tem um suporte 24x7
• Às vezes fica bravo porque alguém não resolveu na hora!
• Colaborador:
• Vai usar e também enviar o que melhorar de volta
• Criador:
• Cria, compartilha, colabora, ajuda!
www.gotaskfly.com
www.gotaskfly.com
Sabe o que eu mais ouço
quando alguém quer trabalhar
um projeto que está no GitHub ?
www.gotaskfly.com
www.gotaskfly.com
www.gotaskfly.com
www.gotaskfly.com
• Fork
• Clone
• Download
www.gotaskfly.com
• [Fork] – copie para sua conta!
• Branch
• Commit / Push
• Pull Request
• Review
• Deploy
• Merge
www.gotaskfly.com
• É uma cópia do repositório para sua conta
• Se for colaborar no projeto, faça um fork, isto permite que você trabalhe “isolado”, podendo
enviar suas alterações através de um Pull Request (PR)
• Só não esqueça de atualizar seu repositório, afinal o projeto principal está “andando”!
• No seu repositório, você pode fazer qualquer tipo
de operação, o que pode não ser possível no principal
www.gotaskfly.com
• É um “nome/label” para uma alteração ou funcionalidade
• Pode ser utilizado para criar ambientes e também versões
• Mas isto dá muito trabalho, vamos fazer direto na master!!!
• Jamais trabalhe na branch master!!!
www.gotaskfly.com
• Uma das grandes vantagens do Git é o versionamento local
• Isto quer dizer que você pode fazer um Clone de um projeto e trabalhar localmente, fazendo e
desfazendo diversos commits
• Para finalmente enviar um Push e um Pull Request
• Lembre-se que todo o histórico de commits será enviado para o repositório principal
• Se você quiser limpar um pouco os comentários dos commits poderá usar “squash”. Isto facilita a
revisão do PR (https://git-scm.com/book/pt-br/v1/Ferramentas-do-Git-Reescrevendo-o-Hist%C3%B3rico)
• Por favor coloque comentário no seu commit, mas um que faça sentido! De preferência vincule com
uma #issue
www.gotaskfly.com
• Terminei e agora ?
• Manda um PR...
• E quando dá conflito, o que fazer ?
• E quando tudo está certo ?
www.gotaskfly.com
• Integra suas alterações na branch
• Deu conflito, e agora ?
• Em um projeto colaborativo, isto vai ocorrer em algum momento e você precisa ter uma estratégia!
• Precisa resolver o conflito, é claro! Mas com muito cuidado, pois pode haver perda de dados!
www.gotaskfly.com
• Crie um PR da branch para a master
www.gotaskfly.com
• Está com um problema ? Crie uma Issue!
• Mas seja objetivo e específico! Ninguém tem “bola de cristal”
• Tenha “labels” para identificar as issues
• Issues é o que tem para fazer no projeto!
• Quer colaborar, comece olhando as issues!
www.gotaskfly.com
• Vai publicar uma nova versão ? Crie um release!
• O release é um resumo de tudo o que foi feito naquela versão, incluindo artefatos gerados pelo
projeto!
www.gotaskfly.com
• Criei um projeto e agora tenho muita gente contribuindo!
• É hora de mudar para uma organização!
• Uma organização pode dar mais credibilidade e confiança ao projeto!
www.gotaskfly.com
• Eles orientam quem usa/participa do projeto
www.gotaskfly.com
Vamos a prática!
www.gotaskfly.com
• Crie um processo de build!
• Teste unitário elimina muito trabalho de análise de Pull Request, então faça!
• Tenha uma política de deploy / geração de releases!
• Explique o que seu projeto faz, tenha um README rico!
• Deixe claro sua política de contribuição, isto ajuda quem quer colaborar!
• Escolha a licença correta!
www.gotaskfly.com
• Github
• Git Server
• BitBucket
• Team Foundation Server / Team Services
• GitLab
www.gotaskfly.com
• Visual Studio e Visual Studio Code – www.visualstudio.com
• GitK – faz parte do pacote Git - https://git-scm.com/downloads
• SourceTree - https://www.sourcetreeapp.com/
• GitHub Desktop - https://desktop.github.com/
• E muitas outras: https://git-scm.com/download/gui/windows
• E para vários ambientes: https://git-scm.com/download/gui/linux
www.gotaskfly.com
• https://www.github.com
• https://guides.github.com
Obrigado!
Carlos dos Santos
CDS Informática Ltda.
carlos@cdsinformatica.com.br
www.carloscds.net
@cdssoftware

GitHub Boas Práticas

  • 1.
    Uso e BoasPráticas em Projetos Open Source www.cdsinformatica.com.br
  • 2.
    • Mais de25 anos de experiência no desenvolvimento de software • Responsável por Pesquisa e Desenvolvimento na CDS Informática • Microsoft MVP desde 2008 • Microsoft Regional Director • Um dos criadores do projeto open source CodeCracker: www.github.com/code-cracker • Mantenedor do projeto open source BoletoNet: www.github.com/boletonet • Blog: www.carloscds.net • GitHub: www.github.com/carloscds
  • 3.
    www.gotaskfly.com • Serviço decontrole de versão de arquivos • Mas não somente isto... • Um dos maiores repositórios de código open source • Gratuito para repositórios públicos, mas permite privados também • Oferece uma dinâmica excelente para trabalho em equipe • Permite versionamento offline e sincronização online • Permite várias versões do projeto simultaneamente
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
    www.gotaskfly.com • Readonly: • Sóvou baixar e usar! • Folgado: • Fica achando que o projeto tem um suporte 24x7 • Às vezes fica bravo porque alguém não resolveu na hora! • Colaborador: • Vai usar e também enviar o que melhorar de volta • Criador: • Cria, compartilha, colabora, ajuda!
  • 10.
  • 11.
    www.gotaskfly.com Sabe o queeu mais ouço quando alguém quer trabalhar um projeto que está no GitHub ?
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
    www.gotaskfly.com • [Fork] –copie para sua conta! • Branch • Commit / Push • Pull Request • Review • Deploy • Merge
  • 17.
    www.gotaskfly.com • É umacópia do repositório para sua conta • Se for colaborar no projeto, faça um fork, isto permite que você trabalhe “isolado”, podendo enviar suas alterações através de um Pull Request (PR) • Só não esqueça de atualizar seu repositório, afinal o projeto principal está “andando”! • No seu repositório, você pode fazer qualquer tipo de operação, o que pode não ser possível no principal
  • 18.
    www.gotaskfly.com • É um“nome/label” para uma alteração ou funcionalidade • Pode ser utilizado para criar ambientes e também versões • Mas isto dá muito trabalho, vamos fazer direto na master!!! • Jamais trabalhe na branch master!!!
  • 19.
    www.gotaskfly.com • Uma dasgrandes vantagens do Git é o versionamento local • Isto quer dizer que você pode fazer um Clone de um projeto e trabalhar localmente, fazendo e desfazendo diversos commits • Para finalmente enviar um Push e um Pull Request • Lembre-se que todo o histórico de commits será enviado para o repositório principal • Se você quiser limpar um pouco os comentários dos commits poderá usar “squash”. Isto facilita a revisão do PR (https://git-scm.com/book/pt-br/v1/Ferramentas-do-Git-Reescrevendo-o-Hist%C3%B3rico) • Por favor coloque comentário no seu commit, mas um que faça sentido! De preferência vincule com uma #issue
  • 20.
    www.gotaskfly.com • Terminei eagora ? • Manda um PR... • E quando dá conflito, o que fazer ? • E quando tudo está certo ?
  • 21.
    www.gotaskfly.com • Integra suasalterações na branch • Deu conflito, e agora ? • Em um projeto colaborativo, isto vai ocorrer em algum momento e você precisa ter uma estratégia! • Precisa resolver o conflito, é claro! Mas com muito cuidado, pois pode haver perda de dados!
  • 22.
    www.gotaskfly.com • Crie umPR da branch para a master
  • 23.
    www.gotaskfly.com • Está comum problema ? Crie uma Issue! • Mas seja objetivo e específico! Ninguém tem “bola de cristal” • Tenha “labels” para identificar as issues • Issues é o que tem para fazer no projeto! • Quer colaborar, comece olhando as issues!
  • 24.
    www.gotaskfly.com • Vai publicaruma nova versão ? Crie um release! • O release é um resumo de tudo o que foi feito naquela versão, incluindo artefatos gerados pelo projeto!
  • 25.
    www.gotaskfly.com • Criei umprojeto e agora tenho muita gente contribuindo! • É hora de mudar para uma organização! • Uma organização pode dar mais credibilidade e confiança ao projeto!
  • 26.
    www.gotaskfly.com • Eles orientamquem usa/participa do projeto
  • 27.
  • 28.
    www.gotaskfly.com • Crie umprocesso de build! • Teste unitário elimina muito trabalho de análise de Pull Request, então faça! • Tenha uma política de deploy / geração de releases! • Explique o que seu projeto faz, tenha um README rico! • Deixe claro sua política de contribuição, isto ajuda quem quer colaborar! • Escolha a licença correta!
  • 29.
    www.gotaskfly.com • Github • GitServer • BitBucket • Team Foundation Server / Team Services • GitLab
  • 30.
    www.gotaskfly.com • Visual Studioe Visual Studio Code – www.visualstudio.com • GitK – faz parte do pacote Git - https://git-scm.com/downloads • SourceTree - https://www.sourcetreeapp.com/ • GitHub Desktop - https://desktop.github.com/ • E muitas outras: https://git-scm.com/download/gui/windows • E para vários ambientes: https://git-scm.com/download/gui/linux
  • 31.
  • 32.
    Obrigado! Carlos dos Santos CDSInformática Ltda. carlos@cdsinformatica.com.br www.carloscds.net @cdssoftware