Autor: Breno Santana | Publicado: 2008-08-06T15:28:00-07:00

Como funcionam os projetos open source Você pode nunca ter lido uma licença de software durante a instalação, ou nunca ter alterado o código fonte de um programa para que ele funcionasse à sua maneira, mas pode ter certeza: você já usou softwares open source!Dizer que um software é open source (código aberto) significa dizer que o seu código fonte está disponível para o usuário. Isso quer dizer que o usuário poder ler o código do programa. Há projetos que, dependendo da licença usada, também permitem a alteração do código fonte, com algumas ou nenhuma restrição.ReproduçãoBotom do Free SoftwareSe o software não faz algo que poderia fazer, qualquer pessoa com conhecimento em programação poderia incrementá-lo inserindo novas funcionalidades. Com isso, esse tipo de software tende a evoluir muito mais rápido que os softwares proprietários, que dependem de recursos financeiros e de decisões comerciais para ter ou não alguma funcionalidade que os usuários queiram.Para os projetos open source que permitem a alteração do código fonte, o desenvolvimento quase sempre é feito de forma colaborativa, em que programadores e outras pessoas ajudam com o crescimento do software e do projeto, seja inserindo novas funcionalidades, eliminando erros (bugs) ou até escrevendo documentação como manuais de uso e guias de instalação.Projetos de software open source podem nascer de duas formas: Quando há necessidade que ele exista e há programadores ou empresas dispostos a criá-lo (caso do Linux), ouQuando empresas resolvem abrir o código fonte de algum produto comercial que ela já desenvolvia de forma proprietária (caso do Netscape). Embora a maioria dos usuários normais desconheça o funcionamento de um projeto open source, seus resultados estão disponíveis a todos e são usados a todo tempo em toda parte. O seu provedor de internet provavelmente utiliza software open source para lidar com as conexões de rede e grande parte dos sites que você acessa é desenvolvida com tecnologia open source, de forma colaborativa.Neste artigo vamos descrever as vantagens do software open source, suas vantagens técnicas e culturais, suas licenças e o que você pode ou não fazer. Vamos destrinchar como funciona o desenvolvimento colaborativo, o que os programadores usam, como se comunicam e como recebem por isso.O que é um projeto open source     <!-- dtl_id=505379 //-->  Projetos de Open Source são aqueles com a finalidade de criar e manter softwares que incluem o código fonte para seus usuários. Dependendo da licença usada, ao baixar e instalar um desses softwares, o usuário ganha o direito de usá-lo para qualquer fim, modificá-lo e redistribui-lo.  Ter o código fonte aberto significa que as pessoas podem estudá-lo e muitas vezes incrementá-lo com algo que o software poderia ou deveria fazer. Com isso, muitos usuários acabam incrementando o software com funcionalidades extras ou até aplicando consertos de bugs que possam ocorrer.  Esse tipo de software muitas vezes é desenvolvido de forma colaborativa. Desta forma, as alterações que são de interesse comum são compartilhadas para todos os usuários quando o projeto lança uma nova versão estável, e o projeto tende a crescer exponencialmente tornando-se auto-sustentável.   Softwares Open Source são também conhecidos como FOSS, ou Free and Open Source Software (Software Livre e de Código Aberto). Há duas entidades que especificam o que pode ser considerado Open Source e Free Software: a Open Source Initiative (OSI) e a Free Software Fundation (FSF). A tradução de Free Software é Software Livre e não deve ser confundida com Software Grátis. Veja abaixo os principais Projetos Open Source:  O sistema operacional GNU e GNU/Linux    Criado em 1983 por Richard Stallman e atualmente mantido pela comunidade, o sistema operacional GNU é compatível com o Unix, totalmente aberto e livre. Por GNU entende-se todo um conjunto de aplicativos básicos como interpretadores de terminais texto (também conhecidos como shell), bibliotecas de programas, compiladores, editores de textos, ambientes gráficos (como o Gnome) etc.    Esse conjunto é atualmente empacotado usando o kernel Linux, de Linus Torvalds, desenvolvido por ele em 1991. Ele é vendido na caixinha, revistas de informática ou via download, na forma de distribuições, em que cada empresa ou fundação seleciona os aplicativos mais utilizados pelo seu público alvo. Exemplos de distribuições GNU/Linux são Ubuntu, Debian, Red Hat e Mandriva.      ©2008 Variavel HackerA distribuição GNU/Linux Madriva com o ambiente gráfico KDE O ambiente gráfico Gnome   Gnome (acrônimo para GNU Network Object Model Environment) é um ambiente gráfico desktop gratuito e livre para sistemas UNIX ou Unix-like (como são chamados os sistemas parecidos com Unix, como o GNU/Linux). É o ambiente desktop oficial do projeto GNU e vem incluído em muitas distribuições GNU/Linux e BSD. Um ambiente gráfico desktop permite ao usuário usar o mouse (e não comando de terminal) e interagir com as janelas do Linux.  O projeto Gnome nasceu em agosto de 1997, quando Miguel de Icaza decidiu criar um ambiente desktop inteiramente livre para sistemas livres.    ©2008 Variavel HackerO ambiente gráfico Gnome  O navegador de internet Mozilla Firefox  Mozilla Firefox (inicialmente conhecido como Phoenix e, posteriormente, como Mozilla Firebird) é um navegador livre e multiplataforma desenvolvido pela Mozilla Foundation com ajuda de centenas de colaboradores.   Maior concorrente do Internet Explorer, da Microsoft, esse navegador substituiu o Mozilla, que havia sido criado a partir do código fonte do Netscape Navigator.   ©2008 Variavel HackerO navegador de internet Mozilla Firefox ­    A suíte de escritório OpenOffice.org ou BrOffice.orgOpenOffice.org é uma suíte de aplicativos para escritório multiplataforma compatível com o Microsoft Office. A suíte é baseada em uma antiga versão do StarOffice, o StarOffice 5.1, adquirido pela Sun Microsystems em agosto de 1999. O código fonte da suíte foi liberado dando início a um projeto de desenvolvimento de um software de código aberto em 13 de outubro de 2000, o OpenOffice.org. O principal objetivo era fornecer uma alternativa de baixo custo, de alta qualidade e de código aberto.  No Brasil, o nome "OpenOffice.org" gerou uma disputa judicial com uma empresa do Rio de Janeiro que já havia registrado a marca "Open Office", e por isso em 25 de Janeiro de 2006 o programa passou a ser chamado aqui de BrOffice.org.  ©2008 Variavel HackerUm pouco de história     <!-- dtl_id=505381 //-->  O termo “open source” ficou conhecido em janeiro de 1998, em Palo Alto na Califórnia, quando a Netscape liberou o código fonte de seu navegador de internet Nescape Navigator, na tentativa de frear as investidas da Microsoft no mercado de navegadores de internet até então dominado pelo Navigator.  Um grupo de pessoas formado por Eric S. Raymond, Jon Hall e outros programadores propôs o termo Open Source para designar softwares de código fonte aberto, mas que não eram exatamente livres, como o Navigator, cujo código fonte foi licenciado sob NPL (Netscape Public License), uma licença um pouco restritiva.  Antes disso, apenas o termo “Free Software” (software livre) era mais conhecido, e este já existia desde 1983 com o início do projeto GNU e da criação da Free Software Fundation (FSF), de Richard Stallman.  O Projeto GNU  Reprodução/GNURichard Stallman, fundador doProjeto GNU e daFree Software FoundationNos anos 70 a 80, Richard Stallman era um programador do MIT (Massachusetts Institute of Technology ou Instituto de Tecnologia de Massachusetts) e vivia dentro dos laboratórios estudando programação. Naquela época o conceito de software proprietário (com código fonte fechado) ainda não existia.  Grande parte dos programas de computador já eram vendidos e distribuídos com o código fonte incluso. Com tantos processadores e plataformas diferentes, essa estratégia tornava o programa portável. O usuário poderia assim readaptar o programa para rodar na sua plataforma preferida, de modificando-a também para as suas necessidades pessoais.  Estudantes de programação se beneficiaram muito com isso, já que podiam estudar como o programa havia sido desenvolvido e aprender novas técnicas de programação.  Os efeitos desse modelo de colaboração era que os usuários avançados melhoravam o código fonte dos programas e essas melhorias eram normalmente repassadas para os fabricantes e fornecedores de software, e posteriormente para os outros usuários. Esse modelo de colaboração, entre programadores, foi chamada de Cultura Hacker.  Nos final dos anos 70 e início dos anos 80 a Cultura Hacker ameaçava fragmentar-se. Para evitar que os softwares fossem executados em plataformas concorrentes, muitos fabricantes começaram a não mais distribuir o código fonte junto com o software, e este último passou a vir com direitos autorais (copyrights) e licenças para limitar ou proibir a cópia do software e sua redistribuição.  Prevendo a fragmentação e a extinção da Cultura Hacker, Richard Stallman propôs à comunidade de programadores a criação de uma plataforma de software livre, que fosse portável para qualquer processador/plataforma e que qualquer pessoa teria direito de usar, modificar e redistribuir, como eram feitos os softwares alguns anos antes.  ReproduçãoSímbolo do GNUEm Setembro de 1983 foi iniciado o Projeto GNU. GNU significa “GNU is Not Unix”, em português “GNU não é UNIX”. Naquela época o Unix era o sistema operacional mais utilizado nos computadores das universidades, e como todo programa de computador da época, tinha o código fonte disponível para os usuários, mesmo não sendo um software livre. O projeto juntou os programadores que aceitaram a idéia de Stallman, desenvolvendo de forma colaborativa o Sistema Operacional GNU, o primeiro sistema operacional livre inspirado e compatível com o Unix, criado do zero, sem utilizar partes de código do Unix.  Em 4 de outubro de 1985, Richard Stallman fundou a Free Software Foundation, uma entidade sem fins lucrativos criada para dar suporte ao movimento de software livre e ao Projeto GNU.  O kernel Linux  No início da década de 90, sistema operacional GNU estava quase pronto. Já havia bibliotecas de código, compiladores, um shell, sistema de janelas e editores de texto. Porém, o principal ainda não estava pronto: o kernel.  O kernel é o núcleo de um sistema operacional. É o componen­te responsável pela comunicação entre os programas e o hardware, criando uma camada de abstração para os programas e gerenciando os recursos da máquina, como memória, espaço em disco, entrada e saída de dados.  O sistema operacional GNU ainda não dispunha de um kernel finalizado e pronto para o uso. Em seu projeto original, o sistema deveria incluir um kernel chamado GNU/Hurd, que foi criado para suportar a maioria das plataformas de processamento que existiam na época e que viessem a existir no futuro. Para que essa portabilidade ocorresse, o Hurd foi desenvolvido de forma modular e complexa, fator que contribuiu para a demora do lançamento de uma versão estável.    ReproduçãoLinus Torvalds, criador­do kernel ­LinuxEnquanto isso, na Finlândia, o programador Linus Torvalds estudava o design de sistema operacional do MINIX, um sistema Unix-like desenvolvido pelo professor Andrew S. Tanenbaum, para uso acadêmico. Em 1991, Torvalds iniciou a construção de um kernel mais simples que o do MINIX, e deu a ele o nome de Linux.  O kernel foi então lançado sob licença GPL (GNU General Public License), o que o tornou legalmente compatível com as bibliotecas e aplicativos da GNU, completando assim provisoriamente o sistema operacional GNU, até que o kernel Hurd estivesse pronto.      O sistema operacional Linux  O kernel Linux acabou ganhando mais popularidade que o projeto GNU, isto fez com que o nome “Linux” fosse usado para designar todo o sistema e não apenas o kernel.    A Free Software Foundation (FSF) recomendou chamá-lo de GNU/Linux para não esquecer de todo o ecossistema de aplicativos “GNU” que compõe o sistema operacional. A diferença de termos entre Linux e GNU/Linux gerou muita discussão na comunidade de software livre.©2008 Variavel HackerTux, o símbolo do LinuxO Linux também alavancou o desenvolvimento de outros projetos livres, pois foi um dos primeiros projetos a utilizar um novo modelo de desenvolvimento colaborativo em que qualquer pessoa pudesse enviar suas alterações sem necessariamente fazer parte do time de desenvolvimento. Isso fez o Linux crescer exponencialmente e atender à demanda do mercado, tornando-se um sistema operacional viável para diversos tipos de usos e plataformas. Esse modelo de desenvolvimento foi chamado Bazar no livro "A Catedral e o Bazar",  de Eric Raymond, e acabou inspirando outros projetos.  Atualmente o GNU/Linux é o sistema operacional mais utilizado em servidores e supercomputadores, sistemas embebidos e desktops de baixo custo, sendo o mais forte concorrente do Microsoft Windows.  Mas o que aconteceu com o Hurd? O kernel original do projeto GNU ainda está em desenvolvimento e suas primeiras versões não estão prontas para uso. Em comparação com o Linux, o Hurd tem poucas pessoas envolvidas em seu desenvolvimento.  O BSD  Enquanto o GNU e o GNU/Linux se destacavam por ser um sistema Unix-like compatível, em termos de código, com a grande maioria de programas para Unix mas sem conter partes de código do Unix e com isso livre de processos legais, o BSD enfrentava um problema com a AT&amp;T (na época, dona dos direitos autorais do Unix) e com a Justiça.  ­ReproduçãoBeastie, mascote­do ­projeto FreeBSD­BSD é sigla para Berkeley Software Distribution, um Unix-like que derivou diretamente do código do Unix original, desenvolvido em Berkeley, na Universidade da Califórnia nos anos 70. Foi o primeiro sistema operacional a implementar o protocolo TCP/IP e a realizar testes com a Internet.  Por conter partes de código do Unix, o BSD sofreu pressão legal, e seu fonte teve de ser reescrito. Esse atraso fez com que o projeto GNU e o kernel Linux ganhassem mais popularidade e usuários.  Do BSD surgiram duas variações: O FreeBSD e o NetBSD, o primeiro destinado a diversos usos, como Desktops e Servidores e o último focado em portabilidade. Acredite, há torradeiras que são capazes de rodar NetBSD!ReproduçãoTorradeira com NetBSD­­Do NetBSD surgiu o OpenBSD, um Unix-like focado em segurança e que é muito utilizado nos dias de hoje para a construção de firewalls. O projeto OpenBSD também é o responsável por criar a biblioteca de encriptação OpenSSL (Security Sockets Layer), capaz de criar túneis encriptados de tramissão de dados por TCP/IP como o https e o ssh (com o OpenSSH), muito utilizados no Linux e Windows. Enquanto o GNU/Linux e o projeto GNU reinventaram o Unix inserindo novos padrões de design de sistema operacional, os BSDs se caracterizam por seguir à risca todos os padrões do Unix, porém nenhum deles pode ser legalmente chamado de Unix.  O nome Unix é marca registrada da The Open Group, instituição que provê vários testes para garantir se um sistema operacional pode ou não ser chamado de Unix. Tanto o FreeBSD, quanto o NetBSD e o OpenBSD passariam nesses testes, porém os projetos não dispõem de recursos financeiros para realizá-los. Dessa forma, o termo Unix-like foi o escolhido para especificar o tipo de sistema operacional.  A sigla BSD também é usada como referência a programas que usam a licença BSD, que em comparação à GPL da GNU é muito menos restritiva. A licença BSD permite, entre outras coisas, que a empresa que desenvolve um software proprietário possa utilizar código BSD como base sem ter a obrigação de devolver para a comunidade as novas alterações por ele desenvolvidas. A única obrigação da empresa seria apenas, em algum lugar do software, colocar as notas de copyrights dizendo de onde o software se originou e que partes de código ele utiliza.  Já para a GPL, se um software usa código GPL desenvolvido pela comunidade, todo o software deve ser GPL, garantindo assim à comunidade todas as alterações que forem feitas por empresas e o direito infinito de alterar e redistribuir o software nessas condições.  A licença BSD permitiu que o código fonte do protocolo TCP/IP fosse utilizado em sistemas operacionais proprietários e abertos, cada qual alterando a sua licença, e o sistema BSD usado como subsistema do Mac OS X, da Apple.ReproduçãoGráfico exibe as descendências dos sistemas operacionais Unix-likeO Writer, processador de textos da suíte OpenOffice.org     Como um projeto open source é desenvolvido     <!-- dtl_id=505383 //-->  O código fonte  Antes de tudo, para se ter um software é necessário escrevê-lo em uma linguagem de programação. O código fonte é composto de vários arquivos, normalmente resultado de uma engenharia que permite a sua escrita e manutenção em pequenas unidades de código.  Grande parte dos projetos open source são desenvolvidos nas linguagens C e C++. No entanto, esta não é uma regra. Há milhares de projetos livres em Python, Ruby, Perl, PHP e outras linguagens.  ©2008 Variavel HackerArquivo fonte do projeto lighttpd, servidorweb escrito em C, editado no VIMAmbiente de Compilação e Depuração    Compilar um programa significa traduzir o código fonte em código de máquina. Para isso utilizam-se softwares compiladores, como o gcc e o g++ (GNU C Compiler e GNU C++ Compiler). Porém, projetos grandes costumam ter centenas ou milhares de arquivos fontes, e para que o projeto funcione com tanta gente trabalhando neles é necessário um sistema de compilação automatizado.  Os softwares desenvolvidos em C/C++ normalmente utilizam a suíte de aplicativos de compilação do GNU Build System, conjunto de softwares de linha de comando que “preparam” o código fonte para que funcione em várias plataformas com vários desenvolvedores.  Já a depuração é o meio pelo qual os desenvolvedores checam se suas partes de código estão funcionando. Pode ser feita manualmente, utilizando softwares como o gdb (GNU debugger), ou em alguns casos utilizando rotinas de testes automatizados que alguns projetos de software open source disponibilizam.  Árvores de código  Para que não haja confusão entre código novo e testado e código em desenvolvimento, a maioria dos projetos separam os códigos fontes em três unidades diferentes: estável, testes e desenvolvimento.  ©2008 Variavel HackerCiclo de desenvolvimento de­­ um projeto open source­A árvore estável contém apenas código fonte de lançamentos. Isso significa que as únicas alterações que ela irá receber é de bugfixes (correções) de erros encontrados depois do seu lançamento. Nenhuma nova funcionalidade será incluída nesta árvore de código. Essa árvore corresponde à última versão estável liberada para o público e pronta para o uso. A árvore de testes contém códigos que precisam ser testados (e normalmente reparados, caso ocorram erros). Correspondem às versões beta e não são totalmente seguras. Devem ser usadas apenas para depuração, garantindo estar livre de bugs na próxima versão estável.  A árvo­re de ­desenvolvimento contém código mutável. Nela todos os dias são incluídas novas funcionalidades, e não há garantias de que o software irá funcionar, pois a versão baixada uma hora antes pode ser diferente da versão atual, dependendo do fluxo de desenvolvimento do projeto. Versões de desenvolvimento só são usadas por programadores envolvidos no projeto.     Forks    No mundo do desenvolvimento de software, os forks acontecem quando um programador copia uma árvore de código e nela inicia um desenvolvimento independente, criando um software diferente. As alterações feitas no fork não são aplicadas na árvore de código do primeiro projeto, fazendo com que o software copiado vire um novo software.  Os forks são um recurso muito interessante nos projetos Open Source. Se um time de desenvolvedores resolver não mais liberar o código fonte de algum software, os usuários poderão continuar o desenvolvimento da última versão liberada ao público.  Um exemplo disso é o Mozilla Firefox, que derivou do Mozilla, que por sua vez derivou do código aberto do Netscape Navigator. O OpenBSD surgiu como um fork do NetBSD.  Os Modelos de Desenvolvimento  Softwares Open Source podem ser desenvolvidos de várias maneiras, no entanto há duas formas de desenvolvimento mais utilizados nos projetos abertos: O modelo Catedral e O modelo Bazar    No modelo Catedral, há um time de desenvolvedores eleitos que estão lá por próprio mérito e que conhecem bem os objetivos do projeto e a estrutura de código do software. Nesse modelo, os projetos aceitam contribuições da comunidade em geral através de relatos de falhas (bug reports) ou correções (patches), que são partes de código que alteram o código fonte do software, mas que só irão fazer parte do código fonte principal se forem aceitos pelos desenvolvedores do time.  Para fazer parte do time de desenvolvimento, uma pessoa poderia ser indicada ou mostrar suas habilidades técnicas contribuindo com o projeto, mas sem fazer parte dele.  O modelo de desenvolvimento Catedral pode ser comparado ao desenvolvimento de um software proprietário, com a diferença que o código fonte está lá disponível para os usuários e que eles podem fazer o que bem entenderem (dependendo da licença usada).    Já no modelo Bazar, usado primeiramente no projeto do kernel Linux, o desenvolvimento é feito de forma totalmente aberta, utilizando a internet, e qualquer pessoa está livre para inserir suas próprias funcionalidades ou remendos. O livro de Eric Raymond, "A Catedral e o Bazar", mostra mais detalhes desses dois estilos de desenvolvimento.    As equipes de desenvolvimento     <!-- dtl_id=505385 //-->  Por meio da internet, as equipes de desenvolvimento se reúnem, discutem o que deve entrar ou sair do projeto, definem metas e desenvolvem o software. Para que isso aconteça, uma série de técnicas e ferramentas são necessárias: comunicação, sistema de controle de versões, controle de bugs e documentação. Vamos detalhar essas ferramentas a seguir:  Comunicação    O pré-requisito para uma equipe de programadores desenvolver software de forma colaborativa utilizando a internet são os meios de comunicação. Sem isso, não seriam estabelecidas metas e não haveria discussões. Alguns projetos utilizam Mail Lists (Listas de E-mail) para se comunicarem, trocando informações sobre desenvolvimento e até trocando patches com alterações no código fonte principal.  ©2008 Variavel HackerO site oficial do kernel Linux fornece linkspara o acesso aos arquivos de todas asmensagens trocadas na lista linux-kernel, que sãousadas pelos desenvolvedores do projetoOutros projetos fornecem canais de IRC (Internet Really Chat), um protocolo de chat muito antigo que era usado com o cliente mIRC, em Windows. Projetos menores também utilizam Fóruns de Discussão, em que qualquer usuário pode publicar suas dúvidas usando apenas um navegador de internet e uma conta de cadastro no fórum do projeto. Esses meios de comunicação também são usados para prover suporte aos usuários.©2008 Variavel HackerTela de chat de IRC no canal #lighttpd da rede FreeNode,onde são discutidos os detalhes sobre odesenvolvimento do projeto e suporte aos usuáriosSistemas de Controle de Versão  Sistemas de Controle de Versão, ou VCS (Version Control System) são aplicativos que gerenciam árvores de código fonte e suas versões. Esses softwares dão aos programadores o controle sobre os arquivos, permitindo que saibam o que foi alterado na estrutura de código em um determinado tempo, por quem e quando.    Caso uma nova versão de um arquivo esteja com problemas, os programadores podem optar por corrigi-lo, substitui-lo pela versão antiga, e informar o autor do problema. Esses softwares são necessários para que o desenvolvimento colaborativo aconteça sem provocar problemas na árvore de código.  Há dois tipos de VCS: os centralizados, como o CVS e o Subversion, e os descentralizados, como Bazaar, Mercurial e Git. Este último foi desenvolvido por Linus Torvalds e usado para gerenciar o código fonte do kernel Linux.  No modelo centralizado, toda alteração salva é automaticamente colocada na árvore de código em um ou mais servidores centrais. Já no modelo descentralizado, o programador não necessariamente depende de uma conexão com a internet para enviar suas modificações. Ele pode ficar o dia todo programando e salvando as modificações em sua própria máquina e para só enviá-las à noite para o servidor central do projeto.  Controle de Bugs  Um software estável nunca está livre de bugs. Há erros que só irão aparecer em determinadas situações e que passaram despercebidos nas rotinas de testes antes do lançamento da última versão.    Para isso, a maioria dos projetos open source dispõe de ferramentas que coletam bugs. Caso você tenha um problema com o software, pode abrir um ticket (um chamado) e informar aos desenvolvedores a ocorrência do problema (a menos que algum outro usuário com o mesmo problema já não tenha feito isso). Dependendo da gravidade do problema, eles podem corrigir imediatamente ou prometer que o erro será corrigido na próxima versão.©2008 Variavel HackerO projeto Mozilla oferece o controle de bugs usando osoftware Bugzilla. Todos os dias são abertos tickets quereportam bugs e vulnerabilidades à equipe de desenvolvimento Documentação    A documentação é necessária tanto para usuários, que vão procurar meios de instalar e configurar o software, como para desenvolvedores, que vão procurar guias de normas de programação padronizadas para a colaboração no projeto. Ela pode ser desenvolvida na forma de grandes manuais, em HTML, PDF e outros formatos, e ficar disponível para download no website do projeto.  Há projetos que preferem ter as suas documentações desenvolvidas em tempo real. Para isso utilizam Wikis, ferramentas que permitem criar, editar e linkar páginas da web rapidamente, assim qualquer usuário pode incrementar a documentação de forma fácil e rápida.©2008 Variavel HackerA distribuição GNU/Linux Ubuntu disponibiliza  um wikicolaborativo para documentação e resolução de problemas            Plataformas de desenvolvimento colaborativo     <!-- dtl_id=505387 //-->    Há tantas aplicações de infra-estrutura necessárias para manter e gerenciar um projeto de open source, que algumas empresas passaram a fornecer gratuitamente um conjunto de aplicativos para projetos open source. Nessas plataformas são incluídos:  Wikis para documentação e suporteSistemas de controle de bugsListas de E-mailFóruns de DiscussãoServidores de Controle de Versão (VCS) eLinks para downloads das versões estáveis    O Sourceforge (mais antigo, desenvolvido pela CollabNet), o Google Code (da Google Inc) e o Launchpad (desenvolvido pela Canonical, empresa que suporta o Ubuntu GNU/Linux) são exemplos desses serviços. O único requisito para ter um projeto hospedado nestas platafomas é publicar o software em alguma licença open source.  Esses serviços geram renda com anúncios e links patrocinados e normalmente ganham infra-estrutura de grandes empresas, como servidores e links de conexão com a Internet, na forma de doação ou de parceria.©2008 Variavel HackerPágina do projeto Pidgin, mensageiro instantâneo ­multiprotocolo e multiplataforma­hospedado no SourceForge   ©2008 Variavel HackerO Google Code, criado inicialmente para hospedar osprojetos do Google, agora disponibiliza serviçosde hospedagem gratuita para projetos open source  ©2008 Variavel HackerSite de desenvolvimento da distribuição Ubuntu no LaunchpadAlguns projetos optam por usar sua própria infra-estrutura, podendo assim utilizar os softwares que desejarem. Para estes projetos, existem softwares que integram todas as ferramentas necessárias. Um deles, muito conhecido, é o Trac, que se integra ao sistema de controle de versão Subversion.©2008 Variavel HackerSite de desenvolvimento do projeto Lighttpd rodando no Trac     As licenças de software     <!-- dtl_id=505389 //-->  As licenças de software especificam, de forma legal, o que o usuário pode e não pode fazer com o software. Essas licenças normalmente estão disponíveis no site do projeto, no programa de instalação do aplicativo, no ínicio dos arquivos de código fonte ou em algum documento texto na árvore de código fonte.  Um projeto de software open source pode utilizar qualquer licença, pode usar uma licença pronta como a GNU GPL ou pode até criar uma própria voltada para os interesses do projeto. Para ser considerado FOSS, o projeto precisa definir algumas liberdades básicas:A liberdade de usar o software, para qualquer fimA liberdade de alterar o software. O código fonte aberto é um pré-requisito para essa liberdade.A liberdade de distribuir o software, versões modificadas ou sem modificações.  ©2008 Variavel HackerO arquivo texto COPYING, na áravore de código do projeto lighttpd exibe a licença usada no projeto As várias licenças de software open source  Originalmente escrita por Richard Stallman para o projeto GNU, a GNU General Public License, ou simplesmente GPL, é a mais popular licença de software livre utilizada em projetos abertos.   Essa licença se distingue das outras por obrigar que trabalhos derivados de algum código GPL, passe a ser GPL também. Se você usar alguma parte de código GPL dentro do código fonte de algum software proprietário, ao distribui-lo você está legalmente obrigado a distribuir o código fonte de todo o software.  A GPL garante que quem usar algum software derivado ganhará os mesmos direitos do primeiro usuário que realizou alterações.   Outra licença muito comum é a BSD, ela é menos restritiva e permite o uso integral ou parcial do seu código fonte em programas proprietários.   Isso significa que qualquer um pode derivar um trabalho publicado originalmente sob licença BSD e torná-lo um software proprietário. Neste caso, a única exigência é exibir em algum lugar do software ou do material utilizado para distribuir o software as notas de copyrights das partes de código que o software utiliza.   Outras licenças também seguem a linha da licença BSD, como a licença MIT e a LGPL, esta última seguindo as mesmas características da GPL porém sem exigir que os trabalhos derivados estejam na mesma licença.  Licenças duplas   Alguns projetos de software open source fornecem duas licenças, uma livre e outra comercial. A licença livre normalmente é a GPL, que exige que os trabalhos derivados também sejam GPL.    Neste caso, se uma empresa quiser desenvolver um aplicativo comercial e não quiser abrir o código fonte para o público, pode optar por comprar uma licença comercial do software, que permite o uso em aplicações proprietárias.   Esse modelo de negócio tem sido usado por empresas como a TrollTrech, que desenvolve a biblioteca gráfica multiplataforma Qt.   Essa biblioteca, com a sua licença aberta (GPL), é usada no projeto KDE, um ambiente gráfico livre para GNU/Linux e outros Unix-like. Porém, softwares proprietários multiplataforma, como o Skype e o navegador Opera, também a usam, além da sua licença comercial.  Copyrights   As licenças livres não retiram os direitos autorais de seus autores. O autor do software pode, se desejar, alterar a licença das partes de software que ele escreveu. A próxima versão poderia vir em qualquer outra licença de software, podendo ser até um software proprietário.   Os usuários prejudicados poderiam, neste caso, fazer um fork da última versão aberta ao público e então iniciar um novo desenvolvimento em torno daquele código.         Como um projeto é sustentado financeiramente     <!-- dtl_id=505391 //-->  “Os programadores de um projeto open source trabalham de graça?” - é o que sempre acaba perguntando uma pessoa leiga. A resposta a essa pergunta é: “Não. E sim! Depende do projeto.”     Existem, sim, "heróis" que depois de um árduo dia de trabalho ainda arrumam tempo para cuidar de projetos livres, porém isso não é uma regra. Há projetos que são de interesse de grandes empresas, que empregam pessoas para inserir neles funcionalidades que irão de alguma forma ser úteis para os seus negócios. Porém, antes disso acontecer, a maioria dos projetos são iniciados por programadores que trabalharam em alguma idéia dispondo do seu tempo livre.  Quais são os custos?    Um projeto de software open source, além do custo de mão-de-obra dos programadores, tem de arcar com outros gastos. Domínios na internet, registro de logomarcas, infra-estrutura como servidores e links de conexão com a internet são só alguns exemplos do que pode gerar despesas em um projeto.    Projetos open source podem ser financiados pela própria comunidade de usuários, que doam dinheiro para manutenção de recursos. Podem utilizar a infra-estrutura de sites como o SourceForge, que se valem dos projetos para veicular publicidade e assim obter renda para manter os serviços online.  E, ainda, podem receber doações (em dinheiro ou em infra-estrutura) de empresas que se interessam pelo projeto para seus próprios negócios.         Suporte aos usuários     <!-- dtl_id=505393 //-->  Os usuários de softwares open source podem obter suporte de três formas:  Suporte comunitário impessoal     Este tipo de suporte é oferecido na forma de documentação. Por meio dela o usuário saberá como usar o software, como funciona o projeto que mantém o software, como configurá-lo em seu sistema etc. A documentação não fornece ajuda para erros específicos, mas normalmente lista, através das FAQ's, problemas que normalmente podem ocorrer e já ocorreram com vários outros usuários.  Suporte Comunitário Pessoal  Esse outro tipo de suporte é dado usando meios de comunicação, como Listas de E-mail, IRC e Fóruns de Discussão. Você pode perguntar e obter ajuda, dependendo do número de pessoas que saibam como resolver o seu problema.  Suporte Comercial  Há empresas que se focam em fornecer suporte para projetos de software open source, como o Linux. Essas empresas podem oferecer suporte por telefone, cursos, documentação aprofundada e outros serviços.Como colaborar em um projeto open source     <!-- dtl_id=505395 //-->  O pré-requisito básico para a colaboração em um projeto de software open source é entender como o software funciona, e depois entender como funciona o projeto.  Alguns projetos disponibilizam roadmaps (uma espécie de passo-a-passo) que mostram para onde estão caminhando. Outros também fornecem guias sobre como colaborar. Os guias são quase sempre criados em torno do que é mais necessário no projeto.  Para colaborar em um projeto você não precisa exclusivamente programar. Há diversas formas de colaboração:  Documentação  Uma coisa é certa sobre os programadores: Eles adoram programar! E por isso, normalmente tendem a deixar de lado tarefas necessárias para o projeto, como a criação da documentação dos softwares.  Por documentação, entendemos os manuais de uso, guias de instalação, tutoriais e FAQ's. Tudo que possa oferecer um suporte impessoal para o usuário, fazendo com que este só vá procurar o suporte pessoal (Listas de E-mail, Canais de IRC, Fóruns de Discussão) depois de ler o manual.  Em um projeto open source, qualquer pessoa que conheça o software pode contribuir escrevendo a documentação do sistema.  Tradução  Outro fato sobre softwares open source é que a maioria é desenvolvida em inglês. Por padrão, muitos deles suportam outros idiomas, mas os projetos esperam que usuários de outras nações cuidem disso.  Os desenvolvedores do projeto costumam criar arquivos com todos os textos e mensagens que irão aparecer na execução do programa. Uma vez que tudo está contido em um único arquivo, o processo de tradução fica mais fácil para usuários não-programadores.  Testes    Outra forma de contribuir é testando as várias versões do software, como a alpha, a beta e os pré-releases, e, após descobrir erros e outros problemas de instabilidade, reportar para o time de desenvolvimento. Com isto você estará ajudando o projeto a lançar versões estáveis mais garantidas e confiáveis.  Artwork    Quem tem aptidões artísticas pode ajudar projetos open source desenvolvendo a arte gráfica. Programadores quase sempre não têm tempo para usar softwares de criação e edição de imagem, e a “cara” dos softwares abertos nem sempre é a mais bonita. Designers gráficos podem ajudar criando logotipos para o projeto, ícones e até o layout do site do projeto, tornando-o mais amigável e menos denso.  Publicidade  Um software não é nada sem usuários. E para softwares open source, quanto mais usuários, mais colaboradores e mais o projeto crescerá.  Qualquer pessoa pode contribuir para projetos de software open source fazendo publicidade de diversas formas: contando para um amigo, escrevendo um relato em um blog sobre como foi a sua instalação, encorajando outras pessoas a instalar e testar o software, ou até de forma mais direta - colocando banners no seu site.  Suporte aos Usuários  Qualquer pessoa que entenda apenas como o software funciona já tem os requisitos necessários para colaborar em um projeto software open source: Basta ajudar outros usuários a resolver problemas de instalação e configuração, acessando as listas de e-mail, canais de IRC e/ou fóruns de discussão.  Programando  Para colaborar como um programador, no entanto, a lista de requisitos é um pouco maior, como segue: Conhecer o softwareTer experiência na linguagem de programação na qual o software foi desenvolvidoConhecer o código do software e as normas de programação estipuladas pelo projetoConhecer o ambiente de compilação usado para a construção do softwareConhecer o Sistema de Controle de Versão (VCS) usado pelo projeto eSaber para onde o projeto está indo, e quais são as novas funcionalidades a serem implementadas  Um programador pode ajudar em um projeto open source resolvendo os problemas reportados ou até implementando novas idéias no software.VariavelHacker