Categorias

Entrevista exclusiva com Chris Heilmann do Mozilla sobre o Firefox OS [entrevista]

Christian-Heilmann-headshot-June2013-thumb

Entrevistamos Christian Heilmann, principal evangelista de tecnologias da Mozilla. Ele nos contou um pouco sobre algumas particularidades do novo sistema operacional móvel da empresa, o Firefox OS.

Usar tecnologia web para desenvolver aplicativos móveis nativos é uma ótima ideia, dado que diversos desenvolvedores web começarão a criar apps para o Firefox OS. Entretanto, embora o uso de Javascript tenha facilitado as coisas, isso também pode fazer o código fonte vulnerável. Como a Mozilla vê esse problema e como será possível para nós, desenvolvedores, protegermos nosso código além das maneiras convencionais, como usar técnicas de embaralhamento de código (obfuscation)?

Bem como a utilização das técnicas de ofuscação JS recomendadas para proteger o seu código de aplicativo, sempre que possível recomendamos o uso de um sistema de identidade como o Mozilla Persona, para exigir autenticação antes de fornecer conteúdos importantes do seu backend. Além disso, para ajudar a proteger suas vendas de aplicativos no Firefox Marketplace, nós emitiremos recibos únicos e invioláveis para cada compra de aplicativo, os quais você pode validar em seu cliente, servidor ou usando nosso serviço de validação de recibo.

Dito isto, porém, concentrar-se em tentar fazer o seu JavaScript ilegível é a abordagem errada na construção de aplicações HTML5. Dado que a maior parte do aplicativo não é o seu código, mas sim o serviço que presta e a interface que usa para torná-lo tão fácil quanto possível para que os usuários finais alcancem um objetivo. Copiar tudo isso descaradamente é o que deve levar a ações judiciais, sem olhar para o código do seu aplicativo. Este código se transforma com as mudanças que acontecem nas aplicações ao longo do tempo, o que significa que as pessoas tentando copiar seu código teriam que se manter bem atualizados.

A vantagem de usar HTML5 para seus aplicativos é que atualizar partes do aplicativo é muito fácil, sem ter que enviar toda a base de código a cada mudança. Isso torna também mais difícil para piratas roubarem seu código, uma vez que é esse seria um alvo em movimento. Flexibilidade se tornou um poder na web, e você não pode roubar algo que se adapta a diferentes casos de uso. Por exemplo, um usuário pode olhar para o seu aplicativo no Firefox e obter o código otimizado do Firefox. No entanto, sua aplicação visualizado no Chrome teria um código ligeiramente diferente se você desejar otimizar em diferentes navegadores. Como o criador da aplicação, você controlar tudo com apenas um recurso, já como um atacante, eu teria que obter diversas versões.

 

Sem dúvida, os games para smartphones são um modo fantástico de fazer uma Loja de Aplicativos mais popular e maior. Nós sabemos que o Firefox OS já possui suporte para recursos gráficos como 2d Canvas e WebGL. Minha pergunta aqui seria: como será possível rodar jogos graficamente pesados usando apenas apps baseados em Javascript?

Em colaboração com a Epic Games, nós recentemente portamos o motor de jogos Unreal Engine 3, utilizando Emscripten e asm.js, onde jogos C/C ++ podem ser executados através de um compilador para criar JavaScript que é aproximadamente 1,6 vezes mais lento do que o código nativo no navegador.

Se você estiver usando o Firefox Nightly, Aurora ou Beta, você pode conferir esta demonstração ao vivo da Citadel: https://www.unrealengine.com/html5/, para ter uma ideia de como os jogos estão ficando bonitos. Com relação ao mercado móvel, é só uma questão de tempo até que essa tecnologia nos permita fazer a mesma coisa em celulares.

Para mais informações, veja: https://blog.mozilla.org/blog/2013/03/27/mozilla-is-unlocking-the-power-of-the-web-as-a-platform-for-gaming/

Em smartphones, e especialmente nos low-end (celulares mais simples e de baixo custo) que queremos oferecer para fazer o Firefox OS disponível para todos, esse não é necessariamente o caminho certo.

Nós fizemos o nosso melhor para que Canvas e hardware WebGL sejam mais rápidos e usem o mínimo de recursos possíveis, mas comparar um telefone OS Firefox com um iPhone high-end não é sensato, pois seria o mesmo que comparar um táxi a Ferrari: um está disponível para todos e você vai chegar onde você precisa, já o outro é emocionante para alguns e capaz de atingir uma velocidade incrível que você provavelmente nunca vai ser capaz de usar.

Reunimos algumas boas dicas sobre como fazer jogos HTML5 mais rápidos no Firefox OS – cada um dos quais também significa que o desempenho do que você faz será muito melhor em dispositivos mais rápidos: https://hacks.mozilla.org/ 2013/05/optimizing-your-javascript-game-for-firefox-os /

 

Lembre-se de que o Firefox OS não tem como objetivo substituir iPhones e dispositivos Android high-end, mas sim ser uma opção para usuários de telefones mais simples conseguir obter seu primeiro smartphone acessível e totalmente open web.

 

Como a Mozilla vê o mercado latino-americano para a plataforma Firefox OS e quais são os planos para lançamentos no Brasil?

O mercado latino-americano é uma grande oportunidade para colocar o Firefox OS nas mãos de muitas pessoas que já conhecem e amam a marca Firefox e o que ela representa.

Nós queremos ajudar a fazer mais um bilhão de pessoas ficarem online e nós vemos o FirefoX OS como uma das ferramentas essenciais para isso. Lançamentos no Brasil dependem das operadoras, mas será em algum momento desse verão.

[o verão americano é entre julho e agosto]

 

Confira a versão original em inglês:

Using web tech to develop native mobile apps it’s a great idea, for sure. Many web developers will start building Firefox OS Apps. Even though the use of Javascript made things more simple, it also can turn the source code vulnerable. How Mozilla see this issue and how it will be possible for us, developers, to protect our code beyond the usual ways, like obfuscation techniques?

As well as using the recommended JS obfuscation techniques to protect your App code, where possible, we recommend the use of an identity system like Mozilla Persona to require authentication before serving important content from your backend. Also, to help protect your apps sales in the Firefox Marketplace, we will issue unique, tamper evident receipts for each app purchase, which you can validate in your client, on your server, or using our receipt validation service.

That said, however, concentrating on trying to make your JavaScript unreadable is the wrong approach to building HTML5 applications. For the most part your app is not its code but the service it provides and the interface it uses to make it as easy as possible for your end users to reach a goal. Copying all of that blatantly is what should lead to legal actions, not looking at the code of your app. This code changes a lot as applications change over time, which means that people copying your code would have to keep up.

The benefit of using HTML5 for your apps is that updating parts of the application is very easy without having to ship the whole code base at every change. This makes it also harder for pirates to steal your application code as it is a moving target. Flexibility is power on the web, and you can’t steal something that adapts itself to different use cases. For example a user can look at your app in Firefox and get the Firefox optimised code.

However, your app looked at in Chrome would be slightly different code if you want to optimize for what different browsers offer you. As the maintainer you control this in one resource, as an attacker I’d have to get the different versions.

 

No doubt, the games for smartphones are a fantastic way to make a App Store popular and bigger. We do know that Firefox OS already has support for graphic resources like 2d Canvas and WebGL. My question here is, will it be possible to run heavy graphic games using only Javascript based Apps?

In collaboration with Epic Games we recently ported the Unreal Engine 3 gaming engine using Emscripten and asm.js, where C/C++ games can be run through a compiler to create JavaScript that is approximately 1.6x slower than native code in the browser.

If you’re using Firefox Nightly, Aurora or Beta you can check out this live demo of Citadel: https://www.unrealengine.com/html5/, to get an idea of how good the games look.

With respect to mobile, it’s only a matter of time until this technology allows us to do the same thing on mobile. See: https://blog.mozilla.org/blog/2013/03/27/mozilla-is-unlocking-the-power-of-the-web-as-a-platform-for-gaming/

On Smartphones – and especially the low-end smartphones we want to offer to make Firefox OS available for everybody, this is not necessarily the right approach though. We’ve done our best to make Canvas and WebGL hardware accelerated and use as few resources as possible, but comparing a Firefox OS phone with a high-end iPhone is not sensible as it would be the same to compare a Taxi with a Ferrari.

One is available for all and will get you where you need to and the other is exciting for a few and capable of amazing speed you probably will never be able to use. We’ve collected some very good tips on how to make HTML5 games very fast on Firefox OS – each of which also means that the performance of what you do will be much better on faster devices: https://hacks.mozilla.org/2013/05/optimizing-your-javascript-game-for-firefox-os/

Remember that Firefox OS is not aimed to replace iPhones and high end Android devices, but instead is to be the upgrade for feature phone users to get their first affordable and completely open web enabled device.

 

How Mozilla see the latin market for Firefox OS platform and what are the plans for release in Brazil?

The Latin market is a great opportunity to get Firefox OS into the hands of many people already familiar with and who love the Firefox brand and what it stands for.

We want to help get the next billion people online and we see Firefox OS as one of the key tools to get us there. It’s up to the operators when phones for Brazil will be released, but it will be some time this summer.