O sistema operacional é o
responsável por ativar todos os periféricos e criar o ambiente sobre
o qual todos os outros programas rodam. É ele o responsável por
reservar processamento suficiente para que o MP3 que você está
ouvindo em background continue sendo tocado mesmo quando você
precisa abrir outro aplicativo pesado, ou por transferir programas e
bibliotecas sem uso para a memória virtual quando a memória
principal está toda ocupada, por exemplo. Isso faz com que o
trabalho do sistema operacional seja uma atividade inglória, já que
você só se lembra dele quando alguma coisa dá errado. :)
Para a tristeza de alguns e alegria de outros, o Windows é o sistema
operacional mais usado em desktops, o que faz com que ele seja a
plataforma mais familiar para a maioria. Muitas tarefas são
complicadas (experimente tentar encontrar drivers para alguma
placa-mãe antiga, por exemplo), mas como muita gente usa e muitos
passam pelos mesmos problemas, acaba existindo uma rede de suporte
em torno do sistema, que torna fácil conseguir ajuda.
O domínio da Microsoft na área de sistemas operacionais começou em
1981, com o lançamento do primeiro PC e da primeira versão do
MS-DOS. Embora não tivesse nada de especial com relação a outros
sistemas da época, o DOS cresceu em popularidade junto com os PCs,
seguido pelas diversas versões do Windows. Apesar disso, a Microsoft
é uma página recente na história da informática. Enquanto o MS-DOS
ainda dava seus primeiros passos, o Unix já era um sistema maduro,
usado na maioria dos computadores de grande porte e em estações de
trabalho. A história do Unix começa em 1969, na frente de um
computador igual a este:
Este é um PDP-7, um minicomputador da década de 60 que possuía
apenas 8 kbytes de memória RAM e utilizava fitas magnéticas para
armazenamento dos dados. Hoje em dia, qualquer agenda eletrônica ou
celular possui muito mais memória e poder de processamento do que
ele, mas na época ele era um equipamento relativamente poderoso, que
custava US$ 72.000.Devido às pesadas limitações da máquina, o
sistema operacional deveria ser extremamente enxuto e otimizado, de
forma a extrair o máximo de desempenho e consumir o mínimo possível
de memória. A combinação da criatividade dos desenvolvedores, a
necessidade e as limitações impostas pelo equipamento, resultaram em
um sistema bastante otimizado e elegante. Muitas das idéias surgidas
nesta época continuam sendo usadas até hoje.O Unix evoluiu durante a
década de 1970, passando a ser usado em cada vez mais equipamentos e
ganhando mais recursos. Quase sempre ele era usado em aplicações
“sérias”, incluindo instalações militares, bancos e outras áreas
onde não existe margem para falhas. Devido a tudo isso o sistema se
tornou muito robusto e estável.
Os primeiros sistemas Unix foram desenvolvidos de forma
colaborativa, dentro de universidades e centros de pesquisas. Embora
naquela época ainda não existisse a Internet como a conhecemos hoje,
existia uma grande colaboração entre os desenvolvedores. Isso mudou
na década de 1980, quando empresas como a AT&T, Sun e SCO, que
detinham os direitos sobre o sistema, passaram a desenvolver versões
proprietárias e a concorrerem entre si. A colaboração deixou de
acontecer e a plataforma foi fragmentada em versões incompatíveis.
Outro fator importante foi a falta de investimentos em versões
destinadas a micros PCs. Na época, os PCs eram vistos como
computadores muito limitados, incapazes de rodar sistemas Unix
completos (lembre-se de que estou falando do início da década de
1980, quando ainda eram usados micros XT e 286). Somados, estes dois
fatores fizeram com que a plataforma definhasse, deixando o caminho
livre para o crescimento da Microsoft e das diferentes versões do
Windows. Chegamos, então, ao Linux.
Tudo começou em 1991, quando Linus Torvalds começou a trabalhar no
desenvolvimento de um sistema Unix para rodar em seu 386. Na época,
o único sistema similar era o Minix, um sistema para uso acadêmico,
que era bastante limitado. No início, Linus usava o Minix para rodar
o editor, compiladores e outras ferramentas de desenvolvimento que
usava para desenvolver o Linux, mas, a partir de um certo ponto, ele
passou a usar o próprio Linux. Ou seja, depois de um breve período
de encubação dentro do Minix, o Linux passou a ser desenvolvido
dentro do próprio Linux. :)
De início, o Linux era um projeto muito pequeno, o hobby de um único
programador. Entretanto, ele tinha uma grande vantagem em relação
aos sistemas UNIX que o precederam: o simples fato de ser
disponibilizado sob a licença GPL. Isso permitiu que outros
programadores adotassem o projeto, passando a contribuir com
melhorias e correções. Subitamente, toda a demanda acumulada em
relação a um sistema Unix para micros PC foi canalizada em torno do
Linux, fazendo com que o sistema passasse a crescer em um ritmo cada
vez mais acelerado, chegando ao que temos nos dias de hoje.
A licença GPL, tão comentada, mas ao mesmo tempo tão
mal-compreendida, pode ser resumida em 4 direitos básicos e uma
obrigação:
1- Aplicativos disponibilizados sob a GPL podem ser usados por
qualquer um e para qualquer fim, sem limitações. Mesmo que
eventualmente os criadores mudem de idéia e resolvam passar a
distribuir novas versões do programa sob outra licença, as versões
que foram distribuídas sob a GPL continuam disponíveis, o que
permite que outros desenvolvedores criem uma derivação e continuem o
desenvolvimento. Isso traz uma boa dose de segurança para quem usa o
aplicativo, já que reduz a chance de ele ser descontinuado e deixar
de estar disponível. Enquanto houver um volume considerável de
usuários, é bem provável que o desenvolvimento continue, de uma
forma ou de outra.
2- Direito de tirar cópias do programa, distribuí-las ou até mesmo
vendê-las a quem tiver interesse. Existe a possibilidade de ganhar
algum dinheiro vendendo CDs gravados, por exemplo, mas como todo
mundo pode fazer a mesma coisa, é preciso vender por um preço
relativamente baixo, cobrando pelo trabalho de gravação e não pelo
software em si, que está largamente disponível.
Isso faz com que a forma mais eficiente de ganhar dinheiro seja
prestar suporte e vender serviços de personalização e não venda
direta, como no caso dos softwares comerciais. Para o cliente acaba
sendo vantajoso, pois o custo de implantação será o gasto com a
consultoria e treinamentos, enquanto ao implantar um software
comercial qualquer ele gastaria também com as licenças de uso.
3- Direito de ter acesso ao código fonte do programa, fazer
alterações e redistribuí-las. Para um programador este é o principal
atrativo, já que permite criar novos projetos usando como base o
código fonte de programas já existentes ao invés de ter sempre que
começar do zero, sem falar na grande oportunidade de aprendizado que
examinar o código fonte dos programas disponíveis propicia.
4- Direito (e ao mesmo tempo a obrigação) de redistribuir as
modificações feitas. Este é o ponto onde existem mais
mal-entendidos. Se você desenvolve um software por hobby, ou por
usá-lo internamente na sua empresa, e não possui interesse em
explorá-lo comercialmente, você pode simplesmente divulgar o código
fonte para todo mundo, o que é o caminho mais lógico se você
pretende atrair outros interessados em ajudá-lo no desenvolvimento.
Mas, caso você pretenda receber pelo seu trabalho de
desenvolvimento, existem duas opções:
a) Você pode distribuir o software livremente para aumentar a base
de usuários e ganhar vendendo suporte, treinamentos e
personalizações ou:
b) Você só é obrigado a distribuir o código fonte a quem obtém o
software, de forma que você pode trabalhar batendo de porta a porta,
vendendo o software para alguns clientes específicos e fornecendo o
código fonte apenas para eles. Não existe nada de errado com este
modelo, mas você perde a possibilidade de ter contribuições de
outros desenvolvedores, o que pode ser ruim a longo prazo.
Os softwares distribuídos sob a GPL também não “contaminam”
softwares comerciais ou de outras licenças no caso de distribuição
conjunta. Por exemplo, uma revista pode distribuir alguns softwares
GPL no meio de um monte de aplicativos fechados na mesma edição. Os
softwares GPL continuam sendo GPL, com todas regras que vimos acima,
enquanto os softwares comerciais continuam sendo fechados. A revista
deve incluir o código fonte dos aplicativos GPL (ou pelo menos a
informação de como obtê-los via internet), mas naturalmente não
precisa fazer o mesmo com os outros aplicativos incluídos no CD.
Você pode também usar algum software GPL em conjunto com o seu
aplicativo comercial, desenvolvendo um aplicativo qualquer que
utiliza o Postgree SQL (um servidor de banco de dados), por exemplo.
O Postgree SQL continua sendo GPL e o seu aplicativo continua sendo
fechado; qualquer um pode usar e tirar cópias do Postgree SQL, mas
você controla a distribuição do seu aplicativo. Uma coisa não
interfere com a outra.
Ou seja, muito embora muitos vejam a GPL como algum tipo de licença
comunista, que diz que todos os programadores devem fazer voto de
miséria e passar a trabalhar de graça em nome do bem comum, ela é na
verdade apenas uma licença que estimula a colaboração e o
reaproveitamento de softwares e componentes, que vem nos trazendo
diversas mudanças positivas.
Voltando a história, embora o kernel seja o componente mais
importante do sistema (e também o mais complexo), ele não é o único.
Qualquer sistema operacional moderno é a combinação de um enorme
conjunto de drivers, bibliotecas, aplicativos e outros componentes.
O kernel é apenas uma base sobre a qual todos eles rodam.
Alem do período de incubação dentro do Minix, o Linux se beneficiou
de diversos outros projetos anteriores, tais como o X (responsável
pela interface gráfica) e inúmeros utilitários, bibliotecas,
linguagens de programação, compiladores e assim por diante. A eles
se somam uma grande lista de interfaces e aplicativos que surgiram
nos anos seguintes, tais como o Gnome, KDE, Firefox, OpenOffice e
assim por diante.
Entre as ferramentas usadas desde os primeiros dias, estão o Emacs e
o GCC, desenvolvidos pela Free Software Fundation, como parte do
projeto GNU. O Emacs é um editor de texto que combina uma grande
quantidade de recursos e ferramentas úteis para programadores,
enquanto o GCC é o compilador que permite transformar o código
escrito nele em arquivos executáveis.
Isso deu origem a uma das maiores flame-wars da historia, com
Richard Stallman passando a exigir o uso do termo GNU/Linux (que é
pronunciado como “gui-nuu slash Linux”) para designar o sistema, em
vez de simplesmente “Linux”, argumentando que o projeto GNU foi
iniciado antes e que por isso merece crédito.
Este e um caso em que as opiniões se dividem, com alguns dando razão
a ele e realmente usando o “gui-nuu slash Linux”, e outros
argumentando que os componentes do projeto GNU correspondem a apenas
uma pequena parte do sistema e que por isso se fosse para dar o
crédito devido a todos os inúmeros componentes que formam uma
distribuição atual, seria preciso chamar o sistema de
X/Qt/KDE/GTK/Gnome/Mozilla/Firefox/OpenOffice/longa-lista/GNU/Linux.
O fato é que, excluindo qualquer discussão filosófica, o nome
“Linux” puro e simples e muito mais simples e fácil de pronunciar, o
que faz com que o “GNU/Linux” não seja usado fora de alguns círculos
específicos.
Continuando a história, embora o Linux tenha sido originalmente
escrito para ser usado em micros PC (mais especificamente no 386 que
Linux Torvalds usava em 1991), a modularidade do sistema, o fato de
ele ter sido escrito inteiramente em C e as boas práticas empregadas
no desenvolvimento permitiram que ele ganhasse versões (ou ports)
para outras plataformas. Hoje em dia, o Linux roda em praticamente
todo o tipo de processadores, dos processadores de 32 e 64 bits
usados em micros PC, a chips especializados usados em maquinário
industrial.
Existe ate mesmo um fork do kernel Linux que e capaz de rodar em
processadores 8088 e 286 (o ELKS), como os usados nos primeiros
micros PC. Embora estejam a muito obsoletos nos PCs, versões
modernizadas desses chips são relativamente populares em sistemas
embarcados, concorrendo com chips Z80 e outros processadores de 8 ou
16 bits, que embora desconhecidos do grande publico, são produzidos
e usados em quantidades gigantescas nos mais diversos tipos de
dispositivos. É justamente essa versatilidade que faz com que o
Linux seja usado em tantas áreas diferentes, de celulares a
supercomputadores.
Ao ver micros com Linux em exposição nas lojas e em mercados, tenha
em mente que esta é apenas a ponta do iceberg. O uso do Linux em
micros domésticos, pelo grande público, é uma coisa relativamente
recente. Antes de chegar aos desktops, o Linux cresceu entre os
desenvolvedores e usuários avançados, dominou os servidores, invadiu
o mundo dos dispositivos embarcados (celulares, roteadores, pontos
de acesso wireless e até mesmo modems ADSL) e se tornou o sistema
dominante no mundo dos supercomputadores.
Segundo o
http://www.top500.org/,
que mantém um rank atualizado dos 500 supercomputadores mais
poderosos do mundo, em junho de 2008 tínhamos 427 dos 500
supercomputadores mais poderosos rodando diferentes versões do Linux
(
http://www.top500.org/stats/list/31/osfam).
Dos restantes, 25 rodavam outros sistemas Unix e apenas 5 rodavam
Windows, 3 deles com o HPC Server 2008 e 2 com o Windows Compute
Cluster Server 2003, duas versões do Windows especialmente
otimizadas para a tarefa.