Como participar de um projeto de software livre Antonio Terceiro http://softwarelivre.org/terceiro Identi.ca: @terceiro Twitter: @aterceiro - Quem aí é, ou quer ser, programador? - Vamos falar de todas, ou de boa parte das formas de participar em um projeto de SL - Todas elas são importantes - Mas estamos na trilha de desenvolvimento - Então vamos dar um pouco mais de atenção às formas que envolvem programação
Sobre mim - Participação em vários projetos, tanto liderando quando mandando patches esporádicos - Debian, Foswiki, Noosfero, analizo, awesome e outros - doutorado - Foco: falar sobre os meus erros - T++ - erro: querer começar o próprio projeto - pstreams p/ Debian: erro de empacotar um software que você não usa
Por quê participar?
Aprender
Trabalhar - Desempenhar um trabalho - Conseguir um trabalho - Eu tenho a sorte de trabalhar diretamente com software livre → MOSTRAR FIGURAS! - Quem quiser saber um pouco mais pode vir amanhã na palestra “Contribuindo com o Noosfero”
Brincar
Todas as alternativas anteriores ;-)
A estrutura social de um projeto de software livre
Core and periphery in free software projects Initiator Release Coordinator Passive users Active users Co-developers Core developers - Explicar as camadas - Você tem que “agradar” os caras ali no meio - mas como você descobre quem são eles/elas? The “onion” model. Adapted from [Crowston and Howison, 2005]
Chegue mais - participe dos espaços do projeto - mailing list, IRC, forum, etc etc - a não ser que você queira fazer uma contribuição pontual!
O quê fazer num projeto?
Testar Certifique-se de testar a versão mais atual!
Relatar bugs - Versão mais atual também - Varia de projeto pra projeto - O procedimento provavelmente está documentado - Senão, pergunte
Documentação - Doc para desenvolvedores - Doc para usuários - Procure fazer de forma integrada com o projeto
Trabalhando com tradução - Saiba inglês - Não faça tradução literal - Se aproxime dos times de tradução (GNOME, KDE, times genéricos)
Anatomia de um aqruivo .po - Apesar de vários projetos usarem interfaces gráficas, acho válido mostrar como é um arquivo .po por dentro
Contexto
Texto original
Tradução
Enviando traduções - Única exceção nas contribuições de “código”: enviar arquivo completo, e NÃO UM PATCH. - Quase sempre o patch fica muito maior do que o original, a não ser quando for uma mudança de apenas 1 ou 2 strings. - Comprima o arquivo com gzip
Patches - Patches para consertar bugs - Patches para implementar novas funcionalidades - Patches para melhorar a organização do código - Patches para documentação
Anatomia de um patch
Nome do arquivo
Contexto
Contexto (2)
Linhas removidas
Linhas adicionadas
Criando um patch
Com um SCM $ svn diff > meu.patch $ git format-patch # etc - Aprenda a usar o SCM que o projeto que você quer contribuir usa!
Sem SCM – 1 arquivo $ cp src/a.ext src/a.ext.orig $ hack src/a.ext $ diff -u src/a.ext.orig \ a/a.ext
Sem SCM – 2+ arquivos $ cp -r projeto-x.y.z \ projeto-x.y.z.orig $ hack projeto-x.y.z/* $ diff -Nru projeto-x.y.z.orig \ projeto-x.y.z > meu.patch
Enviando um patch - Depende da cultura do projeto - Lista de discussão - BTS - Comprimir ou não
Aplicando um patch $ patch -p0 < /tmp/meu.patch $ git apply|am /tmp/meu.patch # etc
O que se espera de um bom patch?
Limpo - O patch faz apenas uma coisa - Mal exemplo: consertar um bug e ao mesmo tempo arrumar a indentação - Patch series - Cuidado com editores que mexem na indentação automaticamente!
Revisado - LEIA o seu próprio patch antes de enviar
Testado - testes automatizados - teste manual
Consistente - Fazer uma mesma sempre do mesmo jeito - Evita que o código fique bagunçado - Como coisas parecidas foram feitas no passado - não inclui arquivos gerados automaticamente MAKE CLEAN
Consensual - No caso de patches grandes e/ou que fazem mudanças significativas, normalmente precisa haver um consenso sobre a forma de fazer as coisas - Saudável discutir um patch antes de ter uma versão final dele.
Considerações finais
Tempo Economize o tempo das pessoas
Reputação - Sua contribuição com o projeto é o seu cartão de visita na comunidade - Você será reconhecido por boas contribuições. - Você será ESPECIALMENTE reconhecido por más contribuições
Happy hacking
Hackeia aí, omi! :)