SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
ProjetosProjetos
Open Source,Open Source,
Como colaborar?Como colaborar?
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Getting started
● Como começar?
– Iniciar do zero
– Projeto já existente
● Que conhecimentos são necessários?
– Conhecer o projeto!
– Depende da contribuição
● Terminologia
– Fork, branch, repositório, issues, testes, CI, ...
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Como colaborar com um projeto
existente?
● Issues
– Bug report
– Feature request
● Código
– Testes
● Documentação
– Traduções
● Divulgação
– Avaliação
● Uso
– Relatos (e.g. blog)
– Criação de “plugins”
● Doações
● ...
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Issues
● Bug report
– Reprodutibilidade!
– Versão usada
– Resultado e expectativa
– Passos que reproduzem
o bug
● Anexar dados utilizados
nos passos
– Exemplo:
http://savannah.gnu.org/b
ugs/?func=detailitem&item
_id=42519
● Feature request
– Público-alvo / potencial de
utilização
– Compatibilidade com o
que existe
– “Design” da mudança
● Outras propostas
– Pull-requests
– Otimização
– Fusão de projetos
– ...
Não precisa [saber]
programar!
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Divulgação e avaliação
● Stars / likes
– Aumentam visibilidade
● Relato de uso
– Blog
– YouTube
– ...
● Material didático
– Tutoriais
– Livros
– Vídeo-aulas
– Cursos
https://github.com/explore
Traduções?
EVENTOS!
Agitar a galera!
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
ÉÉ
precisopreciso
ver aosver aos
poucos!poucos!
Git
Controle de versão distribuído●
git initgit init
– Cria um repositório no diretório atualCria um repositório no diretório atual
●
git addgit add
– Marca um arquivo como “staged” para “commit”Marca um arquivo como “staged” para “commit”
●
git commitgit commit
– Insere uma atualização no repositório na forma de um “commit” com os dados “staged”. Parâmetro “-a” para todasInsere uma atualização no repositório na forma de um “commit” com os dados “staged”. Parâmetro “-a” para todas
as modificações de arquivos já inseridos.as modificações de arquivos já inseridos.
●
git pullgit pull
– Obtém os dados do remote, atualizando o repositório localObtém os dados do remote, atualizando o repositório local
●
git pushgit push
– Atualiza (append-like) a branch (ramificação) no servidor (remote) com os dados locaisAtualiza (append-like) a branch (ramificação) no servidor (remote) com os dados locais
●
git resetgit reset
– Limpa a área de “staging” ou retrocede commits (não usar após push)Limpa a área de “staging” ou retrocede commits (não usar após push)
●
git remotegit remote
– Insere um host (servidor) para “push”Insere um host (servidor) para “push”
●
git configgit config
– Altera configurações (usuário, e-mail, editor padrão para mensagens dos commit, etc.). 3 níveis: local (repositório),Altera configurações (usuário, e-mail, editor padrão para mensagens dos commit, etc.). 3 níveis: local (repositório),
usuário e global (sistema)usuário e global (sistema)
●
git statusgit status
– Exibe informações sobre o que está “staged”, arquivos alterados e arquivos que estão no diretório mas nãoExibe informações sobre o que está “staged”, arquivos alterados e arquivos que estão no diretório mas não
pertencem ao repositóriopertencem ao repositório
●
git loggit log
– Exibe as mensagens e outros detalhes dos commits realizadosExibe as mensagens e outros detalhes dos commits realizados
●
git diffgit diff
– Exibe diferenças de código entre commits ou entre o último commit e os dados atuaisExibe diferenças de código entre commits ou entre o último commit e os dados atuais
●
git checkout / branch / merge / mergetool / taggit checkout / branch / merge / mergetool / tag
– Usados em branching, versionamento, etc.Usados em branching, versionamento, etc.
●
……
– fetch, stash, rebase, reflog, subtree, submodule, ...fetch, stash, rebase, reflog, subtree, submodule, ...
● Apareça nos dojos!!!
– https://github.com/Dojo-
SP
● O GitHub fornece os
comandos em várias
situações
– Criação de repositório
– Merge (pull-request)
● Muita documentação
disponível
!!!
https://help.github.com/articles/good-resources-for-learning-git-and-github/
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
GUI para o git?
gitk
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
GitHub
Hospedagem e rede social
● Organizações
● Followers (seguidores)
● Stars (likes/curtidas)
● Histórico de atividades
– News feed
– “Quadradinhos”
● Estatísticas
● Comentários
● Issues
● Watch
● Fork!!!
● “Exibição” do
repositório/diretório
– README
– Markdown: README.md
– reStructuredText: README.rst
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Mais issues!
(Organização no GitHub)
● Status
– Open
– Merged
– Closed
● Issues
– Não fazem parte do
repositório git
– Fazem parte do projeto
no GitHub
● Pull-requests
– Envio de código
– Fork
– Totalmente via interface Web
● Colaboradores
– Podem aplicar mudanças no
código sem usar o
mecanismo de pull-requests
– Mudança no status das
issues
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Fork
● Branch
– Ramificação
– Experimentação
● Merge
– União de branches
● Fork
– Uma “cópia” do projeto
– Pode caracterizar outro
projeto
● Clone
– Cópia [local] do
repositório (git clone)
– Não caracteriza outro
projeto
Fork famoso: pillow (fork que continuou
o PIL - Python Imaging Library)
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Pull-request
“tradição”
1)Fazer um fork do projeto
2)Copiar conteúdo do fork para a máquina local
...git clone / git pull
3)Efetuar a alteração desejada em uma branch do
fork
4)Atualizar conteúdo no fork
...git push
5)Solicitar o PR (pull-request) pela Web UI
...há um “git merge” implícito
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Aspectos sociais das colaborações
(pull-requests e outras issues)
● Alterações no comportamento do software
– Necessário avisar o autor antes de fazer o pull-request (ou
antes de “encostar no código”)
● Bugfix / new feature
– Aviso prévio é opcional, mas permite
● Brainstorming
● Evitar escrever código que será recusado
● Expectativa
● Em certos projetos (e.g. MongoDB), há um contrato
(pessoal) p/ aceitação de PRs
A rigor, a licença já permite a alteração do código. Essa
comunicação se refere à intenção de incorporação de seu
código ao projeto original, i.e., como algo além de um fork.
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Estilo
● Aspectos “cosméticos”
– Evite conflitos!
– Não mande um PR puramente “cosmético” a menos que
isso já esteja combinado com os colaboradores do projeto
● Idioma
– Manter o do projeto, se possível
– Inglês costuma ser adotado na maioria dos projetos
– Isso vale para issues, comentários, nomes de variáveis,
etc.
PEP8?
“Solução” única...
para qual
problema?
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Projetos convidativos a novos
colaboradores
● Sinalização através de issues fáceis (requisitadas pela própria
“equipe” do projeto)
– Estilo (código)
– Tradução
– Gramática/ortografia em comentários e documentação
– Atividades “braçais” / repetitivas / triviais (e.g. inserir shebang em todos os
arquivos de exemplo)
● Talvez automatizáveis com shell script
– Testes
● Incrementar a cobertura de código
– Oneliners
– Documentação extra / novos exemplos
● Auxilia no aprendizado com o ambiente social, com os softwares
envolvidos, etc.
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Stash / Rebase
(comandos do git)
● É muito comum algo ser feito e desfeito entre commits de
uma branch, ou incluir commits separados de “ajustes
cosméticos”
● Estatísticas do GitHub coletam:
– Número de commits
– Linhas inseridas
– Linhas removidas
● É muito fácil ser “cheater”, e PRs de cheaters normalmente
não são bem-vindos
● Stash/rebase podem ser usados para “ajustar” o histórico de
uma branch antes do merge na branch principal
(normalmente “master”)
Minha colaboração no hipsterplotMinha colaboração no hipsterplot
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Iniciar um projeto “do zero”?
● Sem “legado”
● Controle de versão
– Git
– Mercurial
● Experimentação
● Crowdfunding?
– Não pense nisso em
seu primeiro projeto...
● Compatibilidade
– Python 2 ou 3?
● Aonde colocar?
– GitHub
– BitBucket
– Gitorious
– ...
● Que licença utilizar?
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
“Open Source” ou “Free Software”?
● OSI – Open Source Initiative
– http://opensource.org/
● FSF – Free Software
Foundation
– http://www.fsf.org/
– https://gnu.org/
● Critérios e definições do
que é “livre”/”aberto”
● Licenças de software
– GPL, MIT, BSD, etc.
– Compatibilidade
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Licença
● NÃO ESCREVA A SUA!
...a menos que
seja/contrate um
advogado...
● [Strong] Copyleft /
“Share-alike”
– GPL v2 (GNU General
Public License)
– GPL v3
– AGPL (Affero GPL)
● Weak Copyleft
– LGPL (Library/Lesser
GPL)
● Permissivas
– MIT
– BSD
– PSFL (Python
Software Foundation
License)
Wikipedia
tem muita
informação
útil...
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
PyPI – Python
Package Index
● http://pypi.python.org/
● Pacotes/bibliotecas externas
– Muitos projetos possuem o link do repositório
● Recomenda a utilização do pip
● Utilização de arquivos setup.py
● Tags de classificação em “List trove classifiers”
● Quem faz o upload normalmente é o responsável pelo
projeto, e não tem vínculo com o repositório no GitHub
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Testes e Integração Contínua (CI)
● Rodar os testes a cada “push”
– Uma máquina virtual para cada possível ambiente (e.g.
CPython 2.7, CPython 3.4 e PyPy)
– Travis CI
● Cobertura de código
– Coveralls
● Pins
– Permitem registrar em imagens o estado do CI no README do
projeto (como links, contendo relatórios completos)
– PyPI possui pins acerca do número de downloads recente
Danilo J. S. Bellini – @danilobellini – São Paulo – SP
Projetos Open Source, como colaborar? – 2015-03-14
Até a próxima!
● Get started! Outras recomendações:
– GitHub
● https://help.github.com/articles/set-up-git/
● https://help.github.com/articles/create-a-repo/
● https://help.github.com/articles/fork-a-repo
● https://help.github.com/articles/be-social/
– BitBucket
● https://bitbucket.org/ → “Free Git tutorials”
– Gitorious
● https://gitorious.org/about/faq
https://github.com/danilobellini
Vejam meus projetos e falem
comigo caso queiram
colaborar em algum:

Contenu connexe

Tendances

Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPThiago Colares
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvPedro Fernandes Vieira
 
Cake php selecaodeprojetos-apres-em-modelo
Cake php selecaodeprojetos-apres-em-modeloCake php selecaodeprojetos-apres-em-modelo
Cake php selecaodeprojetos-apres-em-modeloCBA2012
 
Github - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoGithub - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoHélio Medeiros
 
Git that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUBGit that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUBHélio Medeiros
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPCBA2012
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errarBruno Calheira
 
Python para programadores Ruby
Python para programadores RubyPython para programadores Ruby
Python para programadores RubyEric Hideki
 
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTWDesvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTWMorganna Giovanelli de Souza
 
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressFerramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressTiago Hillebrandt
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonFabio Spanhol
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com GitVagner Santana
 
Introdução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySPIntrodução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySPSamuel Sampaio
 

Tendances (20)

Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHP
 
Git Overview: Grupo RBS
Git Overview: Grupo RBSGit Overview: Grupo RBS
Git Overview: Grupo RBS
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenv
 
Cake php selecaodeprojetos-apres-em-modelo
Cake php selecaodeprojetos-apres-em-modeloCake php selecaodeprojetos-apres-em-modelo
Cake php selecaodeprojetos-apres-em-modelo
 
Github - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoGithub - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimento
 
Git that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUBGit that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUB
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHP
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Git
GitGit
Git
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errar
 
Python para programadores Ruby
Python para programadores RubyPython para programadores Ruby
Python para programadores Ruby
 
Python WTFAQ?
Python WTFAQ?Python WTFAQ?
Python WTFAQ?
 
My first app django
My first app djangoMy first app django
My first app django
 
Controle de versão e colaboração com Git
Controle de versão e colaboração com GitControle de versão e colaboração com Git
Controle de versão e colaboração com Git
 
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTWDesvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTW
 
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressFerramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
 
Git & GitHub for beginners
Git & GitHub for beginnersGit & GitHub for beginners
Git & GitHub for beginners
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com Python
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
Introdução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySPIntrodução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySP
 

Similaire à (2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?

Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorFelipe Pedroso
 
Workshop sistema de versionamento de código - git
Workshop  sistema de versionamento de código - gitWorkshop  sistema de versionamento de código - git
Workshop sistema de versionamento de código - gitThiago Filadelfo
 
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...IT4biz IT Solutions
 
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...Caio Moreno
 
Controlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitControlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitC. Augusto Proiete
 
Controlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteControlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteComunidade NetPonto
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Tchelinux
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACDanilo Pinotti
 
Fluxo de desenvolvimento de software utilizando Git
Fluxo de desenvolvimento de software utilizando GitFluxo de desenvolvimento de software utilizando Git
Fluxo de desenvolvimento de software utilizando GitBruno Ricardo Siqueira
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Danilo Pinotti
 
Workshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubWorkshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubGilson Junior
 
Git e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilGit e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilTiago Antônio da Silva
 
Pentaho: Inteligência de Negócios utilizando Software Livre @ CONSEGI 2010
Pentaho: Inteligência de Negócios utilizando Software Livre @ CONSEGI 2010Pentaho: Inteligência de Negócios utilizando Software Livre @ CONSEGI 2010
Pentaho: Inteligência de Negócios utilizando Software Livre @ CONSEGI 2010IT4biz IT Solutions
 
Pentaho: inteligência de negócios utilizando software livre
Pentaho: inteligência de negócios utilizando software livrePentaho: inteligência de negócios utilizando software livre
Pentaho: inteligência de negócios utilizando software livreCaio Moreno
 
Git e boas praticas!
Git e boas praticas!Git e boas praticas!
Git e boas praticas!Vitor Silva
 

Similaire à (2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar? (20)

Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
 
Workshop sistema de versionamento de código - git
Workshop  sistema de versionamento de código - gitWorkshop  sistema de versionamento de código - git
Workshop sistema de versionamento de código - git
 
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
 
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
 
Controlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitControlo de Versões Distribuído com Git
Controlo de Versões Distribuído com Git
 
Controlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteControlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto Proiete
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Git básico
Git básicoGit básico
Git básico
 
Fluxo de desenvolvimento de software utilizando Git
Fluxo de desenvolvimento de software utilizando GitFluxo de desenvolvimento de software utilizando Git
Fluxo de desenvolvimento de software utilizando Git
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Workshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubWorkshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHub
 
Git e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilGit e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código Fácil
 
Pentaho: Inteligência de Negócios utilizando Software Livre @ CONSEGI 2010
Pentaho: Inteligência de Negócios utilizando Software Livre @ CONSEGI 2010Pentaho: Inteligência de Negócios utilizando Software Livre @ CONSEGI 2010
Pentaho: Inteligência de Negócios utilizando Software Livre @ CONSEGI 2010
 
Pentaho: inteligência de negócios utilizando software livre
Pentaho: inteligência de negócios utilizando software livrePentaho: inteligência de negócios utilizando software livre
Pentaho: inteligência de negócios utilizando software livre
 
Controle de versão com Git
Controle de versão com GitControle de versão com Git
Controle de versão com Git
 
Git e boas praticas!
Git e boas praticas!Git e boas praticas!
Git e boas praticas!
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 

Plus de Danilo J. S. Bellini

(2018-10-18) [ETEC Uirapuru] Segurança da Informação
(2018-10-18) [ETEC Uirapuru] Segurança da Informação(2018-10-18) [ETEC Uirapuru] Segurança da Informação
(2018-10-18) [ETEC Uirapuru] Segurança da InformaçãoDanilo J. S. Bellini
 
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask AssíncronoDanilo J. S. Bellini
 
(2018-07-14) [Just Python] Números no Python!
(2018-07-14) [Just Python] Números no Python!(2018-07-14) [Just Python] Números no Python!
(2018-07-14) [Just Python] Números no Python!Danilo J. S. Bellini
 
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)Danilo J. S. Bellini
 
(2017-07-22) [TDC] Audiolazy em 2017!
(2017-07-22) [TDC] Audiolazy em 2017!(2017-07-22) [TDC] Audiolazy em 2017!
(2017-07-22) [TDC] Audiolazy em 2017!Danilo J. S. Bellini
 
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)Danilo J. S. Bellini
 
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)Danilo J. S. Bellini
 
(2014-11-05) [PythonBrasil] Testando com py.test e tox
(2014-11-05) [PythonBrasil] Testando com py.test e tox(2014-11-05) [PythonBrasil] Testando com py.test e tox
(2014-11-05) [PythonBrasil] Testando com py.test e toxDanilo J. S. Bellini
 
(2014-10-27) [SETI-UFLA-MG] AudioLazy
(2014-10-27) [SETI-UFLA-MG] AudioLazy(2014-10-27) [SETI-UFLA-MG] AudioLazy
(2014-10-27) [SETI-UFLA-MG] AudioLazyDanilo J. S. Bellini
 
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!Danilo J. S. Bellini
 
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...Danilo J. S. Bellini
 
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)Danilo J. S. Bellini
 
(2013-10-16) [LatinoWare] Processamento de sinais em Python
(2013-10-16) [LatinoWare] Processamento de sinais em Python(2013-10-16) [LatinoWare] Processamento de sinais em Python
(2013-10-16) [LatinoWare] Processamento de sinais em PythonDanilo J. S. Bellini
 
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...Danilo J. S. Bellini
 
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazyDanilo J. S. Bellini
 
(2013-10-17) [LatinoWare] Automatizando o GIMP com Python
(2013-10-17) [LatinoWare] Automatizando o GIMP com Python(2013-10-17) [LatinoWare] Automatizando o GIMP com Python
(2013-10-17) [LatinoWare] Automatizando o GIMP com PythonDanilo J. S. Bellini
 
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3Danilo J. S. Bellini
 

Plus de Danilo J. S. Bellini (20)

(2018-10-18) [ETEC Uirapuru] Segurança da Informação
(2018-10-18) [ETEC Uirapuru] Segurança da Informação(2018-10-18) [ETEC Uirapuru] Segurança da Informação
(2018-10-18) [ETEC Uirapuru] Segurança da Informação
 
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
 
(2018-07-14) [Just Python] Números no Python!
(2018-07-14) [Just Python] Números no Python!(2018-07-14) [Just Python] Números no Python!
(2018-07-14) [Just Python] Números no Python!
 
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
 
(2017-07-22) [TDC] Audiolazy em 2017!
(2017-07-22) [TDC] Audiolazy em 2017!(2017-07-22) [TDC] Audiolazy em 2017!
(2017-07-22) [TDC] Audiolazy em 2017!
 
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
 
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
 
(2014-11-05) [PythonBrasil] Testando com py.test e tox
(2014-11-05) [PythonBrasil] Testando com py.test e tox(2014-11-05) [PythonBrasil] Testando com py.test e tox
(2014-11-05) [PythonBrasil] Testando com py.test e tox
 
(2014-10-27) [SETI-UFLA-MG] AudioLazy
(2014-10-27) [SETI-UFLA-MG] AudioLazy(2014-10-27) [SETI-UFLA-MG] AudioLazy
(2014-10-27) [SETI-UFLA-MG] AudioLazy
 
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
 
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
 
(2014-04-16) [Garoa HC] Strategy
(2014-04-16) [Garoa HC] Strategy(2014-04-16) [Garoa HC] Strategy
(2014-04-16) [Garoa HC] Strategy
 
(2013-12-18) [Garoa HC] AudioLazy
(2013-12-18) [Garoa HC] AudioLazy(2013-12-18) [Garoa HC] AudioLazy
(2013-12-18) [Garoa HC] AudioLazy
 
(2014-03-26) [7masters] AudioLazy
(2014-03-26) [7masters] AudioLazy(2014-03-26) [7masters] AudioLazy
(2014-03-26) [7masters] AudioLazy
 
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
 
(2013-10-16) [LatinoWare] Processamento de sinais em Python
(2013-10-16) [LatinoWare] Processamento de sinais em Python(2013-10-16) [LatinoWare] Processamento de sinais em Python
(2013-10-16) [LatinoWare] Processamento de sinais em Python
 
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
 
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
 
(2013-10-17) [LatinoWare] Automatizando o GIMP com Python
(2013-10-17) [LatinoWare] Automatizando o GIMP com Python(2013-10-17) [LatinoWare] Automatizando o GIMP com Python
(2013-10-17) [LatinoWare] Automatizando o GIMP com Python
 
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3
 

Dernier

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 

Dernier (9)

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?

  • 1. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 ProjetosProjetos Open Source,Open Source, Como colaborar?Como colaborar?
  • 2. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Getting started ● Como começar? – Iniciar do zero – Projeto já existente ● Que conhecimentos são necessários? – Conhecer o projeto! – Depende da contribuição ● Terminologia – Fork, branch, repositório, issues, testes, CI, ...
  • 3. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Como colaborar com um projeto existente? ● Issues – Bug report – Feature request ● Código – Testes ● Documentação – Traduções ● Divulgação – Avaliação ● Uso – Relatos (e.g. blog) – Criação de “plugins” ● Doações ● ...
  • 4. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Issues ● Bug report – Reprodutibilidade! – Versão usada – Resultado e expectativa – Passos que reproduzem o bug ● Anexar dados utilizados nos passos – Exemplo: http://savannah.gnu.org/b ugs/?func=detailitem&item _id=42519 ● Feature request – Público-alvo / potencial de utilização – Compatibilidade com o que existe – “Design” da mudança ● Outras propostas – Pull-requests – Otimização – Fusão de projetos – ... Não precisa [saber] programar!
  • 5. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Divulgação e avaliação ● Stars / likes – Aumentam visibilidade ● Relato de uso – Blog – YouTube – ... ● Material didático – Tutoriais – Livros – Vídeo-aulas – Cursos https://github.com/explore Traduções? EVENTOS! Agitar a galera!
  • 6. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 ÉÉ precisopreciso ver aosver aos poucos!poucos! Git Controle de versão distribuído● git initgit init – Cria um repositório no diretório atualCria um repositório no diretório atual ● git addgit add – Marca um arquivo como “staged” para “commit”Marca um arquivo como “staged” para “commit” ● git commitgit commit – Insere uma atualização no repositório na forma de um “commit” com os dados “staged”. Parâmetro “-a” para todasInsere uma atualização no repositório na forma de um “commit” com os dados “staged”. Parâmetro “-a” para todas as modificações de arquivos já inseridos.as modificações de arquivos já inseridos. ● git pullgit pull – Obtém os dados do remote, atualizando o repositório localObtém os dados do remote, atualizando o repositório local ● git pushgit push – Atualiza (append-like) a branch (ramificação) no servidor (remote) com os dados locaisAtualiza (append-like) a branch (ramificação) no servidor (remote) com os dados locais ● git resetgit reset – Limpa a área de “staging” ou retrocede commits (não usar após push)Limpa a área de “staging” ou retrocede commits (não usar após push) ● git remotegit remote – Insere um host (servidor) para “push”Insere um host (servidor) para “push” ● git configgit config – Altera configurações (usuário, e-mail, editor padrão para mensagens dos commit, etc.). 3 níveis: local (repositório),Altera configurações (usuário, e-mail, editor padrão para mensagens dos commit, etc.). 3 níveis: local (repositório), usuário e global (sistema)usuário e global (sistema) ● git statusgit status – Exibe informações sobre o que está “staged”, arquivos alterados e arquivos que estão no diretório mas nãoExibe informações sobre o que está “staged”, arquivos alterados e arquivos que estão no diretório mas não pertencem ao repositóriopertencem ao repositório ● git loggit log – Exibe as mensagens e outros detalhes dos commits realizadosExibe as mensagens e outros detalhes dos commits realizados ● git diffgit diff – Exibe diferenças de código entre commits ou entre o último commit e os dados atuaisExibe diferenças de código entre commits ou entre o último commit e os dados atuais ● git checkout / branch / merge / mergetool / taggit checkout / branch / merge / mergetool / tag – Usados em branching, versionamento, etc.Usados em branching, versionamento, etc. ● …… – fetch, stash, rebase, reflog, subtree, submodule, ...fetch, stash, rebase, reflog, subtree, submodule, ... ● Apareça nos dojos!!! – https://github.com/Dojo- SP ● O GitHub fornece os comandos em várias situações – Criação de repositório – Merge (pull-request) ● Muita documentação disponível !!! https://help.github.com/articles/good-resources-for-learning-git-and-github/
  • 7. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 GUI para o git? gitk
  • 8. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 GitHub Hospedagem e rede social ● Organizações ● Followers (seguidores) ● Stars (likes/curtidas) ● Histórico de atividades – News feed – “Quadradinhos” ● Estatísticas ● Comentários ● Issues ● Watch ● Fork!!! ● “Exibição” do repositório/diretório – README – Markdown: README.md – reStructuredText: README.rst
  • 9. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Mais issues! (Organização no GitHub) ● Status – Open – Merged – Closed ● Issues – Não fazem parte do repositório git – Fazem parte do projeto no GitHub ● Pull-requests – Envio de código – Fork – Totalmente via interface Web ● Colaboradores – Podem aplicar mudanças no código sem usar o mecanismo de pull-requests – Mudança no status das issues
  • 10. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Fork ● Branch – Ramificação – Experimentação ● Merge – União de branches ● Fork – Uma “cópia” do projeto – Pode caracterizar outro projeto ● Clone – Cópia [local] do repositório (git clone) – Não caracteriza outro projeto Fork famoso: pillow (fork que continuou o PIL - Python Imaging Library)
  • 11. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Pull-request “tradição” 1)Fazer um fork do projeto 2)Copiar conteúdo do fork para a máquina local ...git clone / git pull 3)Efetuar a alteração desejada em uma branch do fork 4)Atualizar conteúdo no fork ...git push 5)Solicitar o PR (pull-request) pela Web UI ...há um “git merge” implícito
  • 12. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Aspectos sociais das colaborações (pull-requests e outras issues) ● Alterações no comportamento do software – Necessário avisar o autor antes de fazer o pull-request (ou antes de “encostar no código”) ● Bugfix / new feature – Aviso prévio é opcional, mas permite ● Brainstorming ● Evitar escrever código que será recusado ● Expectativa ● Em certos projetos (e.g. MongoDB), há um contrato (pessoal) p/ aceitação de PRs A rigor, a licença já permite a alteração do código. Essa comunicação se refere à intenção de incorporação de seu código ao projeto original, i.e., como algo além de um fork.
  • 13. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Estilo ● Aspectos “cosméticos” – Evite conflitos! – Não mande um PR puramente “cosmético” a menos que isso já esteja combinado com os colaboradores do projeto ● Idioma – Manter o do projeto, se possível – Inglês costuma ser adotado na maioria dos projetos – Isso vale para issues, comentários, nomes de variáveis, etc. PEP8? “Solução” única... para qual problema?
  • 14. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Projetos convidativos a novos colaboradores ● Sinalização através de issues fáceis (requisitadas pela própria “equipe” do projeto) – Estilo (código) – Tradução – Gramática/ortografia em comentários e documentação – Atividades “braçais” / repetitivas / triviais (e.g. inserir shebang em todos os arquivos de exemplo) ● Talvez automatizáveis com shell script – Testes ● Incrementar a cobertura de código – Oneliners – Documentação extra / novos exemplos ● Auxilia no aprendizado com o ambiente social, com os softwares envolvidos, etc.
  • 15. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Stash / Rebase (comandos do git) ● É muito comum algo ser feito e desfeito entre commits de uma branch, ou incluir commits separados de “ajustes cosméticos” ● Estatísticas do GitHub coletam: – Número de commits – Linhas inseridas – Linhas removidas ● É muito fácil ser “cheater”, e PRs de cheaters normalmente não são bem-vindos ● Stash/rebase podem ser usados para “ajustar” o histórico de uma branch antes do merge na branch principal (normalmente “master”) Minha colaboração no hipsterplotMinha colaboração no hipsterplot
  • 16. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Iniciar um projeto “do zero”? ● Sem “legado” ● Controle de versão – Git – Mercurial ● Experimentação ● Crowdfunding? – Não pense nisso em seu primeiro projeto... ● Compatibilidade – Python 2 ou 3? ● Aonde colocar? – GitHub – BitBucket – Gitorious – ... ● Que licença utilizar?
  • 17. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 “Open Source” ou “Free Software”? ● OSI – Open Source Initiative – http://opensource.org/ ● FSF – Free Software Foundation – http://www.fsf.org/ – https://gnu.org/ ● Critérios e definições do que é “livre”/”aberto” ● Licenças de software – GPL, MIT, BSD, etc. – Compatibilidade
  • 18. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Licença ● NÃO ESCREVA A SUA! ...a menos que seja/contrate um advogado... ● [Strong] Copyleft / “Share-alike” – GPL v2 (GNU General Public License) – GPL v3 – AGPL (Affero GPL) ● Weak Copyleft – LGPL (Library/Lesser GPL) ● Permissivas – MIT – BSD – PSFL (Python Software Foundation License) Wikipedia tem muita informação útil...
  • 19. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 PyPI – Python Package Index ● http://pypi.python.org/ ● Pacotes/bibliotecas externas – Muitos projetos possuem o link do repositório ● Recomenda a utilização do pip ● Utilização de arquivos setup.py ● Tags de classificação em “List trove classifiers” ● Quem faz o upload normalmente é o responsável pelo projeto, e não tem vínculo com o repositório no GitHub
  • 20. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Testes e Integração Contínua (CI) ● Rodar os testes a cada “push” – Uma máquina virtual para cada possível ambiente (e.g. CPython 2.7, CPython 3.4 e PyPy) – Travis CI ● Cobertura de código – Coveralls ● Pins – Permitem registrar em imagens o estado do CI no README do projeto (como links, contendo relatórios completos) – PyPI possui pins acerca do número de downloads recente
  • 21. Danilo J. S. Bellini – @danilobellini – São Paulo – SP Projetos Open Source, como colaborar? – 2015-03-14 Até a próxima! ● Get started! Outras recomendações: – GitHub ● https://help.github.com/articles/set-up-git/ ● https://help.github.com/articles/create-a-repo/ ● https://help.github.com/articles/fork-a-repo ● https://help.github.com/articles/be-social/ – BitBucket ● https://bitbucket.org/ → “Free Git tutorials” – Gitorious ● https://gitorious.org/about/faq https://github.com/danilobellini Vejam meus projetos e falem comigo caso queiram colaborar em algum: