terça-feira, 15 de fevereiro de 2011

Como a Microsoft poderia ter ajudado o Linux a dominar o mundo

Nos dias de hoje, o sistema livre Linux detém cerca de 1% do mercado. A maioria dos computadores do planeta roda alguma versão do Windows. Mas saiba que a situação, hoje, poderia ser exatamente oposta e o Linux poderia ser o sistema dominante se a Microsoft tivesse tomado uma simples decisão há 24 anos atrás.



Para entendermos a história, devemos voltar no tempo, mais precisamente para o final de 1979. Naquele ano, a empresa de Bill Gates havia comprado uma licença da versão 7 do Unix e anunciou, em Agosto do ano seguinte, que tornaria seu sabor do Unix disponível para o mercado de PCs de 16-bit da época. Como a Microsoft não podia usar o nome Unix, ela resolveu rebatizar a sua versão como Xenix.

De acordo com a Wikipedia, o Xenix não era vendido diretamente para os usuários finais mas, sim, para os fabricantes de computador, que o instalavam em seus micros. Devemos lembrar que essa política também era aplicada ao MS-DOS até a versão 5 do sistema, quando o mesmo passou a ser disponibilizado para o usuário final como um upgrade (procurem no Youtube por "Silly MS-DOS 5 Promo Video"). Em 1985, a nova versão do sistema foi baseada no famoso System V e, em 1987, a SCO o portou para a arquitetura 386. Neste mesmo ano, a empresa do tio Bill fez um acordo com a IBM para desenvolver o OS/2 e perdeu o interesse em continuar com o desenvolvimento do Xenix, transferindo sua propriedade para a SCO. Posteriormente, ela também perderia o interesse no OS/2 e passaria a desenvolver o Windows NT.

O resto da história você já sabe: o Xenix se tornou o SCO Unix e, alguns anos depois, a SCO inicio uma série de ações legais contra os usuários de Linux porque o sistema livre supostamente violaria algumas patentes do sistema da empresa. Neste meio tempo, a Microsoft decidiu que o Windows NT era um sistema operacional melhor do que o Windows 9x (na opinião da empresa) e começou uma estratégia de migração dos usuários para sua nova plataforma. Tal estratégia foi concluída em 2001, com o lançamento do famoso Windows XP.

Mas como a empresa considerada a inimiga número um do software livre poderia ter ajudado o Linux a ser o sistema mais utilizado do mundo?

Para respondermos a esta pergunta, precisamos fazer outra pergunta: por que os usuários finais tem pavor do Linux?

Bem, um sistema operacional nada mais é do que um programa ou conjunto de programas que faz a ponte entre o usuário, o software e o hardware. Assim, a nível de kernel, o Linux e o Windows possuem a mesma função e não são um obstáculo ao usuário, pois este não vê o sistema operacional em si funcionando. O grande obstáculo são os programas que rodam neste sistema operacional. Não que os programas do Linux sejam ruins, mas o fato é que o usuário final está tão acostumado com os programas que rodam no Windows que, quando muda de sistema, acaba estranhando a maneira de operar os novos programas. Este é o maior obstáculo à adoção em massa do Linux atualmente.

Agora, vamos supor que, em 1987, a Microsoft tivesse decidido não vender o Xenix à SCO. O que teria acontecido?

A Microsoft começaria a desenvolver o OS/2 junto à IBM, paralelamente ao Xenix. Com o tempo, ela perceberia que o Xenix, por ter uma base sólida Unix, era superior tanto ao MS-DOS quanto ao OS/2. Assim, no final da década de 80, a empresa faria o que começou em meados da de 90: venderia o Xenix às empresas e o MS-DOS aos usuários domésticos. Não obstante, o Xenix e o DOS teriam um sistema de compartilhamento de redes em comum e o Xenix poderia ser utilizado como servidor de redes para estações MS-DOS.

Com o passar do tempo, a empresa perderia o interesse em continuar desenvolvendo o OS/2 e planejaria migrar seus usuários domésticos para o Xenix que, desde 1987, era um sistema de 32-bit, ao contrário do MS-DOS e do Windows 3.11, que eram de 16. Assim, o MS-DOS 6.0 teria vários comandos Unix para preparar os usuários: grep, cut, wc, less, more, entre outros, estariam presentes nos discos de instalação do MS-DOS. O DOS, assim, seria "um UNIX monotarefa e monousuário", em contraste com o Xenix, que suportaria vários programas ao mesmo tempo e vários usuários. Além disso, os parâmetros de linha de comando dos programas do DOS seriam passados com um - e não com uma / (Dizem que a MS tentou aproximar o DOS do Unix, mas acabou desistindo). Eventualmente, no início dos anos 90, a Microsoft compraria a SCO e delegaria a esta empresa a tarefa de auxiliá-los a desenvolver o Unix.

Ainda com a transição em mente, em 1993, a Microsoft lançaria duas versões do Windows 3.11: o Windows for MS-DOS e o Windows for Unix. A primeira seria o que todos nós conhecemos: uma interface gráfica para o MS-DOS e a segunda seria apenas um ambiente desktop para o Xenix que rodaria sobre o servidor X do sistema, quiçá também tivesse seu próprio servidor X embutido.

Apesar de a estratégia ser excelente, afinal a interface do sistema seria a mesma nos dois ambientes e os arquivos criados em um poderiam ser abertos no outro, os aplicativos desenvolvidos para o Windows for MS-DOS não rodariam no Windows for Xenix, afinal, o formato dos executáveis seria diferente (basta ver, por exemplo, que os programas para Windows NT 4 não rodam no Windows NT 4 para PowerPC). Com isso, a Microsoft teria que desenvolver uma camada de compatibilidade entre os dois sistemas - similar ao Wine. Essa camada já viria no Windows for Unix e estaria à venda para a versão DOS.

Com o OS/2 naufragado, em 1995 a Microsoft resolveria lançar seu sistema operacional de 32-bits chamado Windows 95 que nada mais seria do que o ambiente gráfico Windows remodelado rodando sobre o kernel Xenix. Assim, o Windows NT não existiria e a empresa lançaria três versões de seu sistema: Windows 95, para usuários domésticos; Windows 95 Professional, para empresas e estações de trabalho e Windows 95 Server, para servidores. Desde então, todos os usuários teriam um sistema Unix sólido e confiável rodando em seus computadores. O editor de registro nada mais seria do que uma interface gráfica para manipular os arquivos que estariam em /etc e a empresa incluiria, nesta versão, a camada de compatibilidade com os aplicativos do Windows 3.11 para DOS a fim de que os programas desenvolvidos para este ambiente pudessem ser executados.

E como o Linux poderia ter se benefifiado disso tudo?

Bem, atualmente, portar um programa desenvolvido para Linux para Windows não é uma tarefa tão simples quanto parece. A começar, a biblioteca gráfica dos dois sistemas é diferente, o que pode ser resolvido com a inclusão da QT ou da GTK no pacote de instalação dos programas, mas este não é o único problema: a estrutura de pastas é totalmente diferente: o Linux não tem um C: e o Windows não tem um /etc; Assim, quem porta um programa de um ambiente para outro precisa se preocupar com fatores muito mais importantes do que a biblioteca gráfica: é necessário decidir como serão salvas as configurações: será que o programa vai se comportar como um alienígena no sistema, tendo um arquivo de configuração em alguma pasta, ou será que o desenvolvedor se dará ao trabalho de implementar uma interface para o Registro do Windows? Como serão chamadas as caixas de abrir e de salvar arquivos? E as chamadas exclusivas a funções do Linux que não existem no Windows? O mesmo vale para o caminho inverso.

Todos esses detalhes geram seções de compilação condicional que aumentam exponencialmente o tamanho do código e de sua manutenção. É claro que, se o Windows fosse um sistema que rodasse sobre uma base Unix, nada disso seria necessário: os desenvolvedores de softwares para Linux poderiam utilizar os mesmos caminhos e arquivos de localização que utilizam nos programas originais nas versões de seus softwares para o sistema proprietário: a única exigência seria instalar a Qt ou a GTK, o que poderia ser feito facilmente. Se o Windows fosse apenas uma interface sobre o Xenix, portar aplicativos de um sistema para outro seria infinitamente mais simples do que é hoje.

No entanto, isso não significa, necessariamente, que teríamos aplicativos proprietários e mais famosos para Linux. Como exemplo, podemos citar que o Photoshop está disponível para Mac OS X, que é um Unix, mas não está disponível para Linux, que é outro Unix-Like. A mudança de plataforma tornaria, isto sim, mais fácil desenvolver o Wine, pois a maior parte do trabalho já teria sido feita. Ao invés de precisarem reinventar toda a roda, como fazem hoje, todo trabalho necessário seria criar uma implementação livre da interface gráfica do Windows - algo como uma OpenGDI - e uma camada de compatibilidade com o sistema - algo similar ao que temos disponível no FreeBSD para rodar aplicativos para Linux. Como a arquitetura dos dois sistemas seria a mesma, com talvez algumas poucas diferenças entre os comandos, o nível de compatibilidade seria maior e os aplicativos para Windows poderiam ser instalados na própria árvore de pastas do Linux!

Além disso, o porte de interfaces gráficas, como KDE e GNOME, para o Windows rodando sobre Xenix seria trivial. Se, hoje, o KDE para Windows são apenas os aplicativos do ambiente rodando sobre o sistema, com a base Xenix teríamos o ambiente desktop completo. Claro que, possivelmente, a Microsoft incluiria dispositivos em seu sistema para impedir o usuário de trocar de ambiente gráfico, mas nada que um hack ou um aplicativo de terceiros não resolvesse. Além de tudo isso, o próprio Linux iria co-evoluir e tornar-se melhor do que é hoje.

A polêmica questão da compatibilidade de hardwares também seria resolvida: não que os fabricantes começassem a desenvolver drivers para Linux, mas portá-los ou fazer engenharia reversa nos mesmos seria um processo muito mais simples. Talvez fosse lançada até uma camada de compatibilidade, a nível de kernel, para usar os drivers para Windows/Xenix no Linux.

Com este cenário, migrar para um ambiente livre seria uma tarefa muito mais simples e trivial do que é atualmente: a estrutura de pastas e a linha de comando dos dois sistemas seria a mesma (com diferenças imperceptíveis); os usuários de Windows interessados em migrar poderiam instalar o KDE ou o GNOME completos em seu sistema e utilizá-los junto à interface oficial; haveria, também, uma versão livre da interface do Windows que rodaria sobre o sistema livre, sem falar dos vários aplicativos para Linux, que funcionariam da mesma forma. Desse modo, a migração seria mais suave e quando o usuário decidisse mudar para o GNU/Linux, já estaria totalmente familiarizado com seu ambiente gráfico e com seus aplicativos, tendo uma curva de aprendizado mínima e podendo rodar seus programas proprietários preferidos através do Wine, que teria 100% de compatibilidade.

E por que ele mudaria? Ora, mesmo que o Windows tivesse sido uma interface para um Unix, ele ainda seria o sistema mais utilizado e, assim, seria o principal alvo dos vírus e fraudes bancárias que, como sempre, não funcionariam no Linux. Em meados de 2005, o Linux teria uma participação muito maior do que tem hoje e muitos fabricantes de software começariam a portar seus aplicativos para o sistema, o que seria muito mais fácil e seria impulsionado pela onda mobile que está nos arrastando. Em 2010, o Linux teria uma participação igual à do Windows e, talvez, em 2012, ele já começaria a superar o sistema proprietário, por ser mais leve e seguro. Com poucas alternativas, nesta época, a Microsoft desistiria de utilizar o Xenix como base e passaria a utilizar o kernel Linux como base de seu sistema operacional.

Se uma simples decisão tivesse sido diferente, hoje poderíamos ser a maioria. Quem sabe?

Nenhum comentário:

Postar um comentário