Fundamentos de Software Livre Prof. M.Sc. Jansen Sena [email protected] http://www.jsena.info Last revision: 2007, 25th Nov Sobre o professor ● Formação acadêmica – Graduação ● – Mestrado Acadêmico ● ● ● Universidade Federal do Amazonas (Manaus, AM) Instituto de Computação / Unicamp (Campinas, SP) Segurança de redes e administração de sistemas Unix Revista PC&CIA – Colaborador desde 2001 – Coluna Segurança Hightech – http://www.revistapcecia.com.br Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 2 Sobre o professor ● Certificação LPI – ● ● Linux Professional Institute (http://www.lpi.org) Comunidade SOL Software Livre – ONG sem fins lucrativos para promoção do software livre na Região Norte – Encontro de Software Livre do Amazonas – http://www.comunidadesol.org Outras informações – http://www.jsena.info Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 3 Conteúdo Programático ● Histórico do software livre – Contexto geral da época – O que é um hacker? – A história da impressora... – Free Software Foundation e Projeto GNU – Conceitos básicos de software livre – O surgimento do Linux – Porque GNU/Linux? – Software livre versus open source – O que NÃO é software livre? Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 4 Conteúdo Programático ● Tipos de software ● Licenças de software ● Distribuições GNU/Linux – Distribuições majoritárias – Características principais ● Exemplos de outros softwares livres ● Custo Total de Propriedade (TCO) ● Casos de sucesso Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 5 Conteúdo Programático ● Contexto do software livre no Brasil – Governo e iniciativa privada ● Como se ganha dinheiro com software livre? ● Produzindo software livre – Considerações iniciais – Infraestrutura técnica – Recursos financeiros – Comunicação – Gerenciamento de voluntários Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 6 Histórico do Software Livre ● 1945–1960: quem fazia computação? – ● Físicos, engenheiros, matemáticos, ... 1960–1980: consolidação da área – PDP serie da Digital Corporation – Popularização do hardware ● – MIT ● ● Várias universidades adquiriram Laboratório de IA destacase no mundo Foco estava no hardware – Software não tinha valor de negócio Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 7 Histórico do Software Livre ● ● Comunidade de desenvolvedores – Colaborativa – Participativa – Surgimento do conceito hacker – Ausência de licenciamentos de software Hacker – Considerado um elogio – Utilizado para os melhores programadores de Standford, Carnigie Mellon, MIT, ... Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 8 Histórico do Software Livre ● Cultura Hacker... – Coleção de subculturas conectadas – New Hacker Dictionary (1983, Eric S. Raymond) ● ● – Hackers (1984, Steven Levy) ● – Formalizou ética hacker Linguagem hacker ● – Mais de 1200 páginas http://www.ccil.org/jargon/jargon.html Termos próprios para convívio social Regras implícitas de comportamento Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 9 Histórico do Software Livre ● O que é, então, um hacker? There is a community, a shared culture, of expert programmers and networking wizards that traces its history back through decades to the first timesharing minicomputers and the earliest ARPAnet experiments. The members of this culture originated the term ‘hacker’. Hackers built the Internet. Hackers made the Unix operating system what it is today. Hackers run Usenet. Hackers make the World Wide Web work. If you are part of this culture, if you have contributed to it and other people in it know who you are and call you a hacker, you're a hacker. (Eric S. Raymond) Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 10 Histórico do Software Livre ● O que NÃO é um hacker? – Pessoa que... ● ● ● – Termo utilizado e popularizado de maneira errada pela imprensa mundial ● – ...invade computadores ...rouba informações ...danifica sistemas Utilização errônea atingiu os grandes meios de comunicação incluindo os não especializados Outros termos para classificar “falsos hackers” ● Crackers, Black hats, Script kiddies, ... Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 11 Histórico do Software Livre ● A história da impressora... – Richard Stallman, pesquisador do MIT, enfrentou problemas com uma impressora ● ● ● – Equipamento “engolia” papéis... Provocava perda de tempo Jobs acumulados na fila de impressão Qual foi a solução (workaround) ? ● ● Modificou o software da impressora Notificar o usuário sobre situações de printer jammed – ● “The printer is jammed, please fix it.” Somente usuário com impressão parada, levantavase para resolver o problema Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 12 Histórico do Software Livre ● A história da impressora... (continuação) – MIT recebeu nova impressora – Doada pela Xerox – Adaptação de uma fotocopiadora – Equipamento mais rápido que os anteriores, mas tinha o mesmo problema: paper jammed !!! – Stallman descobriu pesquisador da Universidade de Carnigie Mellon que trabalhava no códigofonte ● ● ● Robert Sproull não repassou o códigofonte NDA (Nondisclousure agreement) com Xerox Quebra da Cultura Hacker !!! Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 13 Histórico do Software Livre ● A história da impressora... (continuação) – Novo contexto: NDA com os desenvolvedores – Desarticulação da comunidade colaborativa – 1984: Stallman deixa seu trabalho no MIT – Objetivo: criar e manter uma comunidade de software livre que pudesse continuar compartilhando conhecimento – Foi concecida a possibilidade de continuar utilizando as estruturas do MIT ● Computadores, recursos, ... Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 14 Histórico do Software Livre ● ● Projeto GNU: GNU's Not Unix (1984) – Manifesto GNU (“Free as in Freedom”) – Criação de um sistema operacional livre (Alix/Hurd) – Programas livres como alternativas aos proprietários licenciados recentemente – Primeiro desafio: não existia compilador C livre Stallman cria o GCC (GNU C Compiler) – ● Grande projeção do Projeto GNU 1984: GNU Emacs – 1985: Primeira versão estável Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 15 Histórico do Software Livre ● Programadores solicitavam softwares desenvolvidos pelo Projeto GNU – Fontes disponíveis e aquisição sem custos provocou euforia entre desenvolvedores – Internet não estava consolidada mundialmente – Stallman divulgava softwares do Projeto GNU enviandoos aos interessados ● ● ● U$ 150,00 pelas fitas e manuais Estabelecidos os primórdios do modelo de negócios de software livre Demandas pelos softwares aumentaram significativamente conforme sua popularização Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 16 Histórico do Software Livre ● Criação da Free Software Foundation (FSF) – Fundada em 1985 por Richard Stallman – Organização sem fins lucrativos cujo objetivo é gerenciar o movimento de software livre – Principal patrocinadora do Projeto GNU – Recebe doações de empresas e indivíduos ● ● ● Venda de manuais Camisetas e outros “gifts” Membros e sócios Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 17 Histórico do Software Livre ● Quais são as liberdades de um software livre? – Executar o software para qualquer propósito – Modificar o software conforme suas necessidades ● Garantia de acesso ao códigofonte – Distribuir o software para terceiros – Redistribuir as versões modificadas do software Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 18 Histórico do Software Livre ● Copyleft – Copyright ® All Rights Reserved – Copyleft (L) All Rights Reversed – Don Hopkins :) – Em outras palavras... ● – Utiliza as leis de copyright para garantir as liberdades ao software ● – ... software gerado a partir de software livre também deverá ser de licenciamento livre! Copyright: criado para restringir acesso e utilização Conceito fundamental para garantir “carga genética” do software livre Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 19 Histórico do Software Livre ● GNU GPL (GNU General Public License) – Era necessário criar os mecanismos legais para dar subsídio aos softwares livres – Primeiro e principal mecanismo de licenciamento de softwares livres – Outras licenças copyleft foram criadas pela Free Software Foundation para fins específicos ● GNU LGPL (GNU Lesser General Public License) – ● Viabiliza o uso de bibliotecas de software livre em outros tipos de software que não sejam livres GNU GFDL (GNU Free Documentation License) – Implementa características de software livre para documentos Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 20 Histórico do Software Livre ● Surgimento do Linux – Minix = Minimal + Unix ● ● ● Sistema operacional concebido por Andrew S. Tanembaum Objetivo: exemplificar conceitos apresentados em seu livro “Operating Systems: Design and Implementation” (1987) Aproximadamente, 12.000 linhas de código – – – ● ● Kernel Gerenciador de memória File system Autor era constantemente solicitado a incorporar novos recursos e mecanismos Unix exigia o pagamento de licenças de uso Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 21 Histórico do Software Livre ● Surgimento do Linux – Linux = Linus + Unix Linus Torvalds, aluno de graduação na época, implementou uma versão do Minix ● “Just for fun!” ● – Linus liberou o códigofonte na Internet para mostrar trabalho e angariar colaboradores voluntários – 25 de agosto de 1991: post em comp.os.minix – Implementado sobre plataforma 80386 – Número elevado de colaboradores fez o sistema ganhar “vida própria” Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 22 Histórico do Software Livre ● 1991: surge o pingüim... – Setembro/1991: versão 0.01 é liberada ● 10.239 linhas de código – Outubro/1991: versão 0.02 é liberada – Dezembro/1991: versão 0.11 é liberada – Linus licenciou Linux sob os termos da GNU GPL – Características técnicas ● ● ● ● Não possuía suporte à rede e à muitos periféricos Sistema “conceitual”, acadêmico e muito restrito Mecanismo de memória virtual era limitado Minix file system era a única alternativa Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 23 Histórico do Software Livre ● 1992: versão 0.95 – ● Primeira versão a suportar ambiente X 1994: lançada a versão 1.0 (14 de março) – Maior release desde o lançamento do sistema – Sistema estava com, 165.000 linhas de código – Outras novidades... ● ● ● Novo sistema de arquivos/arquivos mapeados em memória Suporte à rede (pilha TCP/IP baseada nos sistemas BSD) Muitos programas Unix foram traduzidos para Linux – ● Utilização do GCC Linus Torvalds passou a coordenar as colaborações Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 24 Histórico do Software Livre ● 1996: liberada a versão 2.0 – Sistema passou a ter 470.000 linhas de código em C e, aproximadamente, 8000 linhas em assembly – Características... ● ● ● ● ● ● ● Suporte a arquitetura de 64 bits Multiprocessamento simétrico (SMP) Novos protocolos de rede: AppleTalk, AX.25, ISDN Montagem remota de Netware e SMB (Samba) Manipulação de dependências nos módulos de kernel Threads de kernel Suporte à vários dispositivos – Grande parte do código dedicada a device drivers Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 25 Histórico do Software Livre ● ● Características gerais do Linux – Multiusuário – Multitarefa – Time sharing – Genérico – Conjunto simplificado de idéias Objetivos – Simplicidade – Generalidade / Versatilidade – Portabilidade / Adaptabilidade Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 26 Histórico do Software Livre ● Versionamento do kernel – Versões terminadas em número... ● ímpar: instáveis – – – ● Não devem ser colocadas em ambientes de produção Adequada para testes de funcionalidades recémimplementadas Exemplo: 2.5 par: estáveis – – Testadas e prontas para ambientes de produção Exemplo: 2.6 Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 27 Histórico do Software Livre ● Por que GNU/Linux? – No início da década de 1990, o kernel do GNU/Hurd não estava pronto e estável – Linux (kernel) foi licenciado sob GNU GPL – Sistema passou a utilizar ferramentas do projeto GNU – Maior contribuição em código vem do projeto GNU – Imprensa convencionou chamar o sistema somente por Linux Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 28 Histórico do Software Livre ● Open source – Movimento fundado por Eric S. Raymond em 1998 ● ● – Prevê a possibilidade de utilizar um programa cujo licenciamento provê acesso ao códigofonte para tornálo software proprietário ● – Open Source Initiative (OSI): http://www.opensource.org Definição: http://www.opensource.org/docs/osd Não incorpora necessariamente o conceito de copyleft Permite distribuição em conjunto de softwares de diferentes naturezas Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 29 Histórico do Software Livre ● Software livre versus open source – OSI é muito mais focado no processo de desenvolvimento distribuído – Recebeu incentivos da indústria por ajudar a compartilhar soluções de interesse comum ● Visto como mais atrativo para a indústria – OSI desconsidera questões éticas da FSF quanto às liberdades inerentes aos softwares livres – Comum encontrar confusão entre os termos Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 30 Histórico do Software Livre ● O que NÃO é software livre? – “Free as in freedom, not like free beer” (RMS) – Imprensa mistura conceitos facilmente – Exemplos: ● ● ● ● ● ● Microsoft Internet Explorer Winzip Acrobat Reader Skype MSN AVG Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 31 Tipos de Software ● Software proprietário – Aquele que não é livre e não possui liberdades – Seu uso, modificação (???), distribuição e redistribuição são proibidas ou requerem autorização – Microsoft EULA (End User License Agreement) ● – Algumas proíbem coexistência com FOSS (Free and Open Source Software) na mesma plataforma Exemplos: ● Microsoft Windows, Oracle, MS SQL Server, Delphi, Corel Draw, Adobe Premier, Adobe Photoshop, Skype, ... Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 32 Tipos de Software ● Software comercial – Software desenvolvido com objetivo de lucro por meio de sua utilização por terceiros – Software comercial NÃO é software proprietário – Lucro não significa somente a venda de licenças de uso como no modelo proprietário ● – Serviços podem ser uma alternativa Software livre pode ser com finalidade comercial Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 33 Tipos de Software ● Software semilivre – Não é livre, mas possui permissões para utilização, modificação e distribuição desde que NÃO seja para fins lucrativos – Não é possível distribuição comercial – Não é possível incluir software semilivre em um sistema operacional livre, por exemplo – Exemplo: PGP Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 34 Tipos de Software ● Software de domínio público – Software não é protegido por copyright – Termo legal significa “sem copyright” – Não possui, portanto, restrições à sua manipulação – Modificação não requer liberação do códigofonte – Livre??? Disponível para utilização??? Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 35 Tipos de Software ● Freeware – Viabilizam distribuição e redistribuição – Modificação não é permitida – Códigofonte não disponível – Estratégia, algumas vezes, utilizada para popularizar o software perante usuários – Exemplo: StarOffice Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 36 Tipos de Software ● ● Shareware – Utilização por tempo determinado – Redução dos recursos totais do aplicativo – Na prática, pessoas desrespeitam licenças Blablablaware (???) – Tipos de licenciamento variados se confundem – Licenças restritivas com características particulares Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 37 Licenças de software ● Copyright – Software, como toda produção intelectual, é protegido por copyright que determina o seu dono – Proprietário do copyright determina suas formas de utilização e distribuição por meio de uma licença – Software livre utilizar modelo de copyright, criado para restringir acesso, para garantir liberdades – Existem muitas licenças disponíveis... ● Detalhes jurídicos complexos e muito discutidos Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 38 Licenças de software ● GNU General Public License (GNU GPL) – Mais popular licença para software livre – Utilização do copyleft é mandatória ● ● Primeira licença a implementar o conceito do copyleft Garante que a “cadeia de liberdade” seja preservada – Licença utilizada pelo Linux e pelos aplicativos desenvolvidos pelo Projeto GNU (e.g. Emacs) – O que é necessário para utilizar? ● ● Incluir referência no códigofonte Adicionar cópia do texto da licença ao pacote Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 39 Licenças de software ● GNU General Public License (GNU GPL) GNU GPL Source Code Não pode misturarse com código proprietário a menos que haja a concordância de todos os responsáveis e colaboradores do software Proprietary Source Code Código proprietário pode ser relicenciado sob os termos da GNU GPL Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 40 Licenças de software ● GNU Lesser General Public License (GNU LGPL) – Criada para resolver o problema de utilização de bibliotecas de software livre em aplicativos proprietários ● ● – GNU GPL obriga que todo aplicativo comercial que utilize bibliotecas licenciadas sob seus termos também seja licenciado com a mesma licença Também conhecida como Library General Public License Pemite que software proprietário utilize os recursos implementados pelo software GNU LGPL... ● ● Desde que não haja modificações no código da própria bilbioteca... ...nesse caso, valem as mesmas condições da GNU GPL Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 41 Licenças de software ● GNU Lesser General Public License (GNU LGPL) – Termos da licença têm provocado confusão – Richard Stallman aconselha a não utilização da GNU LGPL, sugerindo, ao invés, o uso de uma cláusula especial da GNU GPL ● “As a special exception, if you link this library with other files to produce an executable, this library does not by itself cause the resulting executable to be covered by the GNU General Public License. This exception dos not however invalidate any other reasons why th executable file might be covered by the GNU General Public License” Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 42 Licenças de software ● GNU Lesser General Public License (GNU LGPL) GNU GPL Source Code Proprietary Source Code Qualquer modificação no código deve ser tornada pública pelos termos da GNU GPL Qualquer modificação pode permanecer privada e proprietária Aplicação completa (funcional) Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 43 Licenças de software ● GNU Free Documentation License (GNU GFDL) – Aplicar as liberdades de software livre à documentos – Não assume responsabilidade por modificações feitas por terceiros ao documento – Permite a classificação de seções ou partes que sejam “invariantes” – Tipos de distribuição ● ● ● Cópia opaca: produzidas por softwares que geram formatos proprietários Cópia transparente: formato é de conhecimento público A cada 100 cópias do tipo opaca, uma cópia transparente deve ser disponibilizada (online, por exemplo) Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 44 Licenças de software ● Apache Software License – Criada para o licenciamento do Apache Web Server ● Solução mais utilizada para servidores Web no mundo – Similar as licenças do MIT e BSD – Maior particularidade é o fato de que a marca registrada “Apache” não foi licenciada com o software ● – Se mudanças são feitas ao Apache por terceiros, o resultado não pode ser chamado de “Apache” Não utiliza o copyleft Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 45 Licenças de software ● Artistic License – Criada para o licenciamento da linguagem Perl – Licença considera muito confusa e repleta de contradições entre seus termos e especificações – Novos softwares com código aberto (livres ou não), evitam o uso dessa licença – Altenativas ● ● – GNU GPL MIT Não utiliza copyleft Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 46 Licenças de software ● BSD License – Acesso ao códigofonte, distribuição e redistribuição de versões modificadas são permitidas – Código das modificações não precisa ser publicado ● ● Não possui copyleft Versões modificadas podem ser distribuídas sob os termos de uma licença proprietária – Não segue princípios da GNU GPL que favorecem o desenvolvimento em comunidade – Versões antigas requeriam crédito à Universidade da Califórnia pelo uso da licença ● Cláusula foi removida Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 47 Licenças de software ● Mozilla Public License (MPL) – Criada para o licenciamento da versão open source do browser Netscape Navigator – Removeu algumas das restrições da NPL (Netscape Public License) – – Utiliza copyleft Deu origem a muitas outras licenças comerciais para open source Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 48 Licenças de software ● IBM Public License – IBM vem investindo há anos em iniciativas em software livre e open source – Licença copyleft comercial baseada na MPL – Colaboradores do software original ou de suas derivações não podem ser responsabilizados pelos “claims” feitos por terceiros Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 49 Licenças de software ● MIT License – Licença muito simples que não impõe muitas restrições a respeito da utilização do códigofonte – Requisito: o texto da licença deve estar incluso em todas as cópias ou “porções substanciais” do software licenciado sob a MIT License – Usada, geralmente, quando a única intenção é manter a propriedade sobre o código sem importarse muito com a forma de utilização do software – Não utiliza copyleft Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 50 Licenças de software ● Duallicensing – O detentor do copyright pode selecionar mais de uma licença para seu software – Permite que o licenciado escolha a licença que melhor que convir – Duallicensing é uma estratégia para atender clientes que não desejam participar da reciprocidade das licenças de software livre/open source e estão dispostos a pagar para revogar essa característica – Exemplos ● ● Sistema de arquivos ReiserFS KnowledgeTree (DMS) Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 51 Licenças de software ● Duallicensing – Controle do duallicensing requer que colaboradores repassem direitos autorais para o controle dos mantenedores ● ● ● – Atividade complicada para gerenciar Não acontece no caso do Linux FSF aceita receber o controle do copyright Gerenciar direitos autorais é uma das atividades mais complexas de projetos de software livre e open source Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 52 Distribuições GNU/Linux ● ● Liberdades do software livre viabilizam criação de diferentes “sabores” do sistema operacional Quem pode fazer uma distribuição? – ● ● Uma empresa, uma instituição de ensino, uma comunidade de desenvolvedores, um indivíduo, ... Kernel oficial é mantido por uma organização única centralizada O mesmo acontece com outros softwares livres – Mozilla Firefox, Apache, ... Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 53 Distribuições GNU/Linux ● O que é uma distribuição GNU/Linux? – Encapsulamento do kernel e aplicativos – Mecanismo de instalação – Gerenciador de pacotes – Serviços de suporte – Estrutura interna (arquivos, recursos, ...) – Processo de desenvolvimento próprio ● – Regras de conduta Finalidades específicas ● Desktop, servidor, segurança, desenvolvimento, ... Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 54 Distribuições GNU/Linux ● Red Hat Linux – Nacionalidade norteamericaca – Primeira grande distribuição comercial – Suporte profissional da empresa mantenedora – Desenvolvimento de pacotes e “addons” – Criadora de um dos principais mecanismos de empacotamento: RPM (Red Hat Packet Manager) – Por ser norteamericana, está sujeita a restrições para exportação de soluções criptográficas ● Adotado por muitas outras distribuições – Mandriva, YellowDog, Fedora, OpenSUSE, ... Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 55 Distribuições GNU/Linux ● Red Hat Linux (continuação) – Utilizado para certificação de produtos profisionais ● SGDB Oracle – Possui processo de certificação próprio promovido pela empresa responsável – Abandonou o mercado desktop e concentrase no ambiente servidor – Bem suportado por fabricantes de hardware Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 56 Distribuições GNU/Linux ● Fedora – Red Hat descontinou a versão voltada para a comunidade e concentrouse no mundo corporativo ● Red Hat Enterprise – Primeira versão do projeto sucedeu o Red Hat 9.0 – Manutenção: Fedora Project / Patrocínio: Red Hat – Julho de 2003: primeira versão de testes – Março de 2004: primeira versão estável – Distribuição amigável Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 57 Distribuições GNU/Linux ● Debian GNU/Linux – Criada por Ian Murdock – Uma das mais comprometidas com software livre ● Preserva a nomenclatura “GNU/Linux” no nome – Ampla comunidade de desenvolvimento – Repositórios oficiais possuem somente software livre – Suporte para, aproximadamente, 10 plataformas ● – i386, amd64, alpha, sparc, powerpc, arm, mips, hppa, ... Mais de 290GB de software disponíveis ● http://www.debian.org/mirror/size Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 58 Distribuições GNU/Linux ● Debian GNU/Linux – Boa quantidade de documentação (livre) – Versões do Debian ● ● ● – Releases mais lentas... ● ● – Stable: estrutura amplamente testada e estável Testing: próxima versão a ser classificada como stable Unstable: pacotes mais recentes, poucos testes Muitos pacotes disponíveis Rigor dos testes e da qualidade das versões estáveis Comunidade de usuários cresceu ainda mais depois do abandono da versão Red Hat para comunidade Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 59 Distribuições GNU/Linux ● Debian GNU/Linux – Debian CDD ● ● ● – Custom Debian Distribution Incentivo a geração de distros baseadas no Debian Exemplos: Knoppix, Kurumin, Debian CDDBR, Ubuntu(?) Aptget: poderoso gerenciador de pacotes ● ● Manipula dependências Deu origem a outros gerenciadores semlhantes (e.g. yum) Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 60 Distribuições GNU/Linux ● Ubuntu Linux – Baseada no Debian GNU/Linux ● Testing/unstable – Patrocinado pela Canonical Ltd. / Ubuntu Foundation – Uma das distribuições mais populares para desktop ● ● – Mais rapidez no processo de desenvolvimento ● – Comunidade de usuários cresceu rapidamente Alternativa para utilizar estrutura Debian em desktop Somente três plataformas suportadas Estratégia de popularização ● Envio de CDs gratuitamente para vários locais no mundo Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 61 Distribuições GNU/Linux ● Ubuntu Linux – Aproveitou desenvolvedores voluntários do Debian – Incorporação de drivers proprietários em repositório de pacotes específico – Repositórios oficiais... ● ● ● ● ● main: softwares livres suportados oficialmente pela distro restricted: softwares fundamentais (drivers) proprietários universe: restante dos pacotes livres do Debian multiverse: softwares proprietários “nãofundamentais” partners: softwares de parceiros da Canonical Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 62 Distribuições GNU/Linux ● Ubuntu Linux – Deu origem a outras distribuições “irmãs” – Edubuntu: voltado para ensino e educação – Kubuntu: ambiente gráfico KDE (ao invés do Gnome) – Xubuntu: ambiente gráfico “leve” (XFCE) – Gobuntu: somente software livre Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 63 Distribuições GNU/Linux ● Slackware – Criado por Patrick J. Volkerding – Uma das primeiras distribuições criadas ● ● “Todo mundo um dia usou Slackware” Primeira release foi em 16 de julho de 1993 – Mantém simplicidade e originalidade do sistema – Não era uma distribuição voltada para usuários finais – Projeto oficial suporta somente plataforma i386 Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 64 Distribuições GNU/Linux ● Mandriva – Mandriva = Mandrake Linux + Conectiva Linux ● Headquarter em Paris (França) e Centro de Desenvolvimento em Curitiba (Brasil) – Nome Mandrake foi trocado por litígio judicial – Distribuição voltada para usuários finais – Instalação em ambiente gráfico – Pacotes no formato RPM Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 65 Distribuições GNU/Linux ● Suse / OpenSuse – Empresa Suse foi adquirida pela Novell – Nacionalidade original: alemã ● Distribuição bastante popular na Europa – Suse Linux mais voltado para mercado corporativo – OpenSuse: distribuição voltada pra comunidade ● ● Baseada inicialmente no Suse Linux 10.0 Primeira release estável lançada em 06/outubro/2005 – Pacotes de software utilizam formato RPM – Desenvolvimento focado em facilitar utilização Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 66 Distribuições GNU/Linux ● Gentoo Linux – Criado por Daniel Robbins ● – Batizado inicialmente por Enoch Linux (v. 0.75 , Dez/99) Objetivo ● Criar uma distro compilada a partir do seu códigofonte – ● Contendo apenas os componentes básicos Extrair bom resultados do hardware – 31/03/2002: Gentoo Linux 1.0 – Copyrigths transferidos para Gentoo Foundation – Daniel trabalhou pra Microsoft por quase 2 anos Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 67 Distribuições GNU/Linux ● Gentoo Linux (continuação) – Portage: sistema gerenciador de pacotes ● ● – Portabilidade ● ● – Baseado no BSD Ports Collections (FreeBSD) Uma das principais distinções do Gentoo das outras distribuições GNU/Linux Gentoo/FreeBSD, Gentoo/NetBSD, Gentoo/OpenBSD, ... Plataformas: x86, x8664, IA64, PARISC; PowerPC, PowerPC 970, SPARC64, MIPS, DEC Alpha, ARM, System Z/s390, PS3 Cell Processor Instalação baseada em estágios Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 68 Distribuições GNU/Linux ● Dawn Small Linux – Distribuição que cabe em 50MB – Disponibilizada em forma de um Live CD – Pode ser instalado no disco rídigo – Também permite sua instalação em um USB key – Possui ambiente gráfico ● ● ● – Navegador, MP3 player, PDF Reader, Office suite, ... Utilitários de linha de comando Servidor HTTP, SSH e FTP Pode ser utilizado até com 16MB de RAM Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 69 Distribuições GNU/Linux ● Tom's Root Disk Boot Disk (Tom's RTBT) – Distribuição GNU/Linux em um único disquete – Kernel e utilitários básicos – Pode ser utilizada para fazer manutenção em sistemas danificados – Possui ferramentas para transferência de dados, montagem de partições, diagnóstico de discos – Toda documentação é simples (formato ASCII) – Útil em situações críticas Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 70 Distribuições GNU/Linux ● Para conhecer mais distribuições – Distrowatch (http://www.distrowatch.com) – Site mantém um ranking por distribuições mais requisitadas no site – Apresenta página com resumo da distro e informações gerais ● Link para download Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 71 Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 72 Softwares Livres ● OpenOffice.org – Criado em outubro de 2000 com objetivo de criar um pacote livre de software para escritório ● Baseado no StartOffice – Escrito em C++ – Licenciamento LGPL, SISSL – Mais de 20 milhões de downloads registrados – Roda em várias plataformas ● GNU/Linux, FreeBSD, Mac OS, Microsoft Windows Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 73 Softwares Livres ● Samba – Permitiu grande popularização do GNU/Linux em ambientes corporativos ● ● ● ● Substituição dos servidores de arquivos SMB/CIFS Recurso para tornarse PDC (Primary Domain Controller) Integrase com LDAP Transparente para os usuários finais – Criado por Andrew Tridgell – Licenciado sob GNU GPL Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 74 Softwares Livres ● Gnome – Ambiente gráfico desktop ● – Também funciona em FreeBSD e outros Unixes Possui aplicativos próprios ● Browser, gerenciador de arquivos e configurações – Um dos ambientes gráficos majoritários junto com o projeto KDE – Licenciado sob GNU GPL Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 75 Softwares Livres ● KDE – Ambiente gráfico para desktops Linux ● Também funciona em FreeBSD e outros Unixes – 1996: Anúncio oficial do projeto – Também possui conjunto de aplicativos próprios – Interface mais popular para desktops GNU/Linux – Boa quantidade de aplicativos integrados Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 76 Softwares Livres ● Projeto Mozilla – Missão: preservar a escolha e a inovação na Internet – Licenciamento: MPL (Mozilla Public License) – Derivado de soluções criadas pela Netscape – Produtos ● ● ● ● ● Mozilla Firebird Mozilla Thunderbird Bugzilla Camino Sunbird Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 77 Softwares Livres ● MySQL – Servidor de banco de dados ● Versátil, ágil e livre! – Financiado pela empresa MySQLAB – Empresa sediada na Suécia – Duallicensed: GNU GPL e MySQLAB license – Faz parte da arquitetura LAMP ● – Linux, Apache. MySQL e PHP/Python Mais de 4 milhões de instalações ● Yahoo, MP3.com, Motorola, NASA, Silicon Graphics, Finance, Texas Instrument, ... Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 78 Softwares Livres ● PostgreSQL – Outra alternativa livre de servidor de banco de dados – Licenciamento BSD (com modificações) – Início do projeto: 1986 na Universidade de Berkeley – Portabilidade para Linux, FreeBSD e mais 34 versões diferentes de Unix e Microsoft Windows (por meio da utilização do Cygwin) Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 79 Softwares Livres ● Apache – Servidor Web mais utilizado em todo o mundo – Um dos grandes exemplos de software livre de sucesso no mundo corporativo – Disponibilização de novos módulos e recursos – Interface com linguagens como PHP – Histórico de segurança muito superior ao seu principal concorrente (Microsoft IIS) Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 80 Softwares Livres ● Outros projetos... – Free Software Directory ● – SourceForge ● – http://code.google.com Savanahh ● – http://www.sourceforge.net Google code ● – http://directory.fsf.org http://savannah.gnu.org Freshmeat.net ● http://www.freshmet.net Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 81 TCO ● Total Cost of Ownership – ● Custo Total de Proriedade Trocando em miúdos... – Mecanismo para mensurar custos do setor de TI – Software, hardware, humanware, capacitação/treinamento, suporte técnico, infra estrutura de comunicação – Ajuda a detalhar a eficiência e distribuição dos investimentos em tecnologia Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 82 TCO ● TCO deve ser objeto de análises constantes – ● Quem não quer reduzir o TCO? – ● Redução responsável e planejada Redução de custos é uma das maiores motivações para utilização de software livre sob a perspectiva gerencial – ● Estudo chave para saúde corporativa Entretanto, o valor do software livre está na liberdade Portanto, software livre pode reduzir TCO – Parte significativa do TCO advém das licenças de uso Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 83 TCO ● Um exemplo de redução de TCO – Migração de MSWindows para GNU/Linux – Empresa Cybersource divulgou seu estudo ● Primeiro estudo foi divulgado em 2002 – ● Estudo foi atualizado em 2004 – ● – GNU/Linux é 34% mais barato GNU/Linux é 36% mais barato http://www.cybersource.com.au Documento é voltado para análise gerencial ● Visão técnica não convence gerentes e diretores! Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 84 TCO ● O que foi considerado no estudo? – Ambiente de uma empresa de médio porte ● ● ● ● ● ● ● ● ● 250 computadores Servidores e estações de trabalho Conectividade à Internet Sistema de ebussiness Cabeamento de rede Softwares Salários dos profissionais Treinamentos Consultoria externa Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 85 TCO ● Microsoft Windows x GNU/Linux (standard) Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 86 TCO ● Microsoft Windows x Red Hat Linux Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 87 Produzindo software livre ● Considerações iniciais – “Every good work of software starts by scratching a developer's personal itch” (Eric S. Raymond) ● ● http://www.catb.org/~esr/writings/cathedralbazaar/ Em outras palavras, Interesse pessoal em ver o problema resolvido é um ponto chave para iniciar um bom software – A qualidade de um software livre é proporcional ao interesse dos usuários sobre ele e do compromisso de sua comunidade de desenvolvimento – Bons softwares sobrevivem... e se adaptam as novas necessidades e requisitos Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 88 Produzindo software livre ● Como iniciar um projeto de software livre? ● Etapas iniciais – “Look Around” – Primeiros passos – Modelo de licenciamento – Anunciando o projeto à comunidade ● Infraestrutura técnica ● Recursos financeiros ● Gerenciamento de voluntários Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 89 Produzindo software livre ● Etapas iniciais (“Look Around”) – Procure por projetos livres com a mesma finalidade ● Repositórios de software livre conhecidos – – Inicialmente, não procure “reinventar a roda” ● – SourceForge, Freshmeat, Savannah, Google code, ... Exceção: projetos de caráter acadêmico / educacional Mesmo quando não existe uma solução que tenha exatamente a mesma finalidade, considere a possibilidade de colaborar incluindo novas features Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 90 Produzindo software livre ● Etapas iniciais (Primeiros Passos) – Troque visibilidade privada pela visibilidade pública ● Ou seja, não basta somente sua empresa ou instituição tomarem conhecimento do projeto e de seus objetivos – Defina os objetivos específicos do projeto junto com os seus outros fundadores – Identifique suas limitações – Quem irá fazer e quem não irá fazer cada atividade ● ● Ajuda a detectar possíveis desentendimentos da natureza do projeto e de seus objetivos Pode revelar considerações errôneas Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 91 Produzindo software livre ● Etapas iniciais (Primeiros Passos) – Novos colaboradores precisam de subsídios para iniciar suas atividades no projeto – Cenário ideal para novos colaboradores ● ● Documentação do design Manual de usuários completo e atualizado – ● – Incluindo demandas futuras a serem implementadas Código apto para trabalhar em várias plataformas Realidade ● ● Preparar toda documentação requer muito tempo O mínimo para prover informações necessárias iniciais para o engajamento com o projeto Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 92 Produzindo software livre ● Etapas iniciais (Primeiros Passos) – Selecionando um bom nome para o projeto ● ● ● ● Criatividade pode ser um fator decisivo Um bom nome é suficiente para um bom projeto, mas um nome ruim não irá colaborar Deve representar, de alguma maneira, o que o projeto faz Fácil de memorizar – – ● ● ● “Easy for somebody who can read English” (Karl Fogel) Evite regionalismos exagerados Não possui o mesmo nome de outros projetos Não infringe marcas registradas Se possível, com nome de domínio nos top level domains – gnu.org, openoffice.org, samba.org, ... Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 93 Produzindo software livre ● Etapas iniciais (Primeiros Passos) – Compartilhe publicamente a missão do projeto – Deixe explícita a condição de software livre – Divulgue as features e a lista de requisitos ● – Classifique itens futuros como “planned”, “in progress” Indique o status do desenvolvimento ● ● Evita frustrações entre o que se pretende e o que tem Alpha: primeira release com maior parte das features – ● Possui bugs conhecidos e limitações a serem resolvidas Beta: faltam testes para tornarse estável Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 94 Produzindo software livre ● Etapas iniciais (Primeiros Passos) – Software deve estar disponível para download nos formatos mais comuns – Projetos que estão em seu início, não precisam disponibilizar versões dos binários ● Exceções: processo de build complexo e nãotrivial – Download é somente para usuários e para os que desejam ambientarse com o software... – Para novos colaboradores é preciso prover acesso ao serviço de controle de versões e ao bug tracker Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 95 Produzindo software livre ● Etapas iniciais (Primeiros Passos) – Estabeleça os canais de comunicação com os visitantes e interessados ● ● Como contactar os autores e responsáveis pelo projeto Espaços separados para desenvolvedores e usuários – – Não é necessário para projetos em fase inicial Developer Guidelines ● Documento utilizado para orientar novos desenvolvedores quanto as atividades básicas do projeto – – – – Fórums de interação com outros desenvolvedores Código de conduta Instruções para reportar bugs e submissão de patches Esquema de desenvolvimento Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 96 Produzindo software livre ● Etapas iniciais (Primeiros Passos) – Documentação deve estar, preferencialmente, ... ● ● – online para usuários que estão conhecendo o software; e no pacote do software. Manutenção de FAQs é uma boa alternativa ● ● Documentação de leitura rápida Focado em dúvidas comuns de usuários e desenvolvedores – Caso seja possível, disponibilize screenshots – Versões demo online são alternativas que vêm tornandose comuns a projetos mais recentes ● Não requer instalação e download Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 97 Produzindo software livre ● Etapas iniciais (Modelo de licenciamento) – Modelo de licenciamento deve estar de acordo com os propósitos do projeto – Questões relevantes... ● ● É aceitável o código ser utilizado para composição de produtos proprietários? Existirá tipos de clientes diferentes para justificar um dual licensing para o produto? Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 98 Produzindo software livre ● Etapas iniciais (Anunciando o projeto) – Projeto não precisa estar “perfeito” para ser anunciado à comunidade – Onde anunciar? ● ● Exemplo: http://freshmeat.net Listas de discussão e newsgroups relevantes – – Como deve ser o anúncio? ● – Faça um levantamento das alternativas cabíveis Curto, objetivo e de fácil entendimento Direcione futuras discussões e mais informações para as listas, fóruns e documentos do projeto Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 99 Produzindo software livre ● Etapas iniciais (Anunciando o projeto) – Software deve ter versão executável antes do anúncio à comunidade? ● Vantagens – – ● Desvantagem – – Não permite o envolvimento da comunidade desde o início da especificação do software Projetos lançados sem versão executável ● – Separa softwares que possuem iniciativas sérias das “aventuras” Já existe algo pra mostrar e justificar Subversion e Mozilla Não espere por muitos colaboradores no início... Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 100 Produzindo software livre ● Infraestrutura técnica – Mailing lists ● ● ● ● ● Inscrição e remoção por email e por web site Opção de digest mode Funcionalidades de moderação Interface administrativa simplificada Manipulação do cabeçalho da mensagem – ● Mecanismos de arquivamento de discussões – ● ● Configuração do campo “ReplyTo” Repositório Web é mais simples e intuitivo Controle de SPAMs Alternativas: Mailman, Majordomo, Smartlist, ListProc Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 101 Produzindo software livre ● Infraestrutura técnica – Controle de versão ● ● ● ● ● Mantém controle sobre mudanças nos arquivos do projeto Histórico de “commits” Recupera versões anteriores em caso de necessidade Controle de acesso configurável Alternativas: CVS e Subversion – – Ambos possuem interfaces gráficas Ferramentas de desenvolvimento integradas com CVS/SVN Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 102 Produzindo software livre ● Infraestrutura técnica – Bug tracker ● ● ● Novas features também são registradas nos bug trackers Também conhecidos por issue trackers, defect trackers, request trackers, ... Utilizado para gerenciar e documentar bugs encontrados – – – – ● Mantémse controle sob o status do problema Como reproduzilo e qual seu nível de impacto O estágio da sua implementação Responsáveis e discussões em torno do assunto Alternativas: Bugzilla, Mantis, Gnats Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 103 Produzindo software livre ● Infraestrutura técnica – Chats (IRQ) ● ● Permitem interação em tempo real IRQ é o recurso mais utilizado para chat em projetos de software livre – ● ● http://www.freenode.net Dependendo do tamanho do projeto, considere o estabelecimento de vários canais para tópicos específicos Bots – Membros de chats que podem aprender comandos e encaminhar respostas baseadas no conhecimento adquirido Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 104 Produzindo software livre ● Infraestrutura técnica – Wiki ● ● ● ● ● ● ● Produção de conhecimento colaborativo Permite que usuários editem o conteúdo de uma página Web e adicionem e/ou removam informações Edições salvas são publicadas no mesmo momento Fenômeno editorial na Internet nos últimos anos Wiki: palavra hawaiana que significa “super rápido” Tecnologia que viabilizou a criação da Wikipedia Colaborações podem ou não ser controladas por login – Inscrições podem ou não requerer autorização Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 105 Produzindo software livre ● Infraestrutura técnica – Wiki ● ● ● ● Mantém histórico das versões salvas Mecanismo permite a rápida criação de novas páginas Espírito Wiki de colaboração Ajuda a produzir material colaborativo para o projeto – ● Manuais, HOWTOs, FAQs, Man Pages, ... Alternativas: MediaWiki, Twiki, TikiWiki, ... Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 106 Produzindo software livre ● Infraestrutura técnica – Website ● ● ● ● Representa, em geral, a primeira aparência do seu projeto para novos usuários e potenciais colaboradores Projete cuidadosamente o layout do site para que possa causar boa impressão Deve promover acesso fácil e rápido às informações de maior interesse do projeto Decida melhor alternativa – – – ● Hospedar em repositório público (e.g. SourceForge) Manter em site próprio Mix de ambas as soluções anteriores Alternativas: Mambo/Joomla, Plone, PHP, ... Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 107 Produzindo software livre ● Recursos financeiros – Qualquer trabalho possui custos – Corporações têm compreendido o poder competitivo do software livre para seus negócios ● – Investimento requer gerência para evitar segregação dos desenvolvedores ● – IBM: U$ 1 bilhão Remunerados versus voluntários Ambientes pagos: novas features podem ser encomendadas ● No desenvolvimento em comunidade é diferente Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 108 Produzindo software livre ● Recursos financeiros – Motivações para financiar projetos de software livre ● Compartilhamento de software comum para um conjunto de corporações (concorrentes ou não) – ● Venda de serviços/produtos que dependem do sucesso de soluções livres relacionadas – ● ● Evita duplicidade de esforços e dispêndio de recursos Exemplo: subversion, Collab net, ... Suporte a hardware comercializado Concorrência para produto proprietário – – Concorrente principal: Microsoft Office Exemplo: OpenOffice (existem outros motivos, é claro :) Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 109 Produzindo software livre ● Recursos financeiros – Motivações para financiar projetos de software livre ● ● Marketing Dual licensing – ● Recebe recursos financeiros das empresas dispostas a pagar pela nãoreciprocidade das licenças de software livre Doações – Vendas de “gifts” (e.g. camisetas, chaveiros, ...) Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 110 Produzindo software livre ● Comunicação – Escrever bem é um dos principais requisitos para a manutenção de um projeto de software livre ● – Desenvolvedores e usuários estão remotos ● – Inglês é a “língua oficial” da Internet Comunicação é amplamente baseada em informação escrita: site, emails, fóruns, etc. Comunicação escrita ruim... ● ● Malentendidos Falta de participação internacional Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 111 Produzindo software livre ● Comunicação – Considere alguns aspectos importantes antes de postar uma mensagem escrita... ● ● ● ● – “Tons” utilizados: culturas diferentes estão envolvidas Não utilize regionalismos Título da mensagem (email, artigo, FAQ, ...) Estrutura do texto produzido Formatos de email ● ● Email em HTML não são práticos na maioria dos casos Formato ASCII são mais aconselháveis Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 112 Produzindo software livre ● Gerenciamento de voluntários – Uma das tarefas mais complexas no processo de gerenciamento de um projeto em software livre – Relação de confiança pode ser estabelecida ● – Por que voluntários se envolvem em software livre? ● ● ● – Debian utiliza chaves públicas para essa finalidade Motivação pessoal por produzir boas soluções Experiência profissional Atividade corporativa profissional... Entender a motivação é um diferencial importante Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 113 Referências ● Organizações e notícias – Free Software Foundation – http://www.fsf.org FSFLA (Fundação Software Livre América Latina) – http://www.fsfla.org Comunidade SOL Software Livre – http://www.comunidadesol.org Projeto Software Livre Brasil – http://www.softwarelivre.org Associação Software Livre ● ● ● ● ● http://associacao.softwarelivre.org Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 114 Links interessantes ● Livros – Free as in Freedom – Sam Williams (O'Reilly, 2001) – Cathedral and the Bazaar – Eric S. Raymond (O'Reilly, 2001) – Producing Open Source Software Karl Fogel (O'Reilly, 2005) – The Business and Economics of Linux and Open Source – Martin Fink (Prentice Hall, 2003) – Free Sofware, Free Society Richard M. Stallman, Lawrence Lessig e Joshua Gay (GNU Press, 2002) Copyleft (2007) Prof. M.Sc. Jansen Sena Fundamentos de Software Livre http://www.jsena.info 115