Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros
Evidenciação Empírica de um Processo para
Contribuição em Projetos de Software Livre e
Código Aberto
João Henrique Ferreira de Freitas
1
1
Pós Graduação em Desenvolvimento de Software
Universidade Federal de Lavras
Encontro Técnico UFLA, 2008
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Objetivos Posicionamentos Objetivos práticos
Propósitos gerais
Relatar, através de uma experiência, um processo e
prática para a contribuição e melhoramento em SL/CA;
Responder a pergunta principal do trabalho: Como
colaborar efetivamente?
Três projetos iniciais:
Tikiwiki;
Pfsense;
Bacula;
Apenas um escolhido para as experiências.
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Objetivos Posicionamentos Objetivos práticos
Propósitos pessoais
Aumentar o conhecimento em desenvolvimento de
software;
Colaborar com o desenvolvimento de um produto
internacional;
Implementar e resolver necessidades referentes as
funcionalidades desejadas do software escolhido.
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Objetivos Posicionamentos Objetivos práticos
Definição de termos
Colaboração
submissão de patchs que são definidos como
mudanças, consertos ou melhoramentos
contendo código fonte, documentação e
processos;
Projeto de SL/CA
é uma organização virtual centrada em torno
de um código fonte, com participação espontânea
e variável de pessoas.
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Objetivos Posicionamentos Objetivos práticos
Ponto de observações
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Objetivos Posicionamentos Objetivos práticos
Objetivos práticos
Contribuir implementando um novo recurso de
interfaceamento com SGBDs para o projeto escolhido;
Referenciado no trabalho como patch libdbi;
Atravez da experiência, vivenciamos e capturamos o
processo utilizado durante o desenvolvimento do patch.
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Objetivos Posicionamentos Objetivos práticos
Projeto de SL/CA escolhido
Projeto Bacula (www.bacula.org) devido aos seguintes fatores:
Tempo de atividade: 10 anos;
Segmento da aplicação: meio corporativo e infraestrutura;
Documentação: completa, nivelada e atualizada;
Comunidade formada: usuário, desenvolvedores,
empresas;
Comprometimento.
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Objetivos Posicionamentos Objetivos práticosIntrodução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Objetivos Posicionamentos Objetivos práticos
Antes do patch libdbi
Somente três SGBDs
suportados (Mysql,
Postgresql, Sqlite);
Modular mas
dependente de
implementação e API de
cada SGBD;
Três códigos distintos
para manter.
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Objetivos Posicionamentos Objetivos práticos
Após o patch libdbi
Vários tipos de SGBDs
podem ser suportados;
Modular sem
dependência de
implementação e API;
Ponto único para
manutenção e
refactoting.
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades
Coleta de dados
Buscas no hyperespaço, Internet:
Websites;
Listas de e-mail públicas;
IRC chats;
Artefatos no repositório de controle de versão;
Documentação oficial do projeto.
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades
Taxionomia
Classificação dos artefatos levantados em três grupos:
Estrutural, como são desenvolvidos e organizados;
Conteúdo, tipos de artefatos e conteúdos;
Padrões de utilização, interação do usuário,
desenvolvedores, atualização.
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades
Taxionomia, site do projeto
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades
Taxionomia, projetos ativos
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades
Taxionomia, documentação
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividadesTaxionomia, bugtrack
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades
Taxionomia, guia de desenvolvimento
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades
Taxionomia, testes de regressão
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades
Taxionomia, análise dos testes
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades
Taxionomia, listas de discussão
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades
Taxionomia, threads da lista
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades
Taxionomia, resumo
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento
Timeline das atividades
Desenvolvimento
Utilizado uma
exploração arquitetural
do XP;
Utilizado um modelo de
programação
exploratória;
Testes de regressão
para validações,
Testar;
Documentar;
Feedback;
Explorar;
Analisar.
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimentoTimeline das atividades
Dia a dia de trabalho
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento
Timeline das atividades
Dia a dia de trabalho
Testes
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento
Timeline das atividades
Dia a dia de trabalho
Análise
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento
Timeline das atividades
Dia a dia de trabalho
Discussões
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimentoTimeline das atividades
Dia a dia de trabalho
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento
Timeline das atividades
Timeline
Timeline do desenvolvimento
Página 1
Data Submissões Data Integração Exploração Arquitetural 2007120720080111 Desenvolvimento 20080118 20080201 20080202 6358 20080212 20080213 6413 20080219 20080222 6464 20080221 20080227 6498 20080225 20080415 6825 20080317 20080415 6826 20080409 20080409 6817 20080414 20080415 6818 20080427 20080427 6874 20080502 Orçadas Trabalhadas Exploração Arquitetural: 64h 59.89h Desenvolvimento: 168h 118h Revision
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros
Aprendizado: Técnico
Aprofundamento em C/C++;
Atenção a refactoring;
Leitura de código fonte aprimorado;
Entendimento do domínio do problema;
Conhecimento em ferramentas de suporte (autoconf,
automake, libtool, Makefiles).
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros
Aprendizado: Engenharia de Software
Na prática:
Testes de regressão;
Construir para verificação;
Aderência a padrões;
Modularidade;
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos FuturosAprendizado: Pessoal
Escrita e leitura em inglês;
Exposição de idéias em inglês;
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros
Processo geral de contribuição
1
Alguém reporta um bug ou solicita uma nova
funcionalidade;
2
O item se torna prioridade, muitos usuários comentam,
endoçam;
3
Há uma discussão sobre o item mais aprofundada;
4
Alguém posta um patch, levantando uma incerteza sobre o
mesmo;
5
Desenvolvedores testam e comentam o patch, caso ele
resolva o problema;
6
O patch é revisto e formalmente testado;
7
Quando o patch é considerado aceito, ele é integrado e
liberado na próxima versão.
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros
Conclusões do Trabalho
Cada projeto de SL/CA estabelece seus próprios meios.
Mas existem similaridades entre eles:
Discussões em listas de email públicas;
Gerenciamento do código fonte e configuração;
Desenvolvimento próximo do usuário final.
Os portais dos projetos apresentam muito sobre suas
características e formas de organização;
Existe um caminho pré suposto no qual o usuário
necessita seguir para colaborar efetivamente.
João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros
Conclusões Pessoais
As contribuições são aceitas em projetos de SL/CA. Mas é
necessário bom senso, diálogo intenso, carisma,
entendimento do problema e pró-atividade;
Trabalhe sempre para não quebrar o código já funcional e
com certeza a sua contribuição será aceita.
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros
Dentro das comunidades de SL/CA
Suporte e manutenção do patch libdbi para o projeto
Bacula;
Contribuições no framework libdbi: casos de testes, novos
drivers, profiling e benchmarks;
Continuar pesquisas relacionado a busca de padrões em
projetos de SL/CA.
Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros