>> Como funciona o E Ink >> Testes com mídias de DVD: Qual a melhor? |
O presente texto discute sobre as técnicas de desenvolvimento, bem como o modelo de negócios utilizado na categoria de software denominada Open Source Software (Software de Código Aberto).
Existe confusão na distinção entre Open Source Software (software de código aberto) e Free Software (software gratuito). Alguns sites empregam a nomenclatura erroneamente, confundindo um software gratuito com software de código aberto,, passando a informação aos seus leitores de forma incorreta. De fato, um software gratuito não necessariamente é um software de código aberto. [1] define um software de código aberto como:
O software chamado de código aberto, ou open source em inglês, é um tipo de software cujo código fonte é visível publicamente. O software de código aberto respeita as quatro liberdades definidas pela Free Software Foundation. Porém, não estabelece certas restrições como as contidas na GPL (General Public License). É advogado pela Iniciativa do Código Aberto (Open Source Initiative).
A GPL baseia-se em 4 liberdades que são descritas por [5] em:
A liberdade de executar o programa, para qualquer propósito (liberdade nº 0)
A liberdade de estudar como o programa funciona e adaptá-lo para as suas necessidades (liberdade nº 1). O acesso ao código-fonte é um pré-requisito para esta liberdade.
A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade nº 2).
A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie deles (liberdade nº 3). O acesso ao código-fonte é um pré-requisito para esta liberdade.
Em geral, o desenvolvimento de um Open Source Software (OSS) utiliza-se de técnicas totalmente opostas às, até então vistas pelo mundo dos desenvolvedores de software. A falta de investidores para os projetos, como normalmente ocorre, livram os desenvolvedores de compromissos, que ocorrem em um projeto tradicional de desenvolvimento de software em organizações, como prazos curtos, funcionalidades pré-estabelecidas, e muitas vezes até mesmo um modelo de negócios.
Em grande parte dos projetos OSS, a equipe trabalha motivada mais pela emoção do que pela “razão”. Normalmente, o projeto OSS é iniciado a partir de um pequeno número de desenvolvedores, quando não, apenas por um. O objetivo que a equipe tem em mente é único: desenvolver um software eficiente que atenta à necessidade meta e conquiste o maior número de usuários possível.
Para a equipe desenvolvedora o “divertido” é programar, o que leva o pessoal a trabalhar até “altas” horas e em horários livres. Para o usuário OSS o importante é se o software é confiável e se atende às suas necessidades. Geralmente não existe uma preocupação quanto ao estilo de programação utilizado ou à documentação.
O código não passa por uma verificação formal ou informal, não existem os papéis do aferidor de qualidade ou outros papéis que normalmente existem em uma estrutura hierárquica empresarial. Os sistemas são testados no uso, por uma enorme comunidade que, de forma colaborativa, se dispõe a utilizá-los, encontrar erros e adicionar ou corrigir funções por conta própria, doando ao projeto seu tempo como programador [2]. Essa é, de longe, a grande vantagem do OSS. Qualquer pessoa pode contribuir com seus conhecimentos para o projeto, seja com dicas, observações, explicações sobre o contexto ou até mesmo com linhas de código e módulos de expansão e/ou correção.
A cada dia o número de desenvolvedores OSS cresce em todo o mundo, em abrangência que vai desde projetos pequenos, com apenas um programador escrevendo todo o código fonte, como é o caso da aBíblia Software1, até projetos grandiosos, como é o caso do Kernel Linux e da suite Open Office2 (utilizada na confecção deste texto), onde tem-se equipes com um grande número de pessoas trabalhando. Em ambos os casos, a ajuda do usuário, no papel de testador, é fundamental para o sucesso do projeto.
Pode-se inferir, a partir da descrição feita nos parágrafos anteriores, que o modelo de desenvolvimento OSS é Iterativo e Incremental, onde são disponibilizadas, em um curto período de tempo, novas versões do software com pequenas melhorias, que devem ser testadas e analisadas por seus usuários, que sempre influenciam na produção de uma nova versão.
Outra grande vantagem da categoria de software Open Source é o reaproveitamento do código. O fato do código-fonte de um determinado programa ser disponível a todos, pode levar aos desenvolvedores de outro software, que possua funcionalidades semelhantes, a utilizar trechos do código em seu programa, ou mesmo estudar as técnicas usadas no desenvolvimento do software antecessor. Como exemplo disso, temos a Distribuição Linux Ubuntu que além de, como toda distribuição Linux, ser desenvolvida utilizando o Kernel Linux que é outro projeto Open Source, é baseada em outra distribuição: Debian. Desta forma, os desenvolvedores poupam tempo e se dedicam em fazer o que realmente for necessário.
A seguir é apresentada uma pequena lista contendo alguns dos mais famosos exemplos de OSS:
KDE – Gerenciador de janelas para Linux concorrente do, também Open Source, Gnome. Disponível para download em: http://www.kde.org.
Apache – Servidor, mais usado no mundo. Disponível para download em: http://www.apache.org.
Gimp – Editor profissional de imagens multiplataforma, concorrente do Software proprietário3 Adobe Photoshop. Disponível para download em: http://www.gimp.org.
Inkscape – Editor profissional de imagens vetoriais multiplataforma, concorrente do Software proprietário Corel Draw. Disponível para download em: http://www.inkscape.org.
Mozilla Firefox – Navegador Web multiplataforma, concorrente do proprietário Internet Explorer. Disponível para download em: http://br.mozdev.org/.
O modelo de cooperação, colaboração, formação de redes e emergência de padrões utilizados pela comunidade Open Source, até o momento tem sido considerado o modelo de negócios e social mais adequado para um mundo plano e conectado [3]. Ao que parece, vai de encontro com as práticas correntes em Engenharia de Software, pois escapa dos modelos e processos tradicionalmente aceitos e em uso corrente pela comunidade [2].
Quando se começou a falar com mais intensidade em software livre (outra nomenclatura para Open Source), não havia uma visão definida sobre os aspectos econômicos, existindo mesmo a suposição que seria uma economia não alcançável, com desenvolvedores voluntários programando softwares sem nenhum compromisso financeiro. Esta visão fez com que muitos críticos imaginassem que o Movimento Open Source4 não sobreviveria a longo prazo, por falta de desenvolvedores que perderiam os estímulos com o passar dos anos por falta de incentivos monetários.
Atualmente a visão é outra, existe dinheiro envolvido em projetos OSS, só que não ligado diretamente à venda do código ou sistema, mas ao seu redor, a venda de suporte e treinamento de usuários são bons exemplos de envolvimento financeiro relacionado a um projeto OSS.
O Movimento Open Source realmente mudou as regras do jogo da indústria de software, e oferece um risco para as grandes empresas que dominam determinadas áreas do mercado de software. O grande diferencial de um projeto OSS é o modelo colaborativo, que dissolve os custos de produção do software por vários atores. [4] define que:
Não é que o custo para desenvolver um software aberto seja zero. Ele pode ser tão elevado quanto um software proprietário, mas está diluído por toda uma comunidade. Por exemplo, em http://www.dwheeler.com/essays/linux-kernel-cost.html e http://www.dwheeler.com/sloc/ podemos ver algumas estimativas de custo de desenvolvimento do kernel do Linux. Segundo esta estimativa, se este kernel (no caso 2.6) fosse desenvolvido a partir do zero teria custado mais de 600 milhões de dólares. E uma distribuição completa Linux como a Debian custaria mais de oito bilhões de dólares. Mas, ninguém arcou com este custo sozinho!
Este novo modelo corporativo é que permite elaborar novos modelos de negócios, onde o custo de desenvolvimento do software pode ser absurdamente reduzido. O insucesso de uma versão, geralmente traz como única consequência os pedidos de adiantamento de uma nova versão do software, que corrija os problemas. Como o software é distribuído gratuitamente, o compromisso de funcionalidade está ligado apenas à moralidade, ou marketing, não existindo contratos a serem cumpridos. O mesmo possível insucesso no desenvolvimento de um software proprietário significa a existência de riscos que precisam ser tratados e reduzidos, já que o não cumprimento de determinados requisitos do software em questão pode resultar em quebra de contrato, custando dinheiro e perda de crédito no mercado para seus proprietários. [4] acrescenta que:
Um software proprietário joga nas costas do seu fabricante todo o custo e o risco de insucesso do projeto. O fabricante precisa de capital, pois a lucratividade vem muito tempo depois, uma vez que um software complexo leva anos para ser concluído, além do tempo necessário para vender cópias suficientes para amortizar o imenso investimento inicial empatado no seu desenvolvimento. Outro grande custo adicional é o marketing e a força de vendas necessárias para que o produto seja comercializado com sucesso. No Open Source as regras são outras. Cada participante da comunidade adiciona uma pequena parte ao projeto e recebe em troca um software completo. E quando se disponibiliza o software para acesso via downloads, corta-se outra grande despesa, que são marketing e distribuição.
O Movimento Open Source representa o novo modelo de desenvolvimento de software que apresenta inúmeras vantagens sobre o modelo até então utilizado pelos “gigantes do desenvolvimento de softwares”. Com a participação direta dos usuários dos softwares, o desenvolvimento dos mesmos torna-se mais objetivo, dinâmico e ágil. Quando, por outro lado, a falta de compromissos econômicos, reduz a burocracia e deixa os programadores mais à vontade para fazer o que eles sabem de melhor: programar!
Software Livre facilita o ingresso de novos programadores que têm à disponibilidade um número cada vez maior de códigos, que são indispensáveis para estudos. Além de conceder a oportunidade do profissional atuar como colaborador em um pequeno, médio, ou até mesmo grande projeto de desenvolvimento. O que, ao longo do tempo, pode fazer com que seu nome seja conhecido entre a comunidade OSS.
OSS representa uma nova cultura de consciência, onde seus participantes quase sempre se tornam fiéis ao Movimento, fortalecendo e expandindo a comunidade, que mostra-se, a cada dia, mais forte.
[1] http://pt.wikipedia.org/wiki/Open_Source
[2] http://zeluisbraga.wordpress.com/2007/07/17/engenharia-de-software-e-o-movimento-opensource/
[3] O mundo é plano de 16/05/2007 e OScar: OpenSource Car, de 31/05/2007
[4] http://www.softwarelivreparana.org.br/modules/news/article.php?storyid=2022
[5] http://pt.wikipedia.org/wiki/Gnu_general_public_license
1Bíblia Sagrada Open Source para sistemas Linux e Windows, desenvolvida por Luis César C. Vasquez e disponível para download em http://www.comunidadeabiblia.net/abiblia
2Disponível para download em http://www.openoffice.org (versão internacional) e http://www.broffice.org (versão português do Brasil)
3Software cujo os direitos autorais pertencem a uma empresa. O código fonte não é disponibilizado aos usuário. Não significa que não possa ser gratuito, isso fica a critério do proprietário dos direitos autorais.
4Neste artigo denotamos Movimento Open Source ou apenas Movimento o grupo de adeptos às políticas Open Source