geek

O que há de errado com o Linux?

Primeiramente, vou deixar claro que eu adoro o Linux. O surgimento deste sistema operacional livre em 1991 foi um dos acontecimentos mais felizes da história da informática, e foi um elemento fundamental para o crescimento e popularização da Web, sendo que o Linux, junto do também livre Apache, forneceu uma plataforma gratuita, livre e de alta qualidade para servidores da internet; até hoje é o mais usado nesta seara. Poderia ter sido diferente. O sucesso do sistema do pinguim foi resultado de certas contingências: O BSD (hoje FreeBSD), versão do Unix desenvolvida pela Universidade de Berkeley, Califórnia, era um sistema livre – gratuito e de código aberto – bastante completo e maduro, tinha tudo para ser a alternativa livre ao Windows e Mac OS, mas no começo dos anos 90, mas estava impedido de ser distribuído, devido a um processo da AT&T, criadora do Unix e detentora da marca, contra a Berkeley. Na década anterior, o pacote de software GNU, de Richard Stallman e sua Free Software Foundation, conseguiu reproduzir diversas ferramentas fundamentais do Unix, usados até hoje, como o compilador gcc, o editor de texto emacs, o dd, interfaces de redes TCP/IP…

Mas um sistema operacional completo precisa de um kernel, que é sua base, controlando diretamente o hardware e gerenciando a alocação de recursos do sistema e a execução de programas. O kernel do GNU, o Hurd, estava longe de ser funcional. Afortunadamente, um jovem estudante da Suécia, Linus Torvalds, criou um kernel muito bom, que o GNU acabou adotando, e serviu como a peça que faltava no quebra-cabeça. Até hoje alguns puristas se referem ao sistema Linux como GNU/Linux. O Hurd acabou saindo e ainda existe, mas não serve para nada. O FreeBSD também saiu, quando o problema judicial foi finalmente resolvido, mas só depois do sucesso do Linux já ter emplacado. É empregado em diversos sistemas de produção, mas não tão amplamente quanto o Linux.

Quem sabe como o mundo hoje poderia ser diferente se o FreeBSD não estivesse interditado no começo dos anos 90… Mas o fato é que o Linux ganhou, e isso foi bom, é o sistema que move os datacenters do Google e Facebook, os computadores de Wall Street, da Nasa e do CERN, bem como os do brasileiro Inpe, Instituto Nacional de Pesquisas Espaciais… A lista é longa, e prova que se trata de um sistema extremamente seguro e confiável. E não faltou quem dissesse que um sistema operacional feito por voluntários, de forma (quase) descentralizada, jamais funcionaria.

O Linux foi também fundamental para a revolução dos smartphones, sendo que o sistema Android usa um kernel Linux, isto é, uma versão do kernel altamente modificada pelo Google, mas ainda assim Linux. E como a Microsoft foi míope e simplesmente não conseguiu acompanhar o mercado mobile e entregar um Windows Phone que as pessoas quisessem usar, e a BlackBerry foi conservadora demais, sendo quase extinta (acabaram se rendendo ao Android), acabou que quem não tem iPhone “usa Linux”. Entre aspas, porque apesar de, a rigor, qualquer sistema com kernel Linux ser um sistema Linux, incluindo o Android, ele é uma variação bastante heterodoxa do sistema.

Mas justamente onde o Linux começou, no Desktop, nos PCs e notebooks, é onde ele tem uma fatia quase insignificante do mercado, para a frustração de Linus Torvalds. Por quê?

A resposta padrão é dizer que foi tudo conspiração capitalista da Microsoft e da Apple, que usaram de marketing agressivo e esquemas monopolistas para impedir as pessoas de usarem um sistema operacional grátis e melhor. Ok, não vou dizer que não tem um fundo de verdade, mas não se trata apenas de marketing, não dá para dizer que o Linux só não é mais usado em computadores pessoais por desconhecimento e “opressão capitalista”.

Muitos fãs do Linux, que conhecem bem suas qualidades, adorariam poder usá-lo no dia-a-dia, em seu computador principal, mas não o fazem por ser simplesmente inviável. É o caso deste que vos escreve. Eu tenho uma máquina com Linux, mas não é a que eu uso costumeiramente. E infelizmente não parece que a situação vai mudar. O Ubuntu da Canonical foi o que chegou mais perto do público geral, mas ainda tem uma adoção ínfima. Há diversos motivos, e eu os aponto não porque sou um vendido da Microsoft e da Apple que odeia software livre, acho que deixei isso claro, mas porque Linux é importante e eu gostaria que ele melhorasse.

 

Ideologia demais

Sendo realista: Quando uma pessoa quer um sistema operacional para seu computador, ela quer algo que funcione, que sirva bem para suas tarefas, não uma religião. O Windows já foi realmente um lixo, mas melhorou muito, o Windows 7 e o 10 são satisfatórios para quase todo mundo, não dá muita vontade de trocar. O movimento software livre foi em grande medida ideológico. Mas a ideologia até que foi produtiva por muito tempo, e vai muito além do Linux; muitas excelentes aplicações para Windows são distribuídas gratuitamente e/ou com código aberto, e muitos destes desenvolvedores são pragmáticos e realistas, preocupados em entregar algo que funcione bem e que possa ser aprimorado por outros. Mas o culto do software livre exagera, e como. Especialmente seu papa, Richard Stallman (na foto acima), que prega uma espécie de “veganismo digital”, segundo o qual nenhum usuário deveria jamais aceitar usar software que tenha uma única linha de código proprietário, e que se orgulha de ter um computador até com uma BIOS software livre.

Segundo seu credo, se você não controla o software, o software controla você, e sua livre distribuição – sempre junto do código fonte – é moralmente necessária. Poderia dizer que o problema é que os programadores não vivem de vento e precisam ganhar dinheiro de alguma forma. Mas o movimento software livre não dá tanta ênfase à gratuidade, mas que seu código-fonte seja aberto e disponibilizado e possa ser modificado livremente. A grande maioria dos usuários não são programadores, e não se pode esperar que todo mundo aprenda a programar; então não faz muita diferença para a maioria dos usuários se o código é aberto; se o software não faz o que você quer, você não vai saber muda-lo; servindo para os seus fins, pouco importa se o código é aberto. Isto, é claro, vendo pela perspectiva do usuário comum. Existem preocupações sérias quanto a software fechado, especialmente em relação à segurança, flexibilidade e qualidade geral. Uma abordagem diferente do software livre, o open source, abominada por Stallman, é bem mais tranquila e pragmática, e seu foco é em produtividade, não em “liberdade”. E muito software mistura código aberto e fechado.

Quase todas as distribuições Linux vêm com uma porção de código proprietário embutido, como o Red Hat, uma das principais distribuições comerciais do mercado, e o Ubuntu e suas derivações, como minha favorita, o Zorin. Este software proprietário inclui drivers, sem os quais você pode nem conseguir usar a webcam e microfone, e codecs que permitem ouvir músicas e ver vídeos. Não por acaso, as distribuições menos rígidas ideologicamente foram as que tiveram mais adoção do público, para uso doméstico e comercial, independentemente de serem condenadas pelos asseclas do software livre.

Comunidades babacas

O Ubuntu melhorou, e muito, a relação da comunidade Linux com o público geral, tornou-o menos assustador, e felizmente não é mais a única distribuição Linux com usuários prestativos, que ajudam os iniciantes. Mas ainda assim, o problema da babaquice se mantém, principalmente em outras distribuições mais raiz.  Como estas distros oferecem pouco ou nenhum serviço de suporte ao usuário, o usuário de Linux precisa frequentemente pedir ajuda na internet, nos famigerados fóruns… E se prepare para ler comentários de escárnio ao pedir ajuda em fóruns de Linux, fazendo piada com sua ingenuidade (“ai, que coisa de noob, aposto que nem sabe compilar os próprios programas…”) e exigindo que você passe uma infinidade de detalhes técnicos e tente um milhão de coisas sozinho antes deles mexerem um dedo para ajudar. Ninguém que não trabalha com informática tem paciência para isto.

A atitude desta fanbase mais raiz (as exceções que me perdoem) é também ridicularizar toda e qualquer melhoria que torne o sistema mais amigável ao usuário. “Eu não preciso de uma babá”, é o que muitos dizem do nano, editor de texto mais amigável que os estoicos emacs e vi. E interfaces gráficas então… Eu admito que temos um problema real por um lado, de excesso de comodismo por parte dos usuários: Ninguém mais quer aprender nada de informática. Qualquer coisa que leve mais de 5 minutos para aprender já é muito complicado. Isto é um extremo, e muitos dos problemas recorrentes que as pessoas têm com informática acontecem porque elas não têm o mínimo interesse em aprender nada além do muito superficial. Mas o outro extremo é rechaçar qualquer solução que seja mais intuitiva e permita mais facilmente fazer o que você quer sem ser um profissional da área.

Uma coisa é não se dar ao trabalho de aprender qualquer coisa que leva mais de 5 minutos para aprender, outra é não se dar ao trabalho de aprender qualquer coisa que leva dias para aprender. As pessoas têm outras obrigações, afinal (aliás, desculpe a falta de atividade no blog, e não esqueci da segunda parte da tradução). Mas mesmo que a parcela pragmática dos desenvolvedores Linux tenha boa vontade em desenvolver soluções para leigos, temos outro problema

Pulverização e falta de padrões e compatibilidade

O desenvolvimento descentralizado é ao mesmo tempo a força motriz e o calcanhar de Aquiles do Linux. O próprio kernel Linux recebe contribuições de milhares de desenvolvedores voluntários de todo mundo, enquanto Torvalds apenas dá a palavra final sobre o que entra para a versão oficial do kernel (não se sabe o que aconteceria se ele morresse de repente). Há uma centralização e uma hierarquia no projeto, assim como a Wikipédia, outro projeto feito de colaborações livres que, ao contrário do que muitos pensam, não é a casa da mãe Joana, e que no começo muitos pensaram que jamais poderia dar certo.

Mas Linux é só o kernel, e o kernel sozinho não serve para nada, então diferentes distribuições constroem diferentes sistemas operacionais em cima do Linux, as distribuições ou distros, cada um com sua própria interface gráfica (caso haja), seleção de programas e serviços padrão, repositórios de softwares, sistemas de gerenciamento de pacotes… Só que infelizmente não são diversas equipes trabalhando por um objetivo comum, mas  cada uma reinventando a roda à sua maneira. Sim, diversidade é bom, concorrência gera resultados positivos, mas tudo tem um limite, todo mercado tem um ponto de saturação.

Há centenas de distribuições Linux, a maioria delas derivada de algum dos projetos principais (Debian, Red Hat/Fedora, Suse, Slackware e Ubuntu, que por sua vez é derivado do Debian). E a maioria delas é inútil, oferecendo apenas diferenças cosméticas com relação à distro em que se baseiam. Mas entre as distribuições também existem diferenças mais profundas, lembre-se que com o mesmo kernel dá para fazer inúmeros sistemas operacionais totalmente diferentes. Os drivers ainda são um problema, e com tanta idiossincrasia entre as distros, é difícil fazer drivers padrão que sirvam para todas. Não dá para ter plena segurança que um novo equipamento comprado para o computador vá funcionar no Linux, não como se teria com o Windows ou Mac.

A falta de APIs padronizadas são outro problema. Grosso modo, API é uma interface do programa com o sistema operacional, o programa não conversa diretamente com o sistema operacional, ele conversa com uma interface que faz a intermediação com o sistema, simplificando e agilizando o trabalho do desenvolvedor: Ele não precisa escrever um monte de código para ensinar o Windows a desenhar uma janela, pixel por pixel, só precisa escrever uma linha de código para fazer a API mandar o Windows desenhar uma janela. A Microsoft, desde o Windows 95, oferece a Win32, e a Apple, desde o lançamento do OSX em 2001, a Cocoa e a Carbon; e apesar do sistema operacional “por baixo do capô” ter mudado radicalmente ao longo das décadas, as APIs (as do Mac mais que a do Windows) conservaram sua estrutura, permitindo que os programadores não precisam aprender a programar do zero para cada nova versão do sistema operacional, e que um programa não necessariamente deixe de funcionar para cada versão nova, ou só precise de alguns ajustes.

No Linux, por conta da pulverização dos grupos de desenvolvedores e o imenso número de distribuições, não há tal padronização. Falta uma API gráfica comum, para que todos os desenvolvedores de programas com interface gráfica possam fazer versões de seu software para Linux seguros de que vai rodar em qualquer Linux. Há diversas interfaces gráficas para o Linux, mas a maioria delas são toscas em comparação com as do Windows e Mac, em grande parte porque, com notáveis exceções (como o OpenSuse) todas são pensadas como um mero acessório que permite noobs fazerem o que um expert faria muito mais rápido pela linha de comando.

Faz falta também uma API de áudio comum, problema que só recentemente começou a ser sanado pelo pulseaudio.

É um problema que afasta quem trabalha com áudio e vídeo, e quem precisa de programas profissionais como o Adobe Photoshop, o Sony Vegas, ou mesmo quem só precisa do Word da Microsoft. Apesar da boa vontade dos programadores de alternativas livres, a maioria não é tão agradável de se usar quanto as alternativas não livres, nem tão funcional, e tais programas não são totalmente compatíveis com os arquivos de suas contrapartes comerciais: Um documento do Word pode ter a formatação toda bagunçada ao ser aberto no Writer do LibreOffice, por exemplo.

E o que dizer dos jogos? Eis o motivo número um de fãs do Linux não usarem Linux. No Steam o número de jogos para Linux é ínfimo perto do que há para Windows e mesmo para Mac. O Wine, programa que permite rodar programas de Windows no Linux, funciona para muita coisa, mas não para tudo, e não de forma totalmente confiável, não deixa de ser uma gambiarra. Talvez houvesse mais interesse de desenvolver programas comerciais para Linux se houvesse mais coesão entre suas diferentes distribuições, e menos delas, menos derivações irrelevantes com uma maior parcela dos desenvolvedores trabalhando juntos. Neste caso, menos seria mais. Isto também poderia agilizar o desenvolvimento de software livre e fazê-lo melhor, mas infelizmente seria extremamente difícil mudar a cultura da comunidade Linux. Por outro lado, não faltam exemplos que mostram como ele poderia ser melhorado.

Outros Paradigmas

O FreeBSD atualmente não é muito voltado ao Desktop, e é um projeto bem menor, mas com diferenças fundamentais. Apesar de ter menos gente e muito menos projetos (como eles chamam suas distribuições) estes projetos são muito mais focados e coesos. Ao contrário do Linux, o projeto BSD não é apenas o kernel, mas se refere a outras partes do sistema. É considerado mais estável e seguro por muitos. A licença BSD pode ser usada para licenciar qualquer software, gratuito ou não, uma alternativa à licença GPL do Linux, sendo bem mais curta e simples, e dando quase a mesma liberdade, mas não exigindo a distribuição do código-fonte junto, nem proibindo que o software seja distribuído junto de software com outra licença, ou seja, não proíbe misturar software livre com proprietário, o que os desenvolvedores Linux fazem de qualquer forma, mesmo a GPL proibindo.

O Android, que podemos dizer que é o Linux que deu certo com o público geral, deu certo, dentre outros motivos, pela segurança que o Google deu aos desenvolvedores para trabalharem com ele. Um sistema operacional só é útil se os desenvolvedores tiverem interesse em fazer software para ele. Nos anos 2000, antes dos smartphones, existiam celulares com sistema Symbian em que se podia instalar jogos e outros aplicativos em Java, que supostamente é uma plataforma universal. Supostamente, porque cada celular tinha uma versão diferente do Java, tamanhos de telas diferentes, teclados diferentes… Era uma questão de sorte se um aplicativo Java que você baixou para o seu Symbian rodaria ou não, e não era muito viável economicamente desenvolver aplicativos que só rodariam em uma determinada linha de celulares da Nokia ou da Motorola.

Desde que adquiriu o Android, inaugurando o AOSP (Android Open Source Project) o Google elaborou um documento, o CDD (Compatibility Definition Document), que dá bastante liberdade para os fabricantes fazerem aparelhos diferentes e com versões customizadas do Android para eles, mas determina um mínimo de especificações técnicas que um celular Android deve cumprir, de hardware e software; e desenvolveu uma API e um SDK (kit de desenvolvimento) em Java que servem para o programador desenvolver com a garantia de que seu aplicativo poderá rodar na maioria dos aparelhos Android. E também criou o Android Market, atual Play Store, uma imitação da AppStore da Apple, verdade, mas uma imitação bem-feita, pois fornece um canal único para os usuários adquirirem aplicativos, aplicativos estes que precisam estar em conformidade com um certo padrão, para garantir compatibilidade e segurança. Se aparece na Play Store do seu celular, vai rodar, ponto.

O Google também inclui no AOSP serviços próprios, como o de recebimento de notificações push. É graças a estas convenções e padronizações técnicas que você e um amigo seu com celulares de marcas e modelos diferentes podem rodar o mesmo aplicativo e trocar mensagens independente da opção de cada um: Ele pode fazer um vídeo com seu celular da LG e mandar para você pelo WhatsApp, criptografado, e você pode receber e ver no seu Samsung Galaxy, sem se preocupar com instalação de plugins e codecs e sem saber como aquilo tudo funciona. Claro que o iOS é muito diferente do Android, mas mesmo a Apple segue alguns padrões da indústria, e é muito mais viável fazer um aplicativo funcionar em dois sistemas do que em uma dúzia deles, não tão diferente de como é com os programas de Desktop. Um é pouco, dois é bom…


MOODY, G. Rebel code: the inside story of Linux and the open source revolution. Cambridge, Mass.: Perseus Pub., 2002.

TANENBAUM, A. S. Modern operating systems. Fourth edition ed. Boston: Pearson, 2015.

http://downtoearthlinux.com/posts/11-reasons-to-avoid-linux/

https://en.wikipedia.org/wiki/Criticism_of_Linux

Anúncios
Padrão

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s