Software Livre - Definição e Direções Humberto Rossetti Baptista humberto at ime.usp.br Apresentamos aqui o conceito de Software Livre, o projeto GNU e a filosofia por trás deste tipo de programas. A influência da Internet, e o uso de software livre em ambientes comerciais é discutida a seguir. São apresentados alguns dos programas livres mais utilizados (e onde são utilizados) bem como o caso de uma empresa muito bem sucedida que "vive" de software livre.
Introdução Assim como a Internet o termo "Software Livre" era praticamente inédito fora do círculo da computação. Palavras e siglas estranhas, nas frases de pessoas também um pouco estranhas, não contribuíram para a popularização do termo nem do conceito. Com a explosão da Internet foi dado um súbito destaque a uma nova categoria de programas que praticamente 'carregava’ a Internet movimentando diversos serviços e em alguns casos indo até ao sistema operacional das máquinas que compõem a rede. Ser livre é a questão. Quanta liberdade se perde ao aceitarmos licenças de uso comerciais? Quanta cooperação, avanço tecnológico e conhecimento são perdidos por conceitos como "propriedade industrial"? Estas questões estão na gênese dos programas livres.
O que é "software livre" Do que se tratam os programas livres? Em primeiro lugar são programas comuns, construídos como quaisquer outros, geralmente uma linguagem de alto-nível e depois compilados, etc. A diferença está nos direitos que o autor dá para outras pessoas fazerem uso deste programa: a licença de uso. Existem diversos tipos de licença e conseqüentemente diversos tipos de comercialização de programas: •
1. Software Comercial - programas distribuídos na sua maioria somente na forma binária (executáveis) com direitos específicos (um ou alguns usuários, um ou alguns computadores, CPUs etc.) e quase sempre com um preço associado. Não são revelados detalhes de funcionamento, não se pode copiá-los para outros usuários e alterações (muito difíceis, dada a forma binária) são terminantemente proibidas.
•
2. Shareware - também costumam ser distribuídos na forma binária e ter características semelhantes aos comerciais, mas com uma diferença: podem ser distribuídas cópias para outras pessoas experimentarem o programa (e se gostarem registrarem-se com o autor, pagando uma certa taxa). Enquanto é tido como um tipo de comercialização inviável algumas empresas (ou autores) vão bem, como é o caso do WinZip.
•
3. Freeware - são os programas gratuitos, exatamente como os Shareware, mas não exigem registro e não têm taxa de uso. Não é permitida sua alteração.
•
5. Domínio público - programas que o autor abre mão dos direitos, perdendo inclusive o direito de cópia - o copyright - e outros dependendo da legislação. Em todos os casos o código fonte acompanha o programa. O programa pode ser embutido em outro programa e vendido etc.
Em 1983 Richard Stallman (mais sobre isso abaixo) criou o conceito de "Software Livre" como: •
4. Software Livre - programas que mantém o copyright, e ainda assim permitem a livre distribuição (cópia), acesso ao código-fonte e direito de alterar o programa.
É muito comum haver confusões (pela pouca divulgação do conceito) entre programas livres, de domínio público e mais ainda com freeware e shareware, incluindo-se nestas confusões os preconceitos associados às outras categorias, que podem ou não ser pertinentes aos programas livres. É necessário ter uma visão clara: programas livres são diferentes de shareware, freeware e domínio público. Uma comparação em alguns pontos principais é (C.R. = Copyright, C.F. = Código fonte disponível, Dis. = programa pode ser distribuído livremente, Alt. = programa pode ser alterado):
Modalidade C.R. C.F. Dis. Alt. Comercial
sim
o
o
o
Shareware
sim
o
sim
o
Freeware
sim
o
sim
o
Livre
sim
sim sim
sim
o
sim sim
sim
Dom. Público
O conceito de software "livre" A função do modelo de software livre é implementar e manter a "liberdade" relativa a um programa. A motivação disto é evitar que o conhecimento seja retido, permitir que as pessoas se ajudem e identifiquem os autores em seus trabalhos e derivados. Em 1983 Richard Stallman, um brilhante programador do MIT, ficou muito aborrecido quando viu o resultado de um trabalho acadêmico em que participara ser vendido pelo MIT a uma empresa e ser "trancado" para sempre por trás de contratos de licença impenetráveis. Com isto Stallman pediu demissão e formalizou o conceito de software livre em um manifesto [1] no qual apresentava e discutia a definição e a versão inicial da licença de uso de um programa livre: a licença GNU ou GPL. Além da definição de programa livre o manifesto lançou o 'Projeto GNU’ [3] (mais sobre isso abaixo). Para defender a noção de software livre Stallman fundou a Free Software Foundation ou FSF [2] que defende o conceito de software livre, coordena o projeto GNU e colabora na defesa da liberdade de programação.
O Projeto GNU
O termo G.N.U. significa 'G.N.U. is not Unix’ e o objetivo do projeto é criar um sistema operacional e aplicativos livres para as pessoas usarem. O "tipo" de sistema escolhido foi o UNIX, e hoje o projeto já atingiu seu objetivo primário, embora não do jeito que a FSF imaginava. De 1985 para cá o projeto criou compiladores, bibliotecas, editores de texto e centenas de outros programas para atingir seu objetivo. Muitos programas foram agregados e outros seguiram a filosofia de software livre embora não fossem necessários para o objetivo primário do projeto (o GNU Chess é um ótimo exemplo). Atualmente o projeto está as voltas com o núcleo de sistema operacional desenvolvido por pessoal da FSF - o HURD. Este promete uma série de avanços e tecnologias de sistemas operacionais em sua implementação e depois de muita demora, idas e voltas, está disponível em sua segunda versão beta [4].
Retornando aos programas livres, vejamos o que nos dá sua filosofia: a licença GNU (GPL [5]). Ela é bastante extensa e aqui nos bastam os pontos principais que ela garante aos usuários de um programa e seus derivados: •
Liberdade para conhecer (código fonte disponível)
•
Liberdade para alterar (programa pode ser modificado)
•
Liberdade para compartilhar (copiar, distribuir etc.)
A noção de programas derivados, com aqueles que são feitos a partir de outros, é fundamental para garantir a continuidade da GPL nos programas livres e impedir que eles deixem de ser livres algum dia (a recursividade aparece aqui de novo..).
Programas do Projeto GNU O projeto desenvolveu uma série de programas, uma lista parcial: •
Emacs – editor de texto sofisticadíssimo, com uma forte linguagem de programação e extensões variadas para as mais diversas finalidades, com ler newsgroups, páginas web etc.
•
TEX – sistema de composição (formatação) de texto que produz as melhores saídas no campo de composição digital.
•
GCC, G++, GPC, GNU LISP, G77, GNU Smaltalk, GNU ADA... – compiladores de C, C+ +, Pascal, LISP, FORTRAN, Smaltalk, ADA etc.
•
GNU – Debugger .
•
BASH – Bourne Again SHell - interpretador de comandos para UNIX.
•
X Window – sistema de interface gráfica.
•
GNU Hurd – núcleo (kernel) de sistema operacional.
•
GUILE – 'Ubiquitous Intelligent Language for Extension’, um mecanismo genérico de implementação de linguagens embutidas em aplicativos (como linguagens de macro, por exemplo).
•
Teak – um dos novos desenvolvimentos do GNU: interface gráfica para usuários iniciantes
ou leigos. •
Bibliotecas (C, C++, matemática, imagens ...)
•
... (uns 124 no último boletim [6]).
Linux x GNU Em 1991 Linus Torvalds, então um estudante de Ciência da Computação da Universidade de Helsinki na Finlândia, lança um núcleo de sistema operacional livre: o LINUX 0.02! A princípio não muito promissor, mas pegou impulso rapidamente e obscureceu totalmente seu 'concorrente’ o MINIX dando um 'curto-circuito’ no projeto GNU. Não era esperado um sistema GNU completo tão rápido, nem pela FSF, mas o núcleo era tudo que faltava, e este vácuo foi muito bem preenchido pelo Linux. Uma coisa perturbou a FSF e o pessoal do Projeto GNU: todos se referem ao Linux como sistema operacional, enquanto só o núcleo tem este nome os outros programas são todos GNU! O nome que eles propõem é sistema GNU/Linux.
Programas livres famosos Alguns programas livres famosos, que não foram desenvolvidos no Projeto GNU, mas acabaram adotando sua filosofia: Apache
Servidor Web (HTTP) mais utilizado na Internet (45% dos servidores na Internet o utilizam segundo a Netcraft [7]) e ele ainda não está disponível para Windows NT (em Alfa atualmente). Modular, flexível rápido e fácil de ser alterado são alguns dos motivos que levam webmasters a utilizá-lo. O Apache é usado por: FBI, Família Real, IMDb, Wired, UOL, Digital, Novell, IBM,
Oracle, Microsoft etc. PERL
Linguagem-amálgama [8] inventada por Larry Wall para facilitar a administração de sistemas (seu trabalho) tornou-se uma das mais populares, especialmente na WWW, mas é de uso geral e inclui recursos como orientação a objetos, acesso a bancos de dados, pacotes, multitarefa, acesso a rotinas de baixo nível do sistema operacional, recursos sofisticados (talvez os mais sofisticados) de processamento de texto, pode ler e instalar módulos a partir da Internet etc. Roda em 15 plataformas (em minha última contagem) incluindo: Unix , Plan 9, VMS, QNX, OS/2, Amiga, Windows 95, NT e Apple System. Recentemente a Microsoft contratou uma empresa para portá-lo para Windows 95 e NT (ActiveState, (até recentemente era Activeware)) [10]. Linux Núcleo de sistema operacional (vide discussão acima), roda em diversas plataformas (Intel, PowerPC, Motorola 68k, Sparc, MIPS e Alpha) provavelmente tem bem mais que 1 Milhão de usuários, premiado duas vezes como melhor S.O. de 1996 (Best to 1996 - Linux 2.0 pela PC Week e RedHat Linux 4.0 pela InfoWorld). Usam-no hoje: NASA, Cisco, Agencia Estado, etc. E um exemplo de uma empresa cujo carro chefe é o Linux: Caldera foi fundada por Raymond J. Noorda (fundador e ex-CEO da Novell).
Internet e os programas livres A Internet além de divulgar o conceito de programa livre ajudou na potencialização do desenvolvimento, ou seja, permitiu a formação de grupos interessados em um determinado tema e sua comunicação rápida muito mais facilmente. Além de reunir os desenvolvedores a Internet fornece os meios para reunir os usuários e para que os primeiros dêem suporte aos últimos. O suporte entre usuários também é bastante intenso e tudo isso de processa dentro de grupos de discussão, normalmente na Usenet ou em servidores de listas de discussão (grupos de discussão por correio eletrônico).
Recursos, Usabilidade e Performance? Os programas livres têm características próprias, e se quisermos fazer uma avaliação inteligente
deles devemos conhecer estas características. Os recursos dos programas livres normalmente são menos numerosos e tendem a ser mais genéricos que nos equivalentes comerciais, nem sempre é óbvio ou fácil usá-los, mas quando se entende podese fazer muita coisa. Alguns recursos implementados por programas livres são muito difíceis em termos de algoritmos eficientes e como não chamam atenção no marketing comercial só podem ser encontrados em programas livres. Os programas livres podem ser considerados menos fáceis de usar já que nem sempre a facilidade de operação é uma prioridade em seu desenvolvimento. Porém, a medida que os programas livres existentes satisfazem a maioria dos desenvolvedores este podem se voltar a interfaces mais fáceis (vide o Teak). Servidores e ferramentas de desenvolvimento são um dos principais nichos de programas livres, onde pode-se sem preocupação achar software livre tão bom quanto ou melhor que seus equivalentes comerciais com facilidade. O desempenho destes programas é na maioria das vezes superior aos demais, pois as pessoas que os escrevem ou são ou tem ajuda dos melhores cientistas de computação e têm sempre os melhores algoritmos para dadas tarefas. Em alguns momentos pode-se encontrar programas mais lentos, porém nota-se que a razão disto costuma ser que os programas livres são mais genéricos e robustos (vide abaixo).
Confiabilidade Um receio - logo não é uma crítica e muito menos inteligente - sobre a confiabilidade dos programas livres. Como pessoas soltas pelo mundo, comunicando-se somente pela Internet sem nenhuma empresa por traz podem produzir software de qualidade e robustez? Este receio é importado dos Shareware e para derrubar esta falsa noção o melhor é verificar o trabalho feito por Barton P. Miller em 1995 [12] na Universidade de Wiscousin, que, pela segunda vez, mede a confiabiliade de utilitários Unix em diversos sistemas comerciais e em um livre e dos utilitários GNU em sistemas comerciais. Foram ao todo oito Unixes: 7 comerciais e 1 livre, 80 utilitários (entre linha de comando, X Windows e rede). A filosofia de teste é muito simples: entradas aleatórias para todos, considera-se um programa "errado" quando trava (dá "core dump"), termina sem executar o que deveria ter feito ou entra em loop. Os resultados de falhas dos programas na pesquisa são: •
Utilitários comerciais: falham de 15% a 43%
•
Utilitários GNU: 6%!
Ou seja programas comerciais submetidos a entradas aleatórias de bytes falham um número assustador de vezes, e isso o artigo continua, é fruto de práticas inadequadas de programação. E muitos erros continuaram em programas comerciais, desde a primeira pesquisa em 1990.
Caso: Cygnus Software A Cygnus é uma companhia inglesa fundada em 1989 e que "vive" de software livre oferecendo programação personalizada, suporte e portes de programas para sistema embutidos e outros. Oferece também boas ferramentas de desenvolvimento. De 1992 para cá experimentou um crescimento de 65% ao ano, que para padrões de qualquer lugar no planeta são excelentes. Atua hoje em quatro países: EUA, Japão, Inglaterra e Alemanha, com mais de 100 empregados na matriz. Este é somente um exemplo de como se ganha dinheiro com software livre, note que este também pode ser vendido (embora não possamos impedir ninguém de copiá-lo), e realmente o é por diversas empresas.
Conclusão Com o crescimento da Internet assistimos um grande crescimento de programas livres e sua presença na mídia tem sido bastante ampliada. A filosofia está extrapolando a plataforma Unix com diversos portes e alguns desenvolvimentos originais para outras plataformas. A idéia original do projeto GNU está sendo extrapolada e ampliada, e foi criado um novo modelo de desenvolvimento dentro do software livre: "Bazar" em oposição ao tradicional de "Catedral" (vide o excelente artigo [11]). Os benefícios de se usar programas livres são vários e entre eles temos: qualidade, bom suporte (apesar de não haver uma empresa responsável obtém-se respostas em pouco tempo (horas às vezes) na usenet) ou suporte contratado, participação nos destinos do programa muito mais direta (podendo chegar a implementação). Para quem estuda Computação conhecer software livre é obrigatório, para os demais, bem, o software livre estará no caminho deles algum dia.