Não postei nada aqui sobre o concurso da Intel que estava participando, o tempo andava curto e muitos projetos para trabalhar, pensei em deixar para o final e fazer um resumão, então vamos lá!

O concurso da Intel tinha como objetivo o desenvolvimento de um aplicativo de sua escolha para plataforma móvel batizada de MID, teve inicio no mês de Julho do ano passado. Fiquei sabendo do concurso antes de abrir as inscrições, através do site br-linux.org, mas acabei por esquecer e quase não consegui me cadastrar a tempo de participar da votação popular, para escolha das melhores idéias.

Nesta primeira fase tivemos um probleminha, algum engraçadinho resolveu que iria sair do ultimo lugar e chegar ao primeiro, e em menos de 1 dia tinha mais votos do que o primeiro colocado, depois de alguns protestos através de comentários, o filho da mãe em vez de se retirar da disputa, fez o favor de adicionar votos para outros participantes, você podia escolher 10 idéias que lhe agradasse, com isso gerou-se mais confusão e protestos. Para finalizar a confusão quem estava administrando o site do concurso, se descuidou e a opção de votar ficou aberta além da data limite, o que gerou mais alguns protestos, e por fim a Intel desconsiderou os votos apos a data limite e liberou a classificação final, minha idéia ficou em quinto lugar.

Em um outro post vou dar mais detalhes sobre o que se trata a minha idéia, e também apresentar a primeira versão aberta ao público.

O regulamento previa que os 10 primeiros ganhariam um MID da Intel para desenvolver o aplicativo e apos o envio do beta para a Intel, ganharíamos um Netbook, ambos com processadores Atom. Mas infelizmente pelos entraves da Receita Federal os MID que eram para ter chegado em 30 dias, levaram quase 5 meses para chegar, o que levou a Intel a estender o prazo de entrega dos beta, e também adiar o evento de apresentação dos projetos.

Do dia 31/10 passamos para o dia 31/01 como data limite, o que em termos aumentou em muito o tempo para o desenvolvimento do programa, mas sem o MID de quase nada adiantava este tempo extra. Por volta do dia 15/12 recebemos os “brinquedinhos”, a primeira impressão foi ótima, pelo pacote já deu para perceber que o produto tinha bom acabamento:

Aigo P8860

Com o aparelho em mãos deu para ter um idéia melhor do que era, do que poderia ser feito, e para dizer a verdade, poderia ter trabalhado no programa a mais tempo, afinal com porta USB host, leitor de Micro SD, teclado slider padrão qwerty, GPS, tela touch, 512MG de RAM, dois SD de 2GB internos, e um processador de Intel Atom de 900Mhz, o AIGO P8860 é um PC em miniatura.

Aigo P8860 + Hub USB

Como o espirito hacker manda mais do juízo, as primeiras semanas foi de hackerismo total, instalações e formatações suscetivas, passando de Ubuntu, Slax, Debian, Arch e chegando ao próprio Moblin, resultados variados, mas em geral agradáveis. Os problemas mais recorrentes ficam por conta da tela touch e do GPS, já a wireless é quase sempre suportada, precisando apenas copiar os Firmwares devidos. A curiosidade fica para a webcam integrada que funcionou em todas as distros sem nenhuma interversão.

Passadas as festividades de fim de ano (lembranças boas da Chapada Diamantina), comecei a trabalhar na aplicação. Entre indas e vindas, pensei em desenvolver em diverso tipos de ambiente:

  • Ruby com GTK. Era uma boa opção visto que estou trabalhando com Ruby a mais de um ano e tem sido minha linguagem principal, mas sinceramente o suporte a GTK, ou mesmo QT e outras toolkits gráficas ainda não é lá essas coisas em Ruby, por esse motivo ou outro que eu desconheço as libs e dependências não estão disponíveis facilmente em qualquer ambiente;
  • C++ e Clutter. Para quem não conhece o Clutter é um projeto relativamente novo, que ainda não chegou a versão 1.0, sua principal característica e torna fácil lidar com objetos 2D, animações e eventos, criando uma serie de efeitos que lembram interfaces como a do Canola, Iphone, dentre outros. Mas meu conhecimento em C++ não chega ao nível Jedi, talvez um jovem Padawan, o que seria muito complicado com o curto espaço de tempo.
  • Algum ambiente RIA. Como programador web a muito anos, eu sempre gostei da idéia de desenvolver aplicações desktop com base em navegador, a facilidade em lidar com HTMl e CSS aliadas ao poder que Javascript, permitem construir aplicações muito ricas em termos de interface. Prova disso é o que a Palm fez com o novo WebOS, um Webkit sobre um kernel linux e temos um ambiente de desenvolvimento relativamente fácil, e principalmente facilmente extensível visualmente

Por fim acabei por escolher a terceira opção, mas ai apareceu um pequeno problema: qual ambiente RIA utilizar? Talvez um dos mais conhecidos ultimamente seja o Adobe AIR, mas seu suporte a Linux ainda é limitado e seu peso era um empecilho grande ao uso do mesmo no MID. Uma alternativa Open Source é o Titanium, um projeto bem interessante que juta vários outros projetos, como Google Gears, Webkit, Rake, JazzRecord, dentre outros e criam um ambiente de desenvolvimento muito bom. Mas a versão para Linux ainda esta no campos das promessas, e apesar das minhas tentativas (foram varias) não conseguir obter uma ambiente, mesmo que beta, no qual pudesse trabalhar.

Bom só me restou uma saída, trabalhar no meu próprio ambiente RIA, nasce então o Eibox, meu primeiro framework público. A principal idéia por trás do Eibox é criar um framework Python, compatível tanto com desktops quanto com aparelhos móveis. Sei que o projeto é ousado, e vou precisar de muita colaboração para conseguir este feito, mas com a primeira versão do podMobile em funcionamento acredito que sera combustível o suficiente para que outras pessoas possam contribuir.

No momento o Eibox esta construído sobre Python e Qt4, a QT entra na joga para fazer a ponte entre o Python e Webkit, ao mesmo tempo que fornece uma rica biblioteca que pode ser utilizada para completar a aplicação. Mas existe um porem nisso, a QT por mais leve que seja, adiciona peso extra ao ambiente, e limita o Eibox ás plataformas em que a QT esteja disponível. Para ter acesso ao código fonte do Eibox basta acessar o repositório do podMobile.

Deixando o Eibox de lado, conseguir fazer a aplicação funcional, pelo menos o suficiente para apresentar no evento. A baixo você pode conferir o vídeo da apresentação da minha aplicação e tirar suas próprias conclusões:

A decisão do vencedor ficou a cargo de uma bancada formada pela Intel, e um voto do público do evento. Infelizmente minha aplicação parece não ter agradado os jurados, ou seria o fato de dar palpite de mais nas outras apresentações (eu e minha boca grande). Mas em fim o fato de que o publico escolheu com 37% dos votos a minha aplicação me deixou muito feliz. Evidentemente que vencer o concurso era o objetivo maior, mas o retorno dado pelas pessoas foi muito gratificante, vários me procuram depois da apresentação para parabenizar pela idéia e pelo framework.

Bom é isso, e a quem interesse, o Eibox vai continuar em desenvolvimento e tenho muitos planos para ele, em breve devo postar mais algumas coisas falando do que fiz e sobre o futuro do mesmo, quero melhorar bem o código, e levar o framework para outras plataformas.