Como trabalho muito com software livre, às vezes me perguntam quando o software livre irá se tornar uma alternativa viável ao software comercial. Minha resposta é "há pelo menos 10 anos". A questão não é mais se podemos usar software livre na vida cotidiana; a questão é se podemos fazer muita coisa sem ele. Um dos meus telefones executa Linux®, outro executa um sistema operacional com uma grande parte de código BSD. Os dois servem principalmente para desenvolvedores que usam gcc para compilação.
Uma observação à parte: quando digo "software livre", estou me referindo à coisa definida pela Open Source Initiative (consulte a guia Recursos). Na verdade, na maioria das vezes, não passo pela lista de verificação formal. Como outra categoria famosa, eu o reconheço quando o vejo. Se você puder obter o código e brincar com ele sem aborrecimentos, provavelmente ele é um software livre.
Este artigo está sendo escrito usando um editor de software livre executado em um kernel de software livre e será enviado ao meu editor usando clientes de correio e servidores de correio que são software livres, por meio de um roteador sem fio executado no Linux.
O software livre existe há um bom tempo. Mesmo que você visualize seu ambiente como "proprietário", há boas chances de que você use tecnologias de software livre diariamente, muitas vezes sem nem saber disso. E este, afinal de contas, é o ponto desde o começo.
Neste artigo, o primeiro de uma série que analisa o sucesso do software livre, darei uma pequena visão geral do quanto o software livre é realmente difundido. Há dois aspectos relacionados a isso: um é o software específico que é software livre, e o segundo é a filosofia subjacente do software livre. Cada um deles obteve uma infiltração ampla nos mercados e culturas que anteriormente eram vistos como claramente contra a abertura e o compartilhamento.
O software livre parece, em um primeiro momento, ir contra as expectativas de um mercado em funcionamento. Por que as pessoas distribuiriam software, se as vendas de software claramente fazem parte de um segmento de mercado amplo e bem-sucedido? A resposta, assim como geralmente é o caso, é que fazer isso revela uma melhor percepção do mercado.
As pessoas adoram falar sobre a tragédia dos comuns. Para aqueles que perderam a origem da frase, aí vai uma recapitulação. Imagine uma pequena vila na era pré-industrial, com uma área compartilhada de terra coberta por pastagem. Todos, é claro, possuem uma cabra. (É o oposto do que acontece nas comédias em que alguém tem que esconder uma cabra). Agora, cada pessoa pode escolher se sua cabra vai pastar somente em suas próprias terras ou nas áreas comuns. Se você deixar sua cabra pastar nas áreas comuns, ela ficará mais bem alimentada. E, com isso, você ganha! Mas se todos deixarem suas cabras pastarem nas áreas comuns, estas se tornarão uma terra devastada, sem cobertura de pastagem, e todo mundo perde.
Por algum motivo, as pessoas às vezes preveem o mesmo resultado em fornecer software: todo mundo irá usar o software grátis, mas ninguém irá contribuir e ele irá se deteriorar. Acontece que isso simplesmente não é uma grande preocupação. Não é isso o que ocorre. Em vez disso, as pessoas cooperaram, produzindo softwares excelentes que muitas pessoas podem usar.
Vamos dar uma olhada em um conto um pouco mais aplicável: a famosa "sopa de pedra", em que um trapaceiro se oferece para fazer comida para as pessoas usando sua receita especial de sopa de pedra, e todos contribuem com um pouco de comida até que, de repente, todos se deparam com um banquete.
Muitos softwares, como pode ser visto, não são gravados para venda comercial. Eles são gravados porque as empresas precisam fazer seu trabalho. Sendo assim, elas vão perder tempo e esforços gravando esse software. Até este ponto, elas não têm interesse em vendê-los ou produzi-los, não têm interesse em fazer isso, não é da conta delas e não seria lucrativo. Assim, trata-se de dinheiro que vai apenas para a infraestrutura interna, levando as empresas a uma melhor produtividade, mas que, no final das contas, não vai para lugar nenhum.
Se eu orçar US$ 150.000 para desenvolver um pacote que preciso para uso interno, e um dos engenheiros disser que ele pode cortar esse custo para US$ 50.000 se começar por algo disponível gratuitamente, provavelmente eu irei agarrar essa oportunidade. Mas, lembre-se: eu não tinha nenhum plano de transformar esse software em dinheiro ou vendê-lo. Eu só preciso dele para fazer o meu trabalho. Assim, não tenho uma noção proprietária de propriedade sobre ele, e, mesmo se tivesse, alguma outra pessoa o possuiria. Mas posso descobrir que, se eu contribuir com as minhas alterações para a comunidade, ficará mais barato manter minhas alterações locais atualizadas. Isso significa que obterei as alterações de outras pessoas gratuitamente.
Acabamos de reinventar a sopa de pedra. As empresas que precisam desse software podem gastar menos do que gastariam de outro modo, obter uma melhor funcionalidade e não perder nada no processo. Brilhante! Inclua um pouco de boa vontade promocional (considere a lista de contribuidores do Linux; as pessoas adoram ver seus nomes lá), e não é difícil promover o trabalho em um projeto de software livre para o gerenciamento.
É claro que nem todo mundo contribui com o projeto. A maioria nem contribui. Algumas pessoas simplesmente pegam algo, usam e não tornam disponível para os outros. Embora algumas licenças trabalhem para evitar isso, outras simplesmente não se importam. Por que não? Porque os aproveitadores não custam nada para nós. Na realidade, eles nos beneficiam mesmo quando não estão tentando fazer isso.
Copiar software é uma atividade fundamentalmente grátis. É claro que ela tem um custo. Mas esse custo é, para a maioria, tão baixo, que não podemos medi-lo de modo útil em uma escala lógica. Custa mais descobrir o quanto custa para alguém fazer o download de um arquivo do que fazer o download do arquivo. Isso significa que não estamos perdendo nada importante quando as pessoas copiam nosso software grátis. Não há custos enormes envolvidos; eles não estão consumindo recursos limitados de forma significativa.
Mas cada aproveitador representa alguém que está obtendo um software melhor, e mais barato do que obteria de outra forma. E isso significa que os custos são mais baixos, o que se traduz (por meio da mágica da concorrência) em preços mais baixos para todos. O dinheiro que as pessoas não gastam duplicando uma funcionalidade já resolvida pela comunidade de software livre é um dinheiro que pode ser gasto em outra coisa — uma nova funcionalidade de algum tipo.
A NASA usou software livre no Mars Rover. E realmente importa se a Nasa contribuiu com a comunidade? Nem mesmo se você pagar impostos nos Estados Unidos, ela não contribui, você já teve o seu desconto. É o dinheiro que eles não tiveram que gastar e que sai do orçamento. (Na verdade, eles contribuem com a comunidade com código, como deve ser. Mas mesmo se não contribuíssem, estaríamos em uma situação melhor com sua decisão de usar software livre).
Software livre: você não pode viver sem ele
A esta altura, se você é um desenvolvedor de software, provavelmente não consegue fazer o seu trabalho diário sem software livre e, mesmo se conseguisse, há chances muitas boas de que fracassaria. Se você usa infraestrutura de rede (como a Internet), você não conseguiria fazer nada sem software livre. Aqui vão alguns exemplos em que o software livre se tornou especialmente indispensável.
Um dos ganhos mais difundidos do software livre são as ferramentas de programação. Aqui está uma lista de algumas linguagens nas quais gravei código na última década:
- awk
- C
- C++
- ECMAScript
- Icon
- Java™
- Lua
- Objective-C
- Perl
- PHP
- PostScript
- Python
- Ruby
- shell (/bin/sh e companheiros)
O que elas têm em comum além de mim? Cada uma delas possui uma implementação de software livre razoavelmente completa. Cada. Uma. Delas. Pense sobre isso. É uma seleção muito boa de ferramentas de programação. Linguagens de script, linguagens compiladas. Coisas que podem ser usadas para gravar kernels. Coisas que podem ser embutidas em vídeo games.
Se você está acostumado com os softwares modernos, pode parecer estranho, mas costumava ser relativamente comum para programas que precisavam de algum tipo de funcionalidade de script desenvolver suas próprias linguagens de script proprietárias, que normalmente eram terrivelmente limitadas e irregulares. Hoje em dia, é bem comum simplesmente embutir Lua ou Python, ou algo do tipo, em um programa. Elas são grátis, atrativamente licenciadas e muito flexíveis.
De modo semelhante, muitas ferramentas de desenvolvimento que não são linguagens de programação estão disponíveis amplamente como software livre. Embora certamente haja editores comerciais, e alguns deles sejam muito interessantes, a maioria dos desenvolvedores que conheço usa pelo menos um editor de software livre como ferramenta principal. (Minha escolha é o nvi, que eu acho um pouco mais tranquilo e familiar com o sempre presente vim). Ferramentas de desenvolvimento, como make e Ant, muitas vezes são software livre.
Não é uma coincidência, em qualquer alcance da imaginação, que as ferramentas de desenvolvimento sejam um grande alvo para o software livre. Os desenvolvedores têm o hábito de gravar ferramentas de desenvolvimento. Eles não fazem isso para vendê-las — apenas para tê-las. Compartilhar essas ferramentas permite que os desenvolvedores usufruam dos esforços de outras pessoas e obtenham ferramentas melhores mais rapidamente. (Consulte "A vitória dos comuns" para obter uma discussão mais aprofundada sobre por que isso funciona).
O software livre transformou o cotidiano de trabalho dos desenvolvedores de software, e esse provavelmente seja um dos motivos pelos quais os desenvolvedores ficam tão propensos a empurrar modelos de software livre para outros softwares nos quais trabalham. Sabemos que ele funciona; contamos com ele para realizar nosso trabalho diariamente. Os desenvolvedores mais velhos também se lembram do quanto a vida era pior sem ferramentas de software livre.
Implementações e infraestrutura de referência
O padrão de imagem TIFF oferece uma implementação de referência de software livre. Isso significa que, essencialmente, não há desculpa para as empresas terem uma implementação incompatível; é gratuito possuir uma que seja comprovadamente compatível. Esta é uma estratégia muito eficaz para assegurar que um formato seja confiável e útil.
A tendência de fornecer implementações de referência canônicas com software livre completo e licença opcional tornou a vida muito mais fácil. Costumava ser muito comum que as implementações de formatos de arquivo fossem absurdamente incompatíveis. (Você ainda vê isso com alguns formatos em que as especificações oficiais se referem a uma implementação histórica em particular para a qual nenhum software livre está disponível). Formatos e protocolos que oferecem uma implementação de referência são muito mais fáceis de adotar e difundir.
Isso leva, é claro, à família de protocolos mais amplamente adotada.
Tomando a iniciativa de criar a Internet
Desculpas ao Sr. Gore, mas o software livre tem sido uma parte importante e fundamental da criação da Internet. A pilha BSD TCP/IP e ferramentas relacionadas encontraram um uso amplo ao simplificar os ciclos de desenvolvimento para uso do software em outro lugar. Desde o release inicial do NCSA httpd e Mosaic, as ferramentas que tornaram a Internet (e agora a World Wide Web) útil foram predominantemente de software livre.
O software livre é um candidato natural para uso em infraestrutura, é necessária abertura e muitas pessoas verificando erros, e há valor suficiente em ter o software para justificar os custos de desenvolvimento. E, talvez o mais importante, o software livre percorre um grande caminho para oferecer interoperabilidade grátis. Como a interoperabilidade é uma funcionalidade primária para ferramentas de rede, e não uma consideração secundária, ela é um recurso muito atrativo.
O impacto do software livre na Internet tem sido imenso. Em particular, o impacto da OpenSSL (e ferramentas específicas como OpenSSH) tem sido imenso. Sem uma implementação aberta e gratuita, a SSL poderia ter sido uma ferramenta usada para criar "diferenciação no mercado", o que significa que haveria uma vantagem comercial em tentar evitar que as pessoas tivessem segurança nas transmissões. Em vez disso, ela é amplamente usada. (E, assim como o desenvolvedor do Firesheep mostrou, provavelmente seria muito mais usada).
Não exatamente um software livre, mas...
Como observação final, existem coisas que não são propriamente "software livre", mas que foram claramente inspiradas por ele. Por exemplo, o código de origem do jogo Civilization IV se tornou disponível para que os usuários pudessem modificá-lo ou retrabalhá-lo. Os jogos da id Software (as pessoas que fizeram o Quake e Doom, que são os mais famosos) tendem a ser lançados em código aberto em algum momento, completos, com licença GPL.
Distribuir jogos antigos, que efetivamente atingiram seu fim como interesse comercial, pode ser uma ótima maneira de recrutar jogadores leais, que comprarão seu próximo jogo. É o surgimento de atitudes moldadas pela comunidade de software livre.
O software livre tem ajudado pessoas a perceberem que chega um ponto em que não é mais necessário manter seu código de origem em segrego para ter sucesso financeiro. Fique ligado na Parte 2, onde dou uma olhada nos modelos de negócio que têm permitido às pessoas realizarem um trabalho vigoroso em software livre.
Aprender
- A NASA
usa e contribui com o
software livre. Isto é ciência de foguetes, pessoal.
- O editor nvi é
uma implementação sólida de Berkeley vi, completa, com undo
infinito.
- A definição formal de software
livre é bastante interessante, mas geralmente eu reconheço um quando vejo.
- Leia uma versão do conto popular "Stone Soup" de um site que documenta um experimento bem-sucedido de cluster
Beowulf.
- Na zona de tecnologia Linux no
developerWorks, é possível ler tudo sobre um projeto de software
livre especialmente famoso.
-
Para ouvir entrevistas e discussões interessantes para desenvolvedores de software, confira os podcasts do developerWorks
.
-
Fique por dentro dosEventos técnicos e webcasts do developerWorks.
-
Siga o developerWorks no Twitter.
-
Confira conferências, feiras, webcasts e outros eventos que estão para acontecer no mundo todo e que são do interesse de desenvolvedores de software livre da IBM.
-
Visite a zona de software livre do developerWorks para obter informações detalhadas sobre instruções, ferramentas e atualizações de projetos para ajudar você a se desenvolver com tecnologias de software livre e usá-las com produtos da IBM, bem como nossos artigos e tutoriais mais populares.
-
Assista e aprenda sobre a IBM e tecnologias de software livre e funções de produto com as demos gratuitas on demand do developerWorks.
Obter produtos e tecnologias
-
Inove seu próximo projeto de desenvolvimento de software livre com versão de testes do software IBM, disponível para download ou em DVD.
- Faça o download das de versões de avaliação de produtos IBM
ou explore as versões de teste on-line no IBM SOA Sandbox e entre em contato com as ferramentas de desenvolvimento de aplicativos e produtos de middleware do DB2 ®, Lotus®, Rational®, Tivoli®e WebSphere®.
Discutir
-
Participe dos blogs do developerWorks
e participe da comunidade do developerWorks.
-
Participe da comunidade do developerWorks. Entre em contato com outros usuários do developerWorks, enquanto explora os blogs, fóruns, grupos e wikis orientados ao desenvolvedor.