Follow falcon_dark on Twitter
Google

sábado, fevereiro 14, 2009

O hardware definitivo

O purismo e a utilidade
Estou pegando emprestado o termo usado pelo Adan, quando comentou minha última postagem, e fazendo uma tradução livre. O hardware definitivo seria um notebook (desktops estão fora de moda não acha?) no qual uma distro Linux qualquer rodasse de forma perfeita. Digo uma distro Linux qualquer porque, não importa qual fosse, no dia seguinte todas as outras distros do mundo poderiam estar rodando tão bem quanto. Essa é uma das belezas do software livre. E deve ser uma distro qualquer mesmo, porque se eu tiver que escolher uma distro específica que eu tenha que usar, ora, seria muito parecido, em essência, com ter que ficar no Windows. Liberdade é, acima de tudo, o poder de escolher.

Refiro-me a isso como algo muito raro, se realmente existir, porque eu não me lembro de ter visto um notebook assim. Todos os notebooks em que tive o prazer de rodar Linux sempre deixavam algo de fora, como o (win)modem, ou o teclado auxiliar, ou o controle remoto, ou a hibernação, ou... Afinar um Linux em um notebook moderno e sua pletora de funcionalidades é trabalho não só para um bom e experiente usuário, mas também para alguém com algumas inclinações para programação. Nem que seja a “programação de botequim” dos arquivos de configuração dos muitos softwares de um sistema GNU/Linux completo (para agradar aos mais puristas, coisa que um dia já fui). Além disso, toma tempo.

Tempo que eu tinha quando programava para viver (não PCs diga-se) e/ou estava na faculdade. E que não tenho mais, pois agora trabalho com outras coisas que pagam a conta no fim do dia. Tornei-me um entusiasta de Linux (no sentido mais hobbista que essa palavra pode ter). E com isso, passei a ter ressalvas com relação a gastar dois dias programando as teclinhas azuis do teclado auxiliar do meu notebook. Foi mais ou menos aí que me tornei menos purista.

Continuo achando que computador é pra quem entende. Quem não entende deveria aprender a entender, afinal de contas provavelmente hoje o emprego quase sempre depende de computadores e de sua destreza relativa ao usá-los. E quem não quer entender pode parar de reclamar e voltar a usar máquina de escrever. Sempre defendi que os computadores, como máquinas complexas e capazes de executar as mais distintas e igualmente complexas tarefas, devem e são mais difíceis de usar do que uma cafeteira e uma televisão. Portanto dizer que eles serão fáceis e usar é agir de má fé. É isso que Microsoft e Apple tem feito desde que lançaram a interface gráfica. É essa a razão principal pelo meu desdém pelo que essas empresas às vezes fazem.

Ainda assim, quem quiser fingir que um computador é uma peça fácil de usar pode ficar à vontade e manter seu Windows. Em lugar de gastar dois dias configurando teclinhas azuis vai ficar dois dias fazendo backup e reinstalando sistema. Se for pra escolher eu prefiro a “programação de botequim” porque ao menos é melhor do que dar banho em porco formatando e reinstalando Windows.

Hardware + Software = ?
Mas tem uma coisa que eu posso dar-me o luxo de invejar no mundo extra-Linux (que compreende tudo aquilo que não é Linux). A descartabilidade. Em vez de ficar tentando fazer toneladas de placas de rede ISA funcionar os outros sistemas operacionais seguem adiante. A retro-compatibilidade do Windows é uma piada de mau gosto há tempos. Steve Jobs deu uma entrevista e disse:
Quando eu voltei em 1997, estava procurando espaço e achei um arquivo com Macs velhos e outras coisas. Eu disse: ‘Tirem isso daqui!’ e mandei toda aquela merda para Stanford. Nesse negócio, se você olhar para trás, será esmagado. Você tem de olhar para frente.


Podemos nos gabar o quanto quisermos de que nosso sistema roda em computadores 486 que podemos usar como firewalls de pequeno porte. Hoje eu acho que seria mais vantajoso poder rodar o Linux em um HP Touchsmart sem os inúmeros problemas e conseqüentes soluções que existem relatados por aí, como por exemplo aqui. Mas no lugar do HP Touchsmart você pode colocar qualquer notebook topo de linha de qualquer marca. Provavelmente um Sony Vaio de R$ 12mil vai necessitar de alguns dias de configuração cuidadosa antes de entregar tudo que pode sob a batuta de um Ubuntu ou Fedora. Ainda que se possa transformar aquele AMD K6 já amarelado pelo tempo no firewall de maior consumo de energia do hemisfério em pouco mais de 20 minutos.

Fazemos coisas legais e únicas com Linux. E sofremos para fazer coisas comuns. Porque ainda que seja pouco útil, é relativamente fácil dar suporte para hardware antigo. A base instalada de placas de rede NE2000 é enorme, portanto o Linus Torvalds vai dizer que se justifica dar suporte a isso de forma consistente. Ele está certo. Mas enquanto empregamos energia para suportar coisas que ouros sistemas e plataformas abandonaram, estamos perdendo a oportunidade de olhar para algo novo.

O hardware certo
A Apple possui uma dupla muito bem acertada. Seu MacOSX só existe porque tem um computador onde ele roda de forma perfeita (flawless). Entretanto isso causou uma dependência forte de controle do hardware, e de como o software se comporta nele, que faz coisas bobas como a Psystar criarem um medo pavoroso na maçã. A Apple então é levada a cometer insanidades que são piores que as da Microsoft quando o assunto é ética com o cliente. Ainda assim é preciso se reconhecer que a Apple possui a mais acertada dupla de hardware e software do mercado, e seus usuários parecem bem felizes.

A Microsoft preferiu uma abordagem diferente: vamos dar suporte a tudo desde que não precisemos dar suporte a nada. Assim os fabricantes correm para comprar adesivos “Desenhado para MS Windows [if (year>2009) { cout << “7” << endl;} else { cout << “Vista” << endl;}]” Como se o hardware devesse ser desenhado para o software e não o contrário.

O fato é que lá atrás, quando o Windows não era muita coisa e competia com outras interfaces gráficas, a Microsoft se empenhou muito para criar ela mesma muitos drivers, e ainda faz isso. A maioria dos dispositivos básicos de um notebook típico usa drivers para Windows feitos pela própria Microsoft. Entretanto quando o trabalho é sujo de verdade, ela deixa o problema para o pai da criança. Placas de som, vídeo, etc possuem drivers prórpios, também eles projetados e ajustados para Windows.

Três Reis
Isso nos coloca três modelos distintos pelos quais os maiores sistemas operacionais da atualidade (em número de almas capturadas) se relacionam com seus hardwares base.

1-Modelo Mac:
Eu cuido de tudo, o que não é muito, pois vou usar pouco hardware;
Os Macs são bem parecidos por dentro e com poucos drivers a Apple dá conta do recado e customiza ao seu prazer o computador, fazendo o software rodar muito bem.

2-Modelo Windows:
Eu cuido do que não aparece, pois é pouco, e você cuida do que é mais visível, pois é muito;
Existem bem menos modelos de controladores USB sendo usados em computadores novos do que de placas de vídeo. Então a MS fica com o trabalho de base, onde a estabilidade do sistema é mais crítica, e deixa que nVídia e ATI se matem para ajustar seus drivers ao máximo para o Windows, onde os jogos de computador vão rodar. Isso é flexível pois também existem muitos drivers de fabricantes para as bases dos PCs, como os controladores USB, por exemplo. Entretanto a MS precisa desse trabalho para que o sistema rode em um computador novo, antes das otimizações e Service Packs.

3-Modelo Linux:
Eu cuido de tudo e você não precisa se preocupar, vou tentar dar suporte a tudo que o Windows dá e rodar como o MacOSX roda nos Macs;
Temos os programadores de Linux tentando fazer tudo sozinhos, pois mesmo quando a empresa que fabrica o hardware está ajudando (como a ATI que publicou APIs de seus chipsets de vídeo) ela está mais preocupada com os movimentos do concorrente no mundo Windows do que com o Linux de verdade. E o resultado quase sempre é um suporte incompleto, lento, com muitos bugs e que não contempla todas as funcionalidades do hardware.

Pensando seriamente sobre isso, não é muito difícil de adivinhar quem está na desvantagem, não é?

Sem dinheiro, sem suporte, sem ajuda. O que fazer?
Em mares de barracudas os peixes menores tendem a nadar juntos, agrupando-se em cardumes. Eles movimentam-se todos juntos ao mesmo tempo. E ainda que isso não diminua as chances da barracuda conseguir algo para comer, fica muito óbvio que cada peixe individual tem chances dramaticamente menores de ser capturado por uma barracuda que ataque o cardume. Ou seja, para enfrentar um predador poderoso, a natureza usa a união dos mais fracos. Muitos outros seres usam desta mesma tática contra outros predadores, inclusive fora do mar. Assista o NatGeo que você verá que isso realmente ocorre.

Parece-me pouco inteligente usar uma demanda limitada de programadores de software livre para tentar “dar suporte à maior quantidade de hardware possível”. Existem muitos programadores, em várias empresas, com orçamentos generosos, escrevendo drivers para Windows operar hardwares de diversos tipos, alguns ainda por serem lançados. Quando mais penso sobre isso mais fica claro que não conseguiremos dar conta de acompanhar o trabalho desses caras. Deveríamos estar procurando outro modelo em lugar de manter suporte a placas ISA.

O modelo bazar pode funcionar muito bem para o sistema operacional em si, mas talvez não seja tão adequado ao ciclo de vida de uma placa de vídeo. Até que o driver fique pronto e sem graves erros na aceleração 3D talvez aquele processador de vídeo não esteja mais sendo fabricado.

O que estou querendo dizer é que talvez, em lugar de tentarmos dar suporte a 500 placas de vídeo diferentes, talvez tenhamos que escolher 50 e diminuir o tempo em que esses drivers ficam em versão beta. Em vez de tentar fazer todas as 40 distros que achamos simpáticas rodar em 400 modelos diferentes de notebooks poderíamos fazer todas as 40 rodarem bem em 40 modelos de notebook.

E quanto à liberdade?
Isso parece restritivo? E se eu disser que acho que deveríamos escolher uma marca de notebooks apenas e tentar dar suporte para todos os modelos dessa marca? Antes de ficar tentado a responder que isso afeta as liberdades que envolvem o software livre responda: ter que escolher uma certa distro para meu modelo de notebook em específico, porque ela é uma das poucas que funciona, não é fazer a mesma coisa, só que com o software. Não estou sendo “obrigado” a fazer algo do mesmo jeito?

Preferido pelo Tux
Se adotássemos uma marca, a que melhor dê suporte ao Linux hoje, como a “marca preferida do Linux”, déssemos a esse fabricante um adesivo “Preferido pelo Tux” e começássemos todos a comprar apenas os modelos desta marca. Desde que as 10 maiores distros fizessem ele funcionar perfeitamente, claro. Não conseguiríamos gerar um efeito manada no mercado que provocaria mudanças?

Muitos fabricantes passaram a dar alguma importância para o Linux com a onda dos Netbooks. Mas seus notebooks ainda eram incompatíveis com Linux em muitos casos. E mesmo essa relativa aderência ao Linux nos Netbooks tem prazo de validade. Vamos perder nos Netbooks para alguém que já estava morto segundo seus próprios pais.

E até a série de máquinas de baixo custo (desktops e notebooks) que saem de fábrica com Linux é uma falácia. Cansei de ver máquinas que vinham com [Nome estranho]Linux nas quais metade do hardware sequer funcionava. As pessoas compravam esses computadores com os CDs piratas de Windows já nas mãos. Além disso os notebooks que “já vem com Linux” normalmente são as piores máquinas da linha de qualquer fabricante, e o Linux é uma saída fácil para baixar o custo e tentar ganhar o usuário que nunca teve computador. Uma ótima forma de criar rejeição a algo novo. Houve quem comemorasse o que, na verdade, apenas depreciava ainda mais o Linux frente ao usuário leigo. Então começamos a perder para um tal Windows Starter, que é o sistema operacional mais estranho de que já ouvi falar. Nele você não pode rodar programas. Na verdade pode apenas rodar 3 programas ao mesmo tempo, o que é muito estranho.

Sem discutir a utilidade de um SO onde não se pode rodar programas, lembro de algo que parecia ser a esperança de futuro para o Linux. O OLPC XO ou Laptop de US$100 que rodaria Linux e ensinaria as crianças desde cedo a usar outra coisa diferente de Windows. A idéia era de que, livres dos grilhões desde cedo, os usuários escolheriam o que achassem melhor. Mas o OLPC foi afundando devagar e nunca colocou sua promessa em prática. Eu falei muito sobre isso quando ainda havia esperança de que o projeto entregasse mesmo o prometido e teve gente me xingando, criticando duramente e não entendendo o que eu já havia percebido.

Se você não muda, nada muda
Mas o que todas essas histórias têm em comum é nosso destino. Em todas elas sempre perdemos. Sempre fui enfático em dizer que o Linux não deveria tentar ser o Windows ou abrir guerra contra o Windows. São coisas diferentes. Mas é duro olhar para nossa história recente e ver que não estamos conseguindo ir além de onde já fomos e que mesmo assim não estamos fazendo nada diferente.

A Mandriva, minha distribuição predileta, está mal e mandando seus grandes programadores embora. Com muito azar, talvez em poucos anos ela desapareça, como distro e depois como empresa. E o que isso irá ensinar sobre a vida para nós? O dinheiro de Mark Shuttleworth não vai durar pra sempre, e quando acabar será que o Ubuntu conseguirá viver por conta própria? A IBM não vai ajudar a desenvolver o kernel para sempre. Em algum momento vamos ter que virar a mesa e tornar o Linux algo que performe melhor em termos de vendas no mercado, nem que seja para que a HP torne seus notebooks menos avessos ao Linux.

Nossa estratégia nos trouxe até aqui, e isso foi ótimo. Mas me parece que para ir além no desktop precisamos fazer algo mais. E, novamente, não que eu queira que velhinhas idosas aprendam a montar dispositivos removíveis. Eu gostaria de ver notebooks onde o Linux funcionasse perfeitamente serem comuns. Ao comprar um PC você não pergunta se ele roda Windows, ou consulta uma lista de compatibilidade de hardware. Bem, você até consulta se estiver comprando hardware velho quando a Microsoft lançou um sistema novo. Eu gostaria de não depender da distribuição X ou Y para vê-lo funcionar. Talvez assim poderíamos atrair alguma atenção séria de fabricantes que hoje nos tratam como hippies alternativos ou simplesmente como bobos.

Follow falcon_dark on Twitter
Google
Comments:
Bom artigo.
 
A good article. Um bom artigo.
Mas tenho algumas coisinhas a falar, pró e contra.

Outros sistemas SLiCA, como o FreeBSD, já decidiram há muito tempo que não suportariam velharias. Se eu não me engano a linha principal do FreeBSD não suporta a arquitetura i486, só a i686 (tem a versão Legacy para quem precisa urgentemente de um FreeBSD funcional). O OpenBSD, vira e mexe desiste de portar par arquiteturas exóticas. Mesmo o NetBSD tem um projeto cuidadoso para não ter que virar um bloatware...
No caso Linux, o Slackware e o Archlinux tiveram que seguir uma política de descarte (apesar de o Patrick não oficializar o x86_64).

No caso estou falando de distros e SOs completos (kernel+userland, como o povo do BSD fala). Se for pensar só no kernel, tem outras coisas mais que enchem a paciência. Por exemplo, destes três só o FreeBSD tem kernel preemptivo, e por isso não é necessário implementar um servidor de som (como o PulseAudio ou o ESound da vida). Aí ficaria em comparações meio que bobinhas de `meu kernel é melhor que o seu` e por aí vai...

Voltando um pouco: a idéia parece boa. Primeiro, o kernel deve sim manter alguma compatibilidade com dispositivos antigos. Ou pelo menos uma versão legacy, como faz o FreeBSD. Já as distros, elas podem fazer bem mais(eu já citei o Archlinux, que até fez um Primeiro-de-Abril dizendo que só iam manter o suporte a x86_64): elas podem simplesmente recompilar o kernel e arrancar coisas que não são usadas (e deixar isto claro em algum lugar, como "não damos suporte a placas ISA ou a placas AGP ou a hardware dos anos 60 ou a dispositivos de válvulas " :P).

Ainda neste lance de hardware: o OpenBSD tem uma política e filosofia segundo as quais toda empresa de hardware deveria liberar as especificações de programação. A Ralink faz isso (e de quebra faz doações generosas para os projetos), e é disparado a melhor placa wireless para Linux (ndiswrapper não conta, até porque é um tanto instável). A ATI/AMD seguiu pelo mesmo caminho (mesmo que não com o mesmo entusiasmo), e foi até que aplaudida... Mais recentemente, até mesmo a Atheros, que fabrica os melhores chipsets wireless, liberou os specs!

Por que a nvidia não faz o mesmo? Pode citar qualquer motivo que ele será pura balela! Em vez de manter um driver binário e instruções do tipo "faça um curso de computação e depois volte aqui", com a grande chance de dar um bug feio (http://kerneltrap.org/node/7228), por que não ser a melhor placa de vídeo com suporte nativo no Linux e no X.Org?

Não sei se é sério (eu tô lento pra sacar ironias hoje), mas a idéia do selinho "Designed for Linux" me parece interessante. Montar todo um {note|net}book com, digamos, placa de vídeo ATI ou Intel ou Via, wireless da Atheros, e possivelmente algum winmodem menos tranqueirão, enfim, um hardware quadrado, assim como a própria Apple já fez... Idéias, muitas idéias enfim.

Uma curiosidade: o MacOS não foi o primeiro SO que só rodava numa plataforma quadradinha: o RiscOS roda em processadores ARM, com malgumas motherboards modeladas ao extremo, e ainda por cima direto da memória ROM. Esta decisão de projeto dava a eles mais tempo pra pensar em outras coisas, como desktop e aplicativos (bem como a Apple!). Mas é só uma curiosidade, hehe!

Como sempre, me diverti com este blog. Thankz! E desculpe o excesso de nerdice.
 
Obrigado pelos comentários. Com relação ao selo "Designed for Linux" ou "Linux able" não é ironia não. Acho mesmo que um consórcio das principais distros poderia homologar padrões para classificar computadores como a Microsoft fez com as versões do Vista.

Evitaria centenas de horas de procura na internet por modelos de máquinas de várias marcas, bugs em modelos específicos de certas marcas, enfim. Facilitaria o trabalho daqueles que preferem este sistema, pois estariam comprando um hardware que a sua distro homologou.
 
Postar um comentário

Links to this post:

Criar um link



<< Home

This page is powered by Blogger. Isn't yours?