software livre e código aberto danilo de sousa ferreira fábio luiz leite júnior...

47
Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Upload: alexandre-lacerda-frade

Post on 07-Apr-2016

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Software Livre e Código Aberto

Danilo de Sousa FerreiraFábio Luiz Leite Júnior

{danilo,fabio}@dsc.ufcg.edu.br

Agosto de 2004

Page 2: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Roteiro Introdução

Software Livre Código Aberto Licenças

Modelos de Organização Catedral e Bazar

Sites de suporte SourceForge.net Java.net

Considerações sobre Open Source Software Open Source Software Development

Page 3: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Software Livre Refere-se à liberdade dos usuários executarem,

copiarem, distribuírem, estudarem, modificarem e aperfeiçoarem o software. Mais precisamente, ele se refere a quatro tipos de liberdade, para os usuários do software: Liberdade de executar o programa Liberdade de estudar o programa e adaptá-lo à suas

necessidades Liberdade de redistribuir as cópias Liberdade de aperfieçoar o programa

Ideologia defendida pela comunidade Free Software Foundation GNU/Linux

Page 4: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software A definição de software aberto é um pouco menos

restritiva que a definição de software livre Questões ideológicas

Uma maneira de fazer negócios e uma metodologia de desenvolvimento

Definição Distribuição Livre

A licença não deve restringir a vontade de vender ou dar um software como componente de distribuição, não deve requerer royalties

Código Fonte Derivação de trabalho Integridade do código fonte do autor …

Page 5: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Licenças Distinguir as várias licenças disponíveis,

assim como conceitos abordados por elas Software livre x Software não-livre

Software semi-livre– Software semi-livre é software que não é livre, mas

que vem com permissão para indivíduos usarem, copiarem, distribuírem e modificarem (incluindo a distribuição de versões modificadas) para fins não lucrativos

– Possuem restrições adicionais

Page 6: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Licenças Domínio Publico

Todo software que não está protegido com copyright Freeware

Distribuição de pacotes sem taxação, porém sem acesso ao código fonte

Shareware– Shareware é software que vem com permissão para

redistribuir cópias, mas diz que qualquer um que continue usando uma cópia deve pagar por uma licença

Não é livre ou até mesmo semi-livre

Page 7: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Categorias de Distribuição

Page 8: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Categorias de Distribuição Copyleft

– O software protegido com copyleft é um software livre cujos termos de distribuição não permite que redistribuidores incluam restrições adicionais quando eles redistribuem ou modificam o software.

Para tornar um programa copyleft Primeiro registra o copyright Em seguida é adicionado os termos de distribuição

Copyright usado para garantir a liberdade dos usuários

Page 9: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Copyleft GPL

é um conjunto de termos de distribuição específico para proteger um programa com copyleft.

http://www.gnu.org/licenses/gpl.html LGPL

Aplicado, geralmente, a bibliotecas. http://www.gnu.org/licenses/lgpl.html

FDL Aplicado a manual, livro-texto http://www.gnu.org/licenses/fdl.html

Page 10: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Licenças XFree86 Style

Grupo de licenças que não são copyleft, são baseadas nas Licenças BSD.

O redistribuidor pode acrescentar restrições Licenças do grupo FreeBSD, XFree86, X11 Exemplo: X Window System (X11)

Page 11: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Compatibilidade de Licenças

Page 12: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Modelos de Organização Modelo Catedral

Modelo seguido pelas grandes empresas de software proprietário, onde se tem equipes de desenvolvedores, projetistas, gerentes que trabalham de uma maneira mais fechada ao ambiente externo

Funcionalidades do software são controlados por projetistas, pressões de mercado, possivelmente dirigido por um departamento de marketing

Page 13: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Modelos de Organização Modelo Bazar

Estilo adotado no desenvolvimento do Linux, com características diferentes do modelo catedral, que inspirou vários modelos de desenvolvimento opensource

Funcionalidades orientadas pelos usuários, especialmente, desenvolvedores.

Evolução ocorre de acordo com a disponibilidade dos programadores

Page 14: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Modelo Bazar Modo de tratamento dos usuários

Tratá-los como co-desenvolvedores e/ou beta testers

Liberar cedo e freqüentemente Estimula os usuários Dados olhos suficientes, todos os erros são

triviais, impacta no tempo de depuração

Page 15: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Modelo Bazar Pré-condições

A comunidade nascente de desenvolvedores deve ter algo real para se testar e utilizar

Convencer os possíveis co-desenvolvedores que o código pode evoluir para algo elegante num futuro próximo

O projeto deve ter uma ótima via de comunicação

Boa habilidade do coordenador com comunicação e relacionamento

Page 16: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Sites de Suporte OSD SourceForge.net

É um Web Site de desenvolvimento de software open source e provê um repositório de milhares(mais de 30.000) de projetos

Tem a meta de enriquecer a comunidade Open Source provendo um lugar centralizado para desenvolvedores controlar e gerenciar seus projetos, assim como uma forma de dar visibilidade necessária

Page 17: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

SourceForge.net Services SourceForge Collaborative

Development System (CDS) web tools Conjunto de ferramentas que auxilia no

gerenciamento de equipes virtuais, postar notícias, gerenciar outros serviços providos pelo site

Tracker: Tools for Managing Support Conjunto de ferramentas que ajudam aos

usuários postar bugs, sugestões, submeter patches para revisão

Mailing lists and discussion forums

Page 18: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

SourceForge.net Services MySQL Database Services

Se um projeto necessitar de usar um banco de dados de teste este é provido pelo site

Shell services and compile farm Acesso aos servidores via SSH, pode-se

manipular o conteúdo da página diretamente Acesso à vários sistemas operacionais para

testar e gerar binários de distribuição do software

Project CVS Services

Page 19: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Sites de Suporte OSD Java.net

Site criado para desenvolvedores trocar experiências, compartilhar código e idéias e participar de projetos e comunidades

No Site temos weblogs, espaço para publicar eventos e encontros

Incentivar a colaboração e fortalecer as comunidades

Page 20: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Java.net Acompanhamento do projeto por

Comunity Managers, caso alguma empresa se enteresse pelo projeto o Community Manager apresenta o projeto e contata a equipe

Visibilidade dos projetos mais “movimentados”

Page 21: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Java.net Idéia de categorias de usuários pré-

configurados no sistema Project Owner Developer Content Developer Observer

Serviços providos pelo site Web CVS

Page 22: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Java.net Issue Tracker

Ferramenta de acompanhamento de pendências

Documents & Files Announcements Listas de e-mail Fórum Wiki

Page 23: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Algumas considerações:

Maior confiabilidade; O software é controlado pelos próprios clientes e não

pode ser arbitrariamente modificado por uma decisão do vendedor;

Custos menores; Ciclos de desenvolvimento pequenos; Código com mais qualidade

Incluindo segurança; Tecnicamente, código proprietário está se afundando

por conta das elevadas taxas de erro; Cuidado: Qualidade não significa livre de bugs;

Page 24: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Algumas considerações:

A evidência da superioridade do software de código aberto não está na academia, mas no mundo real;

Ex.: Linux, Apache; Quem perde?

Monopolistas de software e investidores especulativos;

Mito: Desenvolver software de código aberto em escalas

maiores que “projeto de garagem” é insustentável e não é capaz de ter retorno do mercado;

Software de código aberto deve ser mais centrado no serviço do que no produto;

Page 25: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Algumas considerações:

Software de código aberto não se encaixa em qualquer modelo;

Programadores devem ter uma motivação direta;

Esta motivação não se aplica às organizações; Usuários querem soluções estáveis;

Usuários não programadores não devem ser testadores ou debuggers;

A maioria dos softwares de código aberto carecem de aspectos de usabilidade;

Page 26: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Algumas considerações:

Qual o custo da qualidade? Ter centenas ou milhares de programadores

purificando o código é totalmente produtivo; Mas isto não é evidente com trabalho voluntário; Isto é justificável para algumas infra-estruturas

altamente utilizadas;

Page 27: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Development

Ciclo genérico para desenvolvimento de software de código aberto

Page 28: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Development Como processo de criação de software, open

source development (OSD) é incompleto [2]; Alguém deve entender as necessidades/requisitos; Alguém deve projetar uma arquitetura e adaptá-la ao

longo da evolução do produto; Alguém (ou um grupo) deve estar centrada em

coordenar/gerenciar; Suporte e treinamento devem ser fornecidos;

Page 29: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Development

“Qualquer grupo de pessoas (ou indivíduos únicos) desenvolvendo software e oferecendo seus resultados ao

público sob uma licença Open Source”(Open Source Definition)

Algumas Características: Altamente Colaborativo; Geograficamente Distribuído;

Cenário não apresenta favorecimento ao sucesso do projeto devido: Ao número de pessoas envolvidas; Condições de trabalhos destas pessoas;

Page 30: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Development Metas não voltadas para o mercado; Desenvolvedores freqüentemente são

voluntários; Concentração de esforços de acordo com

o interesse do desenvolvedor; Difícil convencimento para execução de

tarefas essenciais; Testes sistemáticos; Reestruturação de código;

Page 31: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Development Cronograma

Imune ao “time-to-market”; Qualidade de código; Padronização do código; Código instável;

2 formas de manter desenvolvimento concorrente: “development” release; “stable” release;

Evolução planejada, testes e manutenção preventiva;

Page 32: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Development Características Marcantes

Colaboração Descentralizada; Liderança; Motivação interna;

Contribuições por razões como: comunidade, status, oportunidades, satisfação pessoal;

Comunicação assíncrona;

Page 33: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Development

Desenv. Convencional Desenv. Open Source

Desenvolvimento Linear ParaleloCusto do Desenv. Alto BaixoOrganização Centralizado Descentralizado Gerência Hierárquica Comunidade Colaborativa

Liderança EmergenteAprendizagem Organizacional

Linear Paralela

Usuários-desenvolvedores

Separados Sobrepostos

Nº de participantes Limitado IlimitadoSistema Fechado AbertoFlexibilidade de plataforma

Baixa Alta

Page 34: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Development

“Equipes virtuais são equipes que enfatizam três fatores básicos: compartilham uma meta ou interesse, estão

geograficamente distribuídos e fazem uso de tecnologias de comunicação e informação para comunicar e gerenciar

interdependências” (Ahuja and Carley 1998)

Relacionamentos múltiplos com diferentes pessoas

Meio convencional de gerência

Necessariamente, não fazem parte da mesma organização

Todos os membros dentro de uma organização

Distribuídos geograficamenteMesmo espaço físicoEquipes VirtuaisEquipes Convencionais

Page 35: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Development Contextos favoráveis:

Comunidades com necessidades de software não satisfeitas;

Comunidades de usuários tecnicamente sofisticada;

Software de infra-estrutura e propósito geral; Contextos desfavoráveis:

Domínios altamente verticais; Domínios altamente competitivos; Domínios de alta segurança; Domínios de alta confiança;

Page 36: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Software Development Porque open source funciona?

Redução de custos de aquisição; Diversidade e escala; Simplificação do processo de colaboração;

Integração efetiva da comunidade de usuários; Divisão do trabalho em alta escala; Pequenos ciclos de feedback; Inversão de conceitos;

Page 37: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Como OSD está afetando o desenvolvimento de software? Mais praticidade

Possibilidade de reutilizar componentes, bibliotecas, frameworks, etc.

Pela perspectiva do desenvolvedor, open source tem 2 propriedades importantes: Código fonte visível; Direito de fazer derivações;

Estas 2 propriedades afetam o produto e o processo de desenvolvimento;

Page 38: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Como OSD está afetando o desenvolvimento de software? Influência no produto:

Impacto mais óbvio Reutilizar elementos de software existentes; 2 benefícios:

O código reusado terá tipicamente mais qualidade; A funcionalidade do elemento reusado será mais

completa; Granularidade do reuso:

Linhas de código, métodos, classes, biblioteca, componentes, ferramentas ou sistemas completos;

Page 39: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Como OSD está afetando o desenvolvimento de software? Influência no produto:

Disponibilidade do código fonte Leva a melhorias, consertos e suporte aos elementos reusados;

Mitigam os riscos com componentes órfãos ou com caminhos evolutivos incompletos;

É preciso ter cuidado com as dependências entre os elementos utilizados;

Reusar componentes também pode afetar o modelo de licença do produto final;

Nenhum processo padrão conjunto de métricas são utilizados para avaliar a qualidade;

Page 40: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Como OSD está afetando o desenvolvimento de software? Influência no processo:

Acesso a ferramentas mais sofisticadas; Se o software reusado não está evoluindo ou

está evoluindo num sentido inconsistente com a necessidade da organização, então a organização deve alocar recursos para contribuir com sua melhoria;

Os elementos de software que estão sendo reusados precisam ser integrados ao processo de desenvolvimento;

Page 41: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Como OSD está afetando o desenvolvimento de software? Influência no processo:

A adoção de práticas de desenvolvimento de código aberto pode causar desatenção:

No plano estratégico; No detalhamento dos requisitos; Nos testes; No suporte;

Page 42: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Projects[8]

Investigação em 80 projetos open source; Linux, Apache, Mozilla, outros.

Características Comuns: Adesão ao Open Source Definition; Desenvolvedores são usuários;

Características Variáveis: Ponto de Partida; Motivação; Comunidade; Suporte ao desenvolvimento de software; Licença; Tamanho;

Page 43: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Open Source Projects

Classificação dos usuários e desenvolvedores open source

Page 44: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Gerência de Configuração Controle de Versão; Gerenciamento de builds; Seleção de Configuração; Gerenciamento de Wokspace; Controle de concorrência; Gerenciamento de mudanças; Gerenciamento de release;

Page 45: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Referências [1] RAYMOND, Eric S. Up from Alchemy. IEEE Software,

January/February 2004. [2] MESSERSCHMITT, David G. Back to the User. IEEE

Software, January/February 2004. [3] WU, Ming-Wei, LIN, Ying-Dar. Open Source Software

Development: An Overview. IEEE Software, June 2001. [4] SPINELLIS, Diomidis, SZYPERSKI, Clemens. How is Open

Source Affecting Software Development? IEEE Software, January/February 2004.

[5] DAFERMOS, George N. Management and Virtual Descentralised Networks: The Linux Project. Disponível em: http://www.firstmonday.dk/issues/issue6_11/dafermos. Acessado em: 10 de Agosto de 2004

Page 46: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Referências [6] ASKLUND, Ulf; BENDIX, Lars. A Study of Configuration

Management in Open Source Software Projects. Lind Institute of Technology.

[7] LIMA, Carlos A.;GUERRA, Fabricio V. Desenvolvimento de Open Source – Gerenciando Equipes Virtuais para Alcançar Bons Resultados. Universidade Federal de Campina Grande, 2003.

[8] GACEK, Cristina; ARIEF, Budi. The Many Meanings of Open Source. IEEE Software, January/February 2004.

[9] GODFREY, Michael W. Evolution in Open Source Software: A Case Study. Proceedings of the International Conference on Software Maintenance, 2000.

Page 47: Software Livre e Código Aberto Danilo de Sousa Ferreira Fábio Luiz Leite Júnior {danilo,fabio}@dsc.ufcg.edu.br Agosto de 2004

Bibliografia Raymond, Eric S.: The Cathedral & the Bazaar,

1998 http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/

Open Source Initiative: The Open Source Definition, http://www.opensource.org/docs/definition.php

GNU Operating System - Free Software Foundation, http://www.fsf.org

http://sourceforge.net/index.php The Source for java Technology Collaboration

http://www.java.net/