Previsão: HTML5 como plataforma ubíqua no mundo móvel

Este artigo foi publicado originalmente na Revista Espírito Livre ed. 33 com tema “Previsões para 2012″. Não deixe de ler os demais artigos, pois está muito legal!

O HTML5 é uma das tecnologias mais comentadas do momento. Composto de um conjunto de padrões abertos, promete possibilidades ilimitadas para o desenvolvimento de sites e aplicativos web, inclusive para rodarem em dispositivos móveis.

Dentre suas capacidades, incluem execução de áudio e vídeo, execução de animações e até mesmo execução offline. Isto tornariam obsoletas algumas tecnologias proprietárias que dependemos hoje, como o Adobe Flash. Isto tanto é verdade, que a Apple há tempos abandonou o Flash no iOS [1], abraçando o HTML5, e motivou a Adobe a abandonar esta tecnologia no mundo móvel em prol também do padrão aberto [2].

No entanto, a maior parte do desenvolvimento móvel feito atualmente é baseado em kits de desenvolvimento nativos de cada plataforma, abordagem muito comum nos aplicativos desktop antes da explosão da “computação em nuvem”. A grande desvantagem disto é que os desenvolvedores devem portar suas aplicações para cada sistema que deseja executá-las, um trabalho que não é fácil.

O mundo desktop evoluiu para a web e o mundo móvel também irá evoluir para a mesma direção, mas desta vez será muito mais rápido. Com capacidades exclusivas para celulares e tablet modernos, o HTML5 será a plataforma que possibilitará esta evolução.

O futuro já começou

Atualmente já existem alguns frameworks de desenvolvimento, como o Rhodes Mobile [3] e o PhoneGap [4], que geram aplicações para múltiplas plataformas, utilizando HTML5 e rodando a aplicação no navegador web do dispositivo. Detalhe importante é que, em outubro, a Adobe comprou a empresa por trás do PhoneGap, mostrando que não está brincando quando diz que irá mudar seu direcionamento no mundo mobile.

Outra boa notícia para quem acredita nesta tendência, foi a da abertura do código do webOS [5], sistema móvel da HP que foi desenvolvido originalmente pela Palm. Este é um sistema operacional totalmente baseado em tecnologias web, dentre elas o HTML5.

Seu framework de desenvolvimento de aplicativos, o Enyo [6], também terá seu código aberto e a expectativa é que a comunidade porte-o para outros sistemas móveis, como Android e iOS.  Caso isto aconteça, será mais uma boa opção para quem desejar desenvolver aplicações para diversos dispositivos.

Conclusão

Apesar da especificação do HTML5 ainda não estar finalizada, com muitos detalhes ainda indefinidos, suas evoluções estão sendo acompanhadas de perto pela comunidade e por todas as empresas do ramo. Certamente muita evolução acontecerá no decorrer de 2012 e a tendência é que a tecnologia ganhe ainda mais espaço, tanto no mundo desktop quanto no móvel.

Com esta expansão, 2012 poderá ser um ano em que o HTML5 começará a ser considerado como uma das principais plataformas para desenvolvimento móvel. Com isso, ganhará o desenvolvedor, que poderá disponibilizar suas criações para usuários de múltiplos sistemas de maneira simples, e também ganhará o usuário, que terá uma gama ainda maior de aplicativos disponíveis.

Referências:

Visual moderno em aplicativos Android

Quando foi lançada, a versão 3.0 do sistema Android trouxe um visual totalmente remodelado e com diversos conceitos de interface diferentes. Desde então, a Google vem modificando a API adicionando novos padrões de UI (interface de usuário), com o objetivo de tornar os aplicativos desenvolvidos na plataforma mais intuitivos.

No início, apenas os aparelhos com versões do sistema a partir da 3.0 tinha acesso a estas novas APIs, trazendo um grande problema de fragmentação. Afinal, como tirar proveito destas melhorias se a grande maioria dos aparelhos no mercado ainda estão trabalhando com Android 2.x? Foi então lançada a Compatibility Library, para possibilitar embarcar estas APIs mais recentes junto com as aplicações, possibilitando seu acesso mesmo nas versões mais antigas do sistema.

Esta semana a Google deu mais um passo na direção certa e lançou o Android UI Design Guidelines. Leitura obrigatória para quem está desenvolvendo para a plataforma, explica todos os conceitos de interface utilizados e tudo o que você deve e não fazer ao desenvolver aplicativos.

O problema do ActionBar

Sabemos que devemos seguir o guia e utilizar as APIs de compatibilidade para poder seguí-lo, no entanto uma peça chave da interface de um aplicativo Android ficou estranhamente de fora do Compatibility Library: o ActionBar.

Uma opção seria implementar por conta própria, o que não é muito produtivo. Outra seria copiar o código de um aplicativo como o do Google I/O (o que parece ser a recomendação), mas fazer “copy-and-paste” não é uma das técnicas de programação mais inteligentes.

A melhor opção então é procurar bibliotecas de terceiros para incorporar no aplicativo. Inicialmente conheci o GreenDroid, que é utilizado no aplicativo do Ubuntu One e, além da ActionBar, tem vários outros recursos. Mas a opção que escolhi foi o ActionBarSherlock.

O ActionBarSherlock tem a vantagem de tentar ser um superconjunto da Compatibility Library, ou seja, ele já contém tudo desta API e mais a ActionBar. Melhor de tudo, se a versão do Android no aparelho é recente, ele utiliza a ActionBar nativa. Seu uso é muito simples e irei utilizar no meu novo projeto: o aplicativo para Android da Revista Espírito Livre.

Mais fontes de estudo

Com o problema do ActionBar resolvido, você pode começar a desenvolver seus aplicativos Android utilizando todo o potencial da plataforma e, ainda assim, mantendo a compatibilidade com até a versão 1.6 do sistema.

Um site bem legal que conheci nas minhas buscas (onde conheci do ActionBarSherlock) é o Android UI Design Patterns. Ele contém diversos artigos explicativos dos padrões de interface para Android, dicas de implementação e muito mais.

Outra dica boa é o site Android Assets Studio, que é uma mão na roda para criação de ícones para seu aplicativo. Eu que não sou nenhum artista gráfico, consegui criar ícones simples porém bonitos com apenas alguns cliques.

Espero que as dicas acima os ajudem a desenvolver aplicativos com excelente visual e consistente com a plataforma Android. Caso tenham alguma outra dica, compartilhem nos comentários!

Esperanças com a abertura do webOS

No último dia 09 de dezembro, a HP anunciou que abrirá o código do seu sistema operacional, o webOS, numa tentativa de se manter relevante no mercado de dispositivos móveis. Apesar dos seus conceitos de interface de usuário inovadores e ter cativado todos os seus poucos usuário, ele foi a grande promessa de volta por cima da Palm que nunca se concretizou.

web + OS

Apesar de não conhecer o sistema, o que mais me chama atenção para o webOS é o desenvolvimento de aplicativos feito utilizando padrões web (HTML5/CSS/JS). Tenho visto os vídeos da W3Conf e tenho me tornado um entusiasta cada vez maior do HTML5, a ponto de achar que a tecnologia é o futuro do desenvolvimento móvel. Sendo assim, acredito que os sistemas móveis baseados em padrões web são os mais preparados para o futuro e que os dias dos SDKs nativos estão contados.

Mas o webOS não é o único a apostar nesta ideia. Existem outros dois sistemas, atualmente em fase de desenvolvimento, com princípios similares: o Boot2Gecko (ou B2G), bancado pela Mozilla, e o Tizen, bancado pela Intel e Samsung com a benção da Linux Foundation. Além de apostarem na plataforma web, os três são sistemas que rodam sobre o kernel Linux e serão livres.

Mas ainda existe espaço?

A pergunta que realmente fica é: “será que não é tarde demais?” Num mercado dividido ente iOS e Android, com o Windows Phone querendo entrar na briga, será que o webOS tem futuro ou será que acabará como o Symbian?

Assim como tem acontecido no mundo desktop, acredito que o no mundo móvel o sistema operacional perderá cada vez mais a importância como plataforma de execução de aplicativos, deixando esta tarefa para o navegador e a “nuvem“. Sendo assim, acho que um sistema que aposta nisso tem grandes chances de ser relevante.

No entanto, o webOS livre lutando sozinho provavelmente será tão “bem” sucedido quanto o webOS fechado. Mas se a HP juntar seus esforços junto com o B2G e o Tizen, o futuro poderia ser realmente promissor.

webOS + B2G + Tizen

Dos três sistemas, o webOS é o único que está pronto hoje. Ele só precisa substituir as partes que não poderão ser abertas, um esforço que os outros dois projetos poderiam ajudar. Com todos os esforços direcionados para a mesma base de código, poderíamos ter algo espetacular!

Do ponto de vista comercial, existirão outras grandes empresas apoiando a HP, dentre elas uma das maiores fabricantes de celulares do mundo: a Samsung. Sem contar que a presença da Mozilla e da Linux Foundation poderá trazer um ar de projeto verdadeiramente open source, o que pode trazer confiança e investimentos de outras empresas que não se sintam bem atendidas pela Android ou pelo Windows Phone.

Na torcida por um futuro mais aberto

Tudo o que escrevi são apenas devaneios, mas realmente torço muito para que isto aconteça. Teríamos um sistema com código e governança livres e baseado em padrões abertos e interoperáveis. Isto seria bom tanto para os usuários, que terão mais liberdade de escolha, quanto para os desenvolvedores de software, que não precisarão portar seus aplicativos para diversas plataformas.

Minha pequena trajetória no software livre

Este mês completam 10 anos desde que comecei meu curso de “Bacharelado em Informática e Tecnologia da Informação” na UERJ. Para comemorar esta primeira década, vou falar um pouco de uma parte importante da minha carreira: o meu envolvimento com software livre.

O início

Utilizo e advogo a favor do software livre desde aproximadamente 2003, no início da minha carreira profissional. No entanto, só a partir de 2008 que passei a fazer parte de uma comunidade e trabalhar em conjunto com outras pessoas em favor deste ideal. Esta comunidade foi a SL-RJ e a conheci durante o Flisol 2008, evento organizado por alguns amigos logo após a criação do grupo.

Na comunidade

Desde então, eu procuro fazer o que posso para ajudar, sempre buscando mais. Em 2009, eu organizei meu primeiro evento (Flisol 2009) e fiz minha primeira palestra (Gnugraf 2009).

Neste ano estava muito envolvido com a comunidade, mas vi todos aqueles eventos importantes, como FISL e Latinoware, passando e eu não fui em nenhum. Terminei o ano pensando: “Ano que vem eu vou em algum evento grande de software livre!”

Primeiro evento grande

Em 2010, só dei uma palestra (Gnugraf 2010) e não pude ir no FISL. Então, para cumprir minha meta, eu fui ao Latinoware! Gostei muito de estar naquele ambiente cheio de pessoas inteligentes e cheio de amigos (sim, o pessoal do SL-RJ estava em peso lá – como palestrantes!).

Muito destes amigos falaram que eu devia ter mandado uma palestra, mas eu andava com a cabeça muito cheia para pensar nisso e acabou passando. Então submeti uma palestra ao evento FSLDC 2010 que foi aprovada! Infelizmente, fiquei muito gripado no dia anterior e não tive a menor condição de ir ao evento.

Mostrando a cara

Então o ano de 2011 começou com uma nova meta: “fazer mais palestras”. Comecei palestrando em abril no Flisol 2011 e, em seguida, no FSLDC 2011, ambas com a palestra “Integração contínua com software livre” que ia apresentar no FSLDC 2010. Fiquei empolgado e submeti 2 palestras ao FISL. Para a minha total surpresa, uma delas foi aprovada!!!

Assim, acabei indo para o meu segundo evento grande de software livre, mas desta vez como palestrante (que tem regalias, como jantar às custas do Google :P ). No FISL, apresentei a palestra “Android: uma catedral de sucesso” e foi bem legal (até apareceu no site do evento \o/).

Obs.: As apresentações de todas as minhas palestras estão na página Palestras aqui do blog.

Meta cumprida

Estamos pouco além da metade de 2011 e considero minha meta para este ano cumprida. Já mostrei bastante a minha cara e, mesmo assim, ainda tenho 2 palestras marcadas. A primeira será na próxima segunda-feira, no Ciclo de Palestras do Sindpd-RJ, e a outra no sábado seguinte, no II Universidade Livre. Gostaria de poder apresentar em outros eventos, mas o Hack’n Rio está sugando todas as minhas forças e estou preferindo deixar para depois que o evento passar.

Falando em Hack’n Rio, este é um marco importante na minha trajetória no software livre, pois é o maior evento que já organizei. Com dois dias de duração e uma quantidade razoável de patrocinadores, está dando bastante trabalho, mas vai valer a pena.

Futuro

E minha meta para 2012? Com certeza será contribuir como desenvolvedor para alguns projetos. Sinto que preciso dar um passo a mais na carreira e deixar de apenas fazer divulgação. Este ano comecei a dar meus primeiros passos no desenvolvimento de software livre: primeiro com o ORC, iniciado pelo Gabriel Duarte, e depois começando o Barcode-Check-in, que talvez seja usado no Hack’n Rio para fazer o credenciamento dos participantes de forma mais ágil. No entanto, além de criar projetos, quero contribuir com os que já existem e que utilizo.

Se o mundo não acabar em 2012 (:P), espero que daqui a 10 anos eu já seja um desenvolvedor conhecido e respeitado, e tenha como minha principal fonte de renda o software livre. Como sou um cara ansioso, agora estou doido para saber como estarei em 2021!

Manifesto para uma mudança de postura

Recentemente postei na lista de discussão da SL-RJ uma mensagem que gostaria de compartilhar para um número maior de pessoas. A razão para eu escrever este texto foi por um integrante da comunidade escreveu uma frase que já ouvi muitas vezes de diversos ativistas do software livre. A frase (com leves modificações) é:

Vou usar um software proprietário X, porque o software livre Y ainda não está tão bom.

Ler isto novamente me fez pensar e acho que esta postura que estamos acostumados a tomar deveria mudar. Qual postura? Pegar o atalho e deixar de contribuir para o software livre para utilizar um software proprietário.

Antes de você que já falou isto pare de ler, deixo claro que não estou te crucificando e vou deixar isto mais claro ainda durante o texto. Pessoas influentes já disseram isto, então quem sou eu para crucificar alguém?

Antes de continuar, recomendo a leitura do artigo “Software Livre não nasce em árvores: do Colonialismo ao extrativismo digital” do Jomar Silva, porque tem tudo a ver com este conteúdo.

Extrativismo digital

Quem leu o artigo viu que a postura que citei foi chamada pelo Jomar de “extrativista”. O próprio Linus Torvalds, uma das pessoas mais influentes e que mais admiro no mundo, já fez isto. Ele não gostava de nenhuma ferramenta livre de controle de versão e passou a utilizar uma ferramenta proprietária para o Linux: o BitKeeper. No final ele teve problemas de licenciamento com a ferramenta e desenvolveu o Git, o qual fez melhor que o BitKeeper. Mas repare, nesta história toda, que a atitude extrativista não deu certo!

Tá bom, não existe outro Linus Torvalds e o cara é fora de série mesmo… Normalmente as pessoas que pegam este atalho ou não são programadores ou não programam na linguagem em que aquele software foi escrito. Sendo assim, eles não poderiam desenvolver uma solução para atendê-los. Mas será que existe outro caminho?

Relembrando o nosso amor pelo software livre

Eu gosto de software livre por vários motivos:

  1. Não fico preso a fornecedores e suas estratégias de mercado;
  2. A evolução normalmente é muito mais rápida;
  3. Eu posso reutilizar em meus projetos e debugar quando tenho algum problema;
  4. Eu posso consertar e melhorar!

Vale a pena abandonar isto tudo tão rápido?

Qual minha solução “genial”? (É o que muita gente deve ter pensado, né? Joguei pedra, agora ferrou – vou ter que dar uma solução! ;) )

Eu acho que nós, desenvolvedores, poderíamos de fato exercer o 4° ponto que citei. Quando não tivermos conhecimento requerido, podemos apelar para outra solução. Esta solução seria, ao invés de pagar o proprietário, pagar a um desenvolvedor para fazer o que você precisa no software livre!

Você acha isto impossível? Olha que eu conheço um cara que está trabalhando na Globo.com reimplementando partes do software livre Squid! Este cara não teria competência para implementar o que está faltando no seu software? Acho que sim.

Além disso, temos as seguintes vantagens:

  1. Você estará apoiando a economia local e não mandando dinheiro para americanos sacanas que querem te enjaular;
  2. O software ficará mais próximo do que você considera ideal (o próprio Randal Schwartz disse que nem o iPhone nem o MacOS são perfeitos);
  3. Você estará fortalecendo o software livre e mostrando que é um modelo viável e sustentável;
  4. Melhorando o software, é capaz dele se ter mais usuários e receber melhorias mais rápido;
  5. Esta melhoria estará disponível para TODO O MUNDO! Em outras palavras: você estará fazendo um mundo melhor (sem lágrimas, por favor);

Não existe bala de prata

OK, pessoal. Eu sei que nem sempre esta solução será possível, pois pode ser que você tenha restrições de tempo de atendimento a um cliente ou o que precisa ser implementado é muito grande, ou muito complexo, ou demandaria muito mais dinheiro dentre vários outros impeditivos.

Mas gostaria de fazer um apelo a vocês: vamos considerar como primeira opção pagar alguém para desenvolver um software livre! Caso esta opção não seja possível, aí sim, vamos pensar em partir para uma solução proprietária e que vai te enjaular!