Desenvolvimento de Software Livre. Aspectos Culturais e Tecnológicos



Documentos relacionados
Uso de software livre na indústria. oportunidades e modelos de negócio. Nelson Lago CCSL IME-USP

Empreender com software livre. onde está o dinheiro nesse negócio? FISL'10 Nelson Lago CCSL IME-USP

Uso de software livre na indústria. propriedade intelectual e modelos de negócio. Nelson Lago CCSL IME-USP

Licenças de software livre. descrição, sistematização, compatibilidade e incompatibilidades

Na contramão da História: Copyrights, patentes e software livre

Como contribuir com projetos de software livre

Como contribuir com projetos de software livre

Ferramentas de planejamento e acompanhamento

Controle de Versão de Software. Luiz Jácome Júnior

Gerência de Configuração. Professor: Dr. Eduardo Santana de Almeida Universidade Federal da Bahia

3 Estudo de Ferramentas

Administração de Sistemas Livres. Prof. Lais Farias Alves

GERÊNCIA DE CONFIGURAÇÃO. Isac Aguiar isacaguiar.com.br

Gestão de Modificações. Fabrício de Sousa

Gerenciamento de configuração. Gerenciamento de Configuração. Gerenciamento de configuração. Gerenciamento de configuração. Famílias de sistemas

Controle de Versão com GIT

Introdução 12/06/2012. Software Livre

Universidade de Brasília Faculdade do UnB Gama Engenharia de Software Laboratório LAPPIS

Projeto Você pede, eu registro.

O que é software livre

Energia Open Source. Semana do Gestor de Projectos - APOGEP

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

XP extreme Programming, uma metodologia ágil para desenvolvimento de software. Equipe WEB Cercomp

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Gerência de Requisitos: MPS.BR, BABOK e Agile possuem algo em comum? Uma experiência no Governo com software Open Source

Salvando modificações localmente (commit) Enviando modificações para o servidor (push) Sinalizando versão estável (tag)

Controle de versão e fluxo de trabalho em projetos de desenvolvimento de software

ENGENHARIA DE SOFTWARE I

PREPARATÓRIO RIO PARA CAIXA ECONÔMICA

Versionamento de Código. Núcleo de Desenvolvimento de Software

BrOffice.org. Mantendo a qualidade de software. Klaibson Ribeiro Líder do Gubro-SC

Construindo sítios profissionais com Mambo

Controle de Versão. Prof. Msc. Bruno Urbano Rodrigues.

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Tiago Rodrigo Marçal Murakami

Francielle Santos

Aula 01. Introdução ao Linux

Informática I. Aula Baseada no Capítulo 2 do Livro Introdução a Informática Capron e Johnson

Conteúdo SOFTWARE LIVRE. Terminologia. Histórico de Software Livre. Terminologia: Software livre. Terminologia: Software livre

Software Livre e proprietário: Coexistência de diferentes formas de Licenciamento, interoperabilidade e eficiência na inclusão digital e social.

Leves ou pesadas Incrementais, cascata, lineares... etc. Pro ativas e reativas RAD, SDLC

Desenvolvendo Software Livre com Programação extrema

O modelo Bazar de Produção de Softwares. O caso das Comunidades Virtuais de Software livre.

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Java Programação para Fábrica de Software. Fernando Lozano Consultor 4Linux

Engenharia de Software e Software Livre

CC Montagem e manutenção de hardware Docente: Nataniel Vieira 1 sem Técnico em Informática Roteiro 06: Atividade sobre o Documentário RevolutionOS

Como é o desenvolvimento de Software?

Software. Livre. Será que é isso mesmo que eu quero? João Eriberto Mota Filho Eriberto jun. 10

ISO/IEC 12207: Gerência de Configuração

O que é software livre

O primeiro passo é habilitar acesso externo através de web service a configuração é bem simples e não exige maiores explicações.

Versionamento Ágil com Git

Software livre: solução ou problema? Autores: Prates, C. F., Souza, C. H. F. B., Castro, C. V., Vilela, D. R. G., Almeida, N. M

Channel. Visão Geral e Navegação. Tutorial. Atualizado com a versão 3.9

Criando e Mantendo Projetos Open Source

Projeto 8 Servidor de estatísticas de desempenho on-line da BVS 11 de janeiro de 2005

JVM s Livres. Paloma Costa. javawoman@portaljava.com.br

16:21:50. Introdução à Informática com Software Livre

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Consultoria sobre Joomla!

Data de Lançamento do RFP: 23/05/2005

Licenças Livres. Terry Laundos Aguiar

Online com o Ubuntu. Navegue na web Envie Converse com amigos Acesse máquinas remotas Video conferência

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

Scrum. Gestão ágil de projetos

Software Livre. Acesso ao código fonte Alterar o código fonte Redistribuir Utilizar como desejar

Aprenda, ensine, instale e compartilhe

Introdução ao Git. Laboratório de Programação. Luísa Lima, Pedro Vasconcelos, DCC/FCUP. Março 2015

Gestão em Sistemas de Informação. Profa.: Me. Christiane Zim Zapelini

A Empresa. Alguns Clientes que já utilizam nossa tecnologia.

PORTARIA Nº 178 DE 25 DE OUTUBRO DE 2012.

MINERAÇÃO DE REPOSITÓRIOS DE SOFTWARE LIVRE

Introdução ao Git. Introdução ao GIT. Anderson Moreira. Baseado nos slides disponíveis em http//free electrons.com

CENTRAL DE SERVIÇOS APOIADA EM SOFTWARE LIVRE

CONSULTORIA E SERVIÇOS DE INFORMÁTICA

De uma forma ampla, o profissional egresso deverá ser capaz de desempenhar as seguintes funções:

O e-docs foi testado e homologado pela Microsoft via certificadora internacional Verisign.

Projeto SCCM Implantação do ClearCase e ClearQuest UCM

5 Conclusões 5.1. Síntese do estudo

Controle de Versão com CVS

CONHEÇA. nosso. processo. Para você lançar sua Startup. Semana de descoberta. Semana de desenvolvimento. E depois de tudo pronto?

Transporte compartilhado (a carona solidária)

CC Montagem e manutenção de hardware Docente: Nataniel Vieira 1 sem Técnico em Informática Roteiro 06: Atividade sobre o Documentário RevolutionOS

SAIBA MAIS SOBRE O LINUX E DESCUBRA QUAL DISTRIBUIÇÃO É MELHOR PARA VOCÊ! CURSO

GESTÃO, SINERGIA E ATUAÇÃO EM REDE. Prof. Peter Bent Hansen PPGAd / PUCRS

Softwares Aplicativos. (Capítulo 2)

Análise de Sistemas. Visão Geral: Orientação a Objetos. Prof. José Honorato Ferreira Nunes honorato.nunes@bonfim.ifbaiano.edu.br

PROJETO CEMEA. Um trabalho educacional

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

Sistema Gerenciador de Conteúdo OpenCms: um caso de sucesso no CEFET-MG

Software Livre e Inovação Tecnológica

Arch Linux: simplicidade, eficiência e eficácia juntos em uma distribuição

Introdução a Métodos Ágeis de Desenvolvimento de Software

Software Livre. Islene Calciolari Garcia. 15 de junho de Instituto de Computação - Unicamp

Fundamentos de Teste de Software

Transcrição:

Desenvolvimento de Software Livre Aspectos Culturais e Tecnológicos Prof. Dr. Fabio Kon e Nelson Lago Centro de Competência em Software Livre IME-USP 13/02/2009 - SERPRO 1

Por que Software Livre? Diversas razões para adotar software livre: Software livre como opção ética Software livre e seu impacto na sociedade do futuro Software livre como metodologia tecnicamente interessante - nosso foco aqui, mas não a razão mais importante! 2

Conteúdo Rápida revisão sobre o modelo de software livre e as comunidades envolvidas Licenças de software livre e aspectos legais Processo de desenvolvimento colaborativo Relação com a comunidade Usuários e desenvolvedores externos Boas práticas de desenvolvimento Ferramentas de suporte mais comuns 3

Conteúdo Rápida revisão sobre o modelo de software livre e as comunidades envolvidas Licenças de software livre e aspectos legais Processo de desenvolvimento colaborativo Relação com a comunidade Usuários e desenvolvedores externos Boas práticas de desenvolvimento Ferramentas de suporte mais comuns 4

Por que Software Livre? Software livre permite o compartilhamento de código, otimizando o uso dos recursos Menos duplicação de esforço Menor custo de desenvolvimento Oportunidade para melhoria da qualidade Vários olhos enxergam mais Orgulho pessoal incentiva desenvolvedor a ser mais cuidadoso Vários usuários envolvidos promovem melhorias e relatórios de erros O mercado de desenvolvimento de software livre é um mercado local, interessante para o Brasil 5

Mas... Não basta simplesmente liberar o código SAP DB (MaxDB) entre 2001 e 2004 É preciso também Fomentar a criação de uma Comunidade Interagir e colaborar com a Comunidade Garantir que a colaboração seja bem organizada Sem a Comunidade Os maiores benefícios do SL não serão obtidos Com Comunidade mal gerida Pode trazer mais problemas que vantagens 6

O que é Software Livre Comunidade de software livre é antiga Originalmente informal, depois formal (através da Free Software Foundation) Compartilhamento do código-fonte e troca de idéias Só é possível em um ambiente que facilite a troca de código-fonte Por isso, o crescimento junto com a Internet Explorar o software livre comercialmente envolve trabalhar com a comunidade 7

Comunidades Diversos tipos de pessoas e entidades, com diferentes interesses e pontos de vista, estão envolvidos com software livre Software Livre Free Software Foundation Open Source (Fonte Aberto) OSI Pragmáticos várias empresas Radicais 8

Conteúdo Rápida revisão sobre o modelo de software livre e as comunidades envolvidas Licenças de software livre e aspectos legais Processo de desenvolvimento colaborativo Relação com a comunidade Usuários e desenvolvedores externos Boas práticas de desenvolvimento Ferramentas de suporte mais comuns 9

Tipos de licenças Diferentes visões sobre o modelo ideal para o software livre, que se traduz em diferentes licenças 3 tipos principais de licenças: Recíprocas totais (GPL e assemelhadas): o software é livre, deve permanecer livre e trabalhos derivados devem ser também livres Recíprocas parciais (LGPL, MPL e assemelhadas): o software é livre e deve permanecer livre, mas trabalhos derivados não precisam ser livres Permissivas (Apache, MIT/X11, BSD e assemelhadas): o software é livre, mas pode ser relicenciado sem permissão adicional do autor 10

A licença GPL 60% do código de uma distribuição típica é GPL A segunda licença mais popular é a LGPL, com 7% GPL só versa sobre a distribuição; qualquer uso é permitido, incluindo combinações com software fechado Por ser uma licença, não depende de assinatura Violar a GPL é violar a lei de Copyright É impossível distribuir código GPL legalmente sem aceitar a GPL, independentemente de sua validade legal 11

Compatibilidade entre licenças Diferentes licenças impõem diferentes condições Problemas de compatibilidade são comuns com a GPL, por causa do mecanismo de copyleft Muitas vezes, detalhes legais, como cláusulas que defnem um foro específco para resolução de confitos OSI classifca várias licenças explicitamente como redundantes Muitas são equivalentes em intenção, mas ainda assim incompatíveis Solaris e Linux não podem usar código um do outro por incompatibilidade entre as licenças 12

Compatibilidade entre licenças Identifcar compatibilidade ou não entre licenças é complexo e pode haver impacto legal Vale muito a pena ser compatível com a GPL - Facilidade para agregar código alheio - Difcilmente há boa razão prática para não ser compatível - Compatibilidade pode ser de mão-única (como no caso do FreeBSD X Linux) Problemas podem ser sutis O uso da Qt (não-livre na época) pelo KDE - Teoricamente, KDE só pode ser distribuído sob a GPL3 openssh: código livre é livre para sempre Mplayer e sistemas embarcados Tivoization 13

Conteúdo Rápida revisão sobre o modelo de software livre e as comunidades envolvidas licenças de software livre e aspectos legais Processo de desenvolvimento colaborativo Relação com a comunidade Usuários e desenvolvedores externos Boas práticas de desenvolvimento Ferramentas de suporte mais comuns 14

O processo de desenvolvimento de software livre Em projetos de software livre, os papéis de desenvolvedor, usuário, gerente de projeto, muitas vezes se confundem Só é possível liderar quando outros estão dispostos a seguir As questões éticas são importantes para a comunidade As questões técnicas também são importantes para a comunidade Planos, decisões, metodologias e aspectos técnicos precisam ser negociados Mudanças de rumo imprevistas podem ocorrer e devem ser encaradas com naturalidade 15

O processo de desenvolvimento de software livre Alguns princípios de A catedral e o bazar : Programas nascem (e se desenvolvem) por necessidades pessoais (scratch an itch) Escrever bom código vs. reutilizar bom código Usuários são co-desenvolvedores Distribuir logo e com frequência (release early, release often) Com vários olhos, todo bug é evidente (given enough eyeballs, all bugs are shallow) Coordenar contribuições é fundamental 16

Aspectos práticos da relação com a comunidade É importante garantir a motivação dos envolvidos Senso de comunidade A entrada de novos contribuidores deve ser facilitada A saída abrupta de contribuidores não deve ser um problema 17

Aspectos práticos da relação com a comunidade Patches, relatos de erros e outras contribuições externas devem ser recebidos com atenção e retorno rápido Notifcar usuário quando um relato de erro foi recebido Informar usuário quando o erro foi corrigido Decidir rapidamente sobre se e quando incorporar uma contribuição externa e responder ao colaborador Responder dúvidas de colaboradores externos com agilidade O usuário é seu amigo! 18

Conteúdo Rápida revisão sobre o modelo de software livre e as comunidades envolvidas licenças de software livre e aspectos legais Processo de desenvolvimento colaborativo Relação com a comunidade Usuários e desenvolvedores externos Boas práticas de desenvolvimento Ferramentas de suporte mais comuns 19

O código no dia-a-dia O código precisa ser claro e bem modularizado Facilita a leitura por novos contribuidores e por eventuais contribuidores Facilita que mudanças sejam feitas sem conhecimento completo do código Testes automatizados facilitam alterações Nenhum código é intocável: refatoração deve ser rotineira Integração contínua é fundamental, caso contrário nenhum contribuidor externo será capaz de participar do processo (release early, release often) 20

O código no dia-a-dia A documentação não precisa ser extensa, mas precisa estar correta e atualizada A utilidade principal da documentação é facilitar a vida dos novos contribuidores Formalidade, explicações referentes a processos internos de defnição de características, etc. não são relevantes Melhor qualidade que quantidade 21

O código no dia-a-dia Propriedade coletiva do código Todos são responsáveis por tudo Todos conhecem pelo menos superfcialmente tudo Sem entraves burocráticos para modifcar qualquer parte do código Show me the code A maneira mais fácil de acabar com discussões intermináveis Diferentes soluções podem ser experimentadas na prática 22

Conteúdo Rápida revisão sobre o modelo de software livre e as comunidades envolvidas licenças de software livre e aspectos legais Processo de desenvolvimento colaborativo Relação com a comunidade Usuários e desenvolvedores externos Boas práticas de desenvolvimento Ferramentas de suporte mais comuns 23

Ferramentas de apoio: gerência de relatos de erros Gerenciadores de erros/problemas/solicitações Bug trackers (bugzilla, trac) Feedback automático Acompanhamento e histórico Visão geral do estado do projeto Facilidade em reportar novos erros Facilidade em identifcar erros repetidos Garante que um erro não será esquecido ou abandonado 24

Ferramentas de apoio: meios de comunicação Comunicação e documentação Listas de discussão - Latência - Todos leem - Histórico, inclusive na Web - Bom para grandes discussões IRC - Imediato - Sem histórico útil - Bom para resolver dúvidas rápidas Wiki - Solução simples para manutenção da documentação Fóruns - Pouco usados, mas similares às listas de discussão 25

Ferramentas de apoio: gerência de tarefas e projetos XPlanner Usado localmente no CCSL com grande sucesso 26

Ferramentas de apoio: controle de versões Gerência de versões CVS - Vale muito a pena migrar para subversion Subversion (svn) - Estável, rápido e versátil - Muito usado 27

Ferramentas de apoio: controle de versões Mas a nova onda são os sistemas descentralizados Mais fácil realizar integração (merges) Mais fácil manter versões experimentais do código (branches) Mais fácil incorporar alterações de colaboradores fora do time principal Mais fácil escolher arroz Melhor manutenção do histórico 28

Ferramentas de apoio: controle de versões Fluxo de trabalho ligeiramente diferente Cada desenvolvedor tem uma cópia completa do repositório Commits são realizados localmente, guardando histórico individual Uma mesma alteração pode ser mesclada múltiplas vezes A cada operação de mescla, a operação é registrada como um único commit, mas os commits individuais que a compõe continuam no histórico como subcommits Desenvolvedores podem trabalhar sem acesso de escrita ao repositório principal 29

Ferramentas de apoio: controle de versões Git Desenvolvido originalmente por Linus Torvalds Usado no kernel do Linux, Ruby on rails e outros O mais rápido para repositórios grandes Bazaar Desenvolvido pela canonical (ubuntu) Usado pela canonical (launchpad, ubuntu) e mysql Mais funcionalidades e mais fexível Mercurial Desenvolvido independentemente Usado pelos projetos da Sun (OpenSolaris, OpenJDK) Bom desempenho, boas funcionalidades 30

Ferramentas de apoio: hospedagem Sourceforge e GForge Hospedagem de projetos com CVS e SVN Código fonte disponível GitHub Hospedagem de projetos com Git Usado pelo Ruby on rails Launchpad Hospedagem de projetos com bazaar Usado pelo Ubuntu e outros Pode funcionar como meta-hospedagem Código será aberto em junho 31

Conclusão O modelo aberto de desenvolvimento pode trazer muitos benefĩcios Qualidade Agilidade Aceitação Mas isso só funciona se há uma comunidade participativa e bem organizada. A escolha de boas ferramentas de apoio pode ajudar signifcativamente (mas não é tudo) 32

O CCSL Centro de Competência em Software Livre do IME/USP Membro da rede internacional QUALIPSO http://ccsl.ime.usp.br Pesquisa e desenvolvimento de SL Pesquisa sobre o ecossistema do SL Palestras, seminários, eventos Cursos Assessoria 33