Apple Developer

Muita gente tem odiado a Apple. Muita gente tem amado a Apple. Eu mesmo tenho uma relação dúbia com os produtos dela. Sou feliz proprietário de um Macbook e não vejo a hora de trocá-lo por um outro mais novo. Foi a melhor aquisição “computadorística” que fiz desde quando comprei um MSX (na verdade foi meu pai que comprou :D).

Mas no mundo ‘mobile’ a Apple tem feito coisas que não parecem boas para os desenvolvedores mas que certamente são boas para a Apple (ao menos no curto prazo).

Aqui no meu Macbook eu ainda posso desenvolver o que quiser, do jeito que eu quiser, quando eu bem entender e vender do jeito que eu achar melhor. Se isso mudar no futuro é óbvio que eu volto a usar Linux (Windows também não, né?). Até lá, me desculpem, mas o Ubuntu e o Mark vão ter que tomar muito toddynho até ter um produto de qualidade equivalente.

Mas o que eu quero falar nesse artigo é sobre o que eu penso que pode acontecer com as crianças e jovens dessa geração se esse tipo de postura da Apple se tornar um “padrão da indústria”.

Sou desenvolvedor desde os 9 anos de idade. Usei e aprendi a programar num clone do Apple ][ (TK-3000 da Microdigital e um Exato Pro da CCE). Vivi a era dos 8bits em sua plenitude. Sabia “tudo” do meu MSX e “quase tudo” dos computadores Apple. De instruções Assembly à pinagem de alguns CIs.

Isso foi importante na minha vida. E garanto que quem viveu as mesmas coisas naquela época ainda reverencia o que fazíamos ali. Essa época criou uma geração inteira de garotos capazes de abstrair conceitos, dividir um problema grande em problemas menores e a resolvê-los usando o raciocínio lógico.

O que aconteceria se a gente conseguisse reproduzir, para os nossos jovens de hoje, um ambiente similar ao daquela época mas com um hardware muito mais poderoso?

Pode ser que nem todos os jovens fossem se tornar desenvolvedores no futuro (na verdade isso seria péssimo) mas acho que raciocínio lógico, resolução de problemas e abstração são qualidades úteis para o exercício de qualquer tarefa. Certamente são muito mais úteis que escrever miguxês ou plantar batata no Colheira Feliz.

O Cory Doctorow aborda bem esse tema em um artigo no BoingBoing.

E isso nos trás de volta à Apple e aos termos sob os quais os seus produtos vêm sendo vendidos e disponibilizados para os desenvolvedores.

Máquinas seladas que são construídas de forma a ir totalmente contra as idéias dos construtores. Plataformas de desenvolvimento oferecidas somente a quem se dispuser a entregar sua alma. Proibições e permissões arbitrárias sob o direito de usar os seus produtos, etc.

Observando exclusivamente por essa ótica chegamos à conclusão de que Steve Jobs está negando o direito que ele e o seu ex-sócio Steve Wozniak tiveram de dominar de verdade os computadores. Obviamente isso me entristece.

Por outro lado tem a visão do John Gruber de que tem jovens desenvolvendo coisas bacanas para essas plataformas da Apple mesmo debaixo dessas limitações impostas. O Carlos Cardoso também comenta sobre um aspecto bacana dessa postura da Apple.

No mundo as coisas não são sempre brancas ou pretas, certas ou erradas ou bandidos ou mocinhos. Eu não acho que o excesso de medidas da Apple seja o ideal mas ao mesmo tempo eu entendo algumas das razões pelas quais eles agem desta forma.

Empresas são empresas e precisam dar lucro. Precisam aumentar a sua participação no mercado. Precisam “amarrar” (fidelizar não existe :D) os seus clientes de uma ou de várias maneiras.

A Apple também tem uma proposta clara e inequívoca desde que o primeiro Macintosh foi lançado: popularizar a tecnologia oferecendo alternativas de altíssima qualidade e fáceis de serem usadas por qualquer um. Sempre que eles desviaram disso se deram mal.

Por outro lado a figura do “Desenvolvedor de Software”, pra eles, nunca passou de um “mal necessário”. Freqüentemente os responsáveis por estragarem os seus produtos.

O pior é que isso é verdade. É duro, como desenvolvedor, admitir que eles tem razão.

Vamos a alguns casos práticos:

  • Levanta a mão quem nunca viu o seu navegador “capotar” ao abrir uma página com Flash? Achava que era problema no Safari, mas o mesmo acontecia no Firefox. O meu E71 (que roda Flash!) reboota 50% das vezes que abre uma página com Flash. Porque uma empresa que prima pela qualidade permitiria que seu celular ficasse desligando por conta de bugs no software dos outros?
  • Só quando a gente trabalha com desenvolvimento pra dispositivos móveis, como eu fiz, você percebe como é fácil acabar com a bateria de um celular com um código não-tão-bom-assim. Esse problema já foi arrumado, mas na plataforma Maemo a comunicação interprocesso era feita com o D-Bus. Sempre que uma mensagem era enviada via D-Bus ele ‘acordava’ todos os processos do dispositivo para entregar a mensagem. A CPU aumentava o clock, o consumo aumentava e o resto vocês já sabem. Porque você deve permitir que os desenvolvedores usem as APIs do seu aparelho de qualquer jeito se isso pode fazer com que a duração da bateria fique prejudicada?
  • No livro “A Cabeça de Steve Jobs” tem uma história que conta que o Steve Jobs queria que o primeiro Macintosh fosse feito completamente selado. A razão? A experiência deles com o Apple ][ mostrava que existia muitas placas de terceiros que, por serem mal feitas, causavam problemas em todo o sistema e geravam suporte para a Apple. A proposta do Macintosh não era atender a hackers. Os Macs não vieram selados, mas quando vi abrirem um na Conectiva deu pra ver que precisava de uma chave Philips um tanto… comprida.
  • Eu consigo navegar pela Internet à procura de pacotes .sis(x) pro meu E71 sem nem olhar pra tela do computador. Consigo até compilar um .sis(x) a partir do código fonte. Também consigo apertar em “Yes, Agree, Ok, Yes Again, I’m Sure, Ok, …” para instalar um programa nele. Mas peça pro seu pai fazer isso. Peça pra algum amigo seu, da sua idade, mas que não trabalhe com tecnologia fazer isso. Peça pro seu filho instalar um .sis(x) hospedado no Google Code. Entenderam o ponto? A Apple ofereceu um jeito fácil para todos fazerem isso e só quem trabalhou numa distribuição Linux e tentou criar um repositório “contrib” sabe que, para que as coisas funcionem bem, é necessário um certo controle. O da Apple é grande demais, mas os números mostram que tem funcionado mesmo assim.
  • O iPhone OS 4 tem suporte a multitarefa (pelo que eu li ainda é ‘limitado’) mas a ausência dela até o momento foi explicada com argumentos técnicos: consumo de bateria; um processo rodando em background consumindo muitos recursos e interferindo no funcionamento de outro (o navegador do E71, em background, tornando o uso do TwitS60 impossível); etc. Também tem as explicações de usabilidade: a presença de um gerenciador de tarefa, um processo travado, matar processo, etc. e tudo isso usando somente os dedos.
  • A Apple não lança produtos prontos. Ela lança produtos com o que está pronto. Essas restrições e limitações podem cair por terra no futuro.

Esses são alguns casos práticos que justificam a postura da Apple. Não se pode negar que eles são um tanto arrogantes demais colocar a culpa dos problemas em todos que não sejam eles, mas todos já sabiam que o Jobs é arrogante.

Como desenvolvedor e “hacker-wannabe” eu não gosto dessas restrições mas se eu fosse um cliente “comum” da Apple estaria bem feliz por ter uma empresa zelando tão bem da minha experiência com seus produtos.

Onde essas restrições não existem (meu Macbook) é possível apreciar a qualidade dos produtos Apple. Já para o meu filho eu já acho que um Arduino seria bem mais útil.

Update: O pessoal da 37signals acrescentou alguns pontos interessantes à essa discussão.

Publicado por

Osvaldo Santana

Desenvolvedor Python e Django, Empreendedor, dono de uma motocicleta esportiva, hobbysta de eletrônica, fã de automobilismo e corinthiano