Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Objetivos Posicionamentos Objetivos práticos Propósitos gerais Evidenciação Empírica de um Processo para Contribuição em Projetos de Software Livre e Código Aberto João Henrique Ferreira de Freitas1 1 Pós Graduação em Desenvolvimento de Software Universidade Federal de Lavras Encontro Técnico UFLA, 2008 João Henrique Ferreira de Freitas Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Evidenciação de processo para contribuição em SL/CA Objetivos Posicionamentos Objetivos práticos Propósitos pessoais 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 Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Evidenciação de processo para contribuição em SL/CA Objetivos Posicionamentos Objetivos práticos Definição de termos 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. João Henrique Ferreira de Freitas Relatar, através de uma experiência, um processo e prática para a contribuição e melhoramento em SL/CA; Evidenciação de processo para contribuição em SL/CA 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. 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 Ponto de observações 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 Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Evidenciação de processo para contribuição em SL/CA Objetivos Posicionamentos Objetivos práticos Projeto de SL/CA escolhido João Henrique Ferreira de Freitas Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Evidenciação de processo para contribuição em SL/CA Objetivos Posicionamentos Objetivos práticos Arquitetura geral do Bacula 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. João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA 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 Antes do patch libdbi Vários tipos de SGBDs podem ser suportados; Modular sem dependência de implementação e API; Modular mas dependente de implementação e API de cada SGBD; Ponto único para manutenção e refactoting. Três códigos distintos para manter. Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Evidenciação de processo para contribuição em SL/CA João Henrique Ferreira de Freitas Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades Coleta de dados Evidenciação de processo para contribuição em SL/CA Classificação Ciclo de desenvolvimento Timeline das atividades Taxionomia Buscas no hyperespaço, Internet: Websites; Classificação dos artefatos levantados em três grupos: Estrutural, como são desenvolvidos e organizados; Listas de e-mail públicas; Conteúdo, tipos de artefatos e conteúdos; IRC chats; Artefatos no repositório de controle de versão; Documentação oficial do projeto. João Henrique Ferreira de Freitas Objetivos Posicionamentos Objetivos práticos Após o patch libdbi Somente três SGBDs suportados (Mysql, Postgresql, Sqlite); João Henrique Ferreira de Freitas Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Objetivos Posicionamentos Objetivos práticos Evidenciação de processo para contribuição em SL/CA Padrões de utilização, interação do usuário, desenvolvedores, atualizaçã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, site do projeto João Henrique Ferreira de Freitas Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades Taxionomia, projetos ativos Evidenciação de processo para contribuição em SL/CA Classificação Ciclo de desenvolvimento Timeline das atividades Taxionomia, documentação João Henrique Ferreira de Freitas Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros João Henrique Ferreira de Freitas Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Evidenciação de processo para contribuição em SL/CA Classificação Ciclo de desenvolvimento Timeline das atividades Taxionomia, bugtrack Evidenciação de processo para contribuição em SL/CA 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, guia de desenvolvimento João Henrique Ferreira de Freitas Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Evidenciação de processo para contribuição em SL/CA Classificação Ciclo de desenvolvimento Timeline das atividades Taxionomia, análise dos 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 Taxionomia, testes de regressão João Henrique Ferreira de Freitas Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Evidenciação de processo para contribuição em SL/CA Classificação Ciclo de desenvolvimento Timeline das atividades Taxionomia, listas de discussã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, threads da lista João Henrique Ferreira de Freitas Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades Taxionomia, resumo Evidenciação de processo para contribuição em SL/CA Classificação Ciclo de desenvolvimento Timeline das atividades Desenvolvimento João Henrique Ferreira de Freitas Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Evidenciação de processo para contribuição em SL/CA Classificação Ciclo de desenvolvimento Timeline das atividades Dia a dia de trabalho Testar; Utilizado uma exploração arquitetural do XP; Documentar; Utilizado um modelo de programação exploratória; Analisar. Feedback; Explorar; Implementação Testes de regressão para validações, sempre. João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA 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 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 Classificação Ciclo de desenvolvimento Timeline das atividades Dia a dia de trabalho Testes Análise João Henrique Ferreira de Freitas Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros 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 Evidenciação de processo para contribuição em SL/CA Classificação Ciclo de desenvolvimento Timeline das atividades Dia a dia de trabalho Submissão Discussões João Henrique Ferreira de Freitas João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA 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 Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Classificação Ciclo de desenvolvimento Timeline das atividades Timeline Aprendizado: Técnico Timeline do desenvolvimento Data Submissões Data Integração 20071207 Exploração Arquitetural 20080111 20080118 20080201 20080202 20080212 20080213 20080219 20080222 20080221 20080227 20080225 20080415 Desenvolvimento 20080317 20080415 20080409 20080409 20080414 20080415 20080427 20080427 20080502 Exploração Arquitetural: Desenvolvimento: Orçadas 64h 168h Revision Aprofundamento em C/C++; Atenção a refactoring; 6358 6413 6464 6498 6825 6826 6817 6818 6874 Leitura de código fonte aprimorado; Entendimento do domínio do problema; Conhecimento em ferramentas de suporte (autoconf, automake, libtool, Makefiles). Trabalhadas 59.89h 118h João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA Página 1 Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Aprendizado: Engenharia de Software Aprendizado: Pessoal Na prática: Testes de regressão; Escrita e leitura em inglês; Construir para verificação; Exposição de idéias em inglês; Aderência a padrões; Diálogos constantes com pessoas de outros países. Modularidade; João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA 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 Introdução Exposição da Experiência Aprendizados Conclusão Trabalhos Futuros Processo geral de contribuição 1 2 3 4 5 6 7 Alguém reporta um bug ou solicita uma nova funcionalidade; O item se torna prioridade, muitos usuários comentam, endoçam; Há uma discussão sobre o item mais aprofundada; Alguém posta um patch, levantando uma incerteza sobre o mesmo; Desenvolvedores testam e comentam o patch, caso ele resolva o problema; O patch é revisto e formalmente testado; 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 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 Dentro das comunidades de SL/CA 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. João Henrique Ferreira de Freitas Conclusões do Trabalho Evidenciação de processo para contribuição em 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. 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 Contato João Henrique Ferreira de Freitas [email protected] http://joaohff.pbwiki.com http://joaohf.livejournal.com João Henrique Ferreira de Freitas Evidenciação de processo para contribuição em SL/CA