# Firefox OS

O Firefox OS foi um sistema operacional livre desenvolvido pela Mozilla e baseado no navegador da web Firefox. Além de ter a Mozilla como principal responsável, o Firefox OS conta com apoio de outras empresas como a Telefônica e uma vasta comunidade de voluntários em todo o mundo. Este sistema operacional tem como alvo dispositivos móveis, em especial, modelos mais simples e de baixo custo, já que prioriza o baixo consumo de recursos, como processamento e memória RAM. No entanto, é possível encontrá-lo em outros tipos de equipamento, como computadores portáteis de baixo consumo energético. No Brasil, os aparelhos comercializados são o Alcatel One Touch Fire e o LG Fireweb.
O canal oficial de distribuição de aplicativos era o Marketplace, mas operadoras e terceiros podem criar seu próprio canal de distribuição. Os aplicativos são construídos a partir de padrões abertos da Web em HTML5, CSS e JavaScript. Apesar de utilizar tecnologias da Web para a criação de seus aplicativos, o Firefox OS não exigia acesso à Internet para usá-los. Os aplicativos, como jogos, eram salvos na memória interna do aparelho e podiam ser executados como em um smartphone convencional, a exemplo do Android, iOS e do Windows Phone.

## Recepção no mercado e descontinuação

Durante a conceptualização do sistema, a Mozilla atraiu a atenção de desenvolvedores e usuários interessados no desenvolvimento de um sistema operacional para dispositivos móveis que fosse completamente aberto e livre de restrições. Entretanto, assim que o produto desenvolvido chegou ao mercado, gerou frustrações, pois não correspondeu com as expectativas, tendo sido comercializado sobre uma plataforma de hardware fechada, divergindo da proposta da Mozilla. Desde seu primeiro lançamento, o interesse do público sobre o Firefox OS, antes crescente, apenas reduziu, acarretando o encerramento do projeto.
Em fevereiro de 2016, numa mensagem enviada aos programadores, a fundação assumiu os “planos para acabar com o suporte [do sistema operativo] para smartphones, depois do lançamento da versão 2.6 do Firefox OS”. Na mesma nota, explicou: “isto significa que o Firefox OS para smartphones não continuará a beneficiar do envolvimento de uma equipa a partir de maio de 2016. A Mozilla também detalhou que em consequência desta decisão, já a partir de 29 de março, deixaria de aceitar aplicações para Android, tablet e desktop na sua loja. Todas as aplicações que não suportem o Firefox OS serão removidas a partir da mesma altura.
A decisão de descontinuar o sistema operativo decorreu do facto de a plataforma nunca ter conseguido despertar a atenção nem de clientes nem de fabricantes.

## Licenciamento

O Firefox OS foi produto comercializado pela Mozilla, baseado no projeto Boot to Gecko (B2G). B2G é o codinome do projeto de código aberto e livre mantido pela Mozilla em parceria com fabricantes e desenvolvedores independentes. A diferença entre ambos é que o Firefox OS adiciona ao Boot to Gecko marca, cores e outras características que estão registradas e definidas pela Mozilla.
A Mozilla impunha restrições para o uso do Firefox OS:
* Adotar dispositivo complacente com open-source: o dispositivo deve atender aos requisitos e restrições das licenças open-source existentes no código-fonte do projeto e encorajar parceiros a se envolverem no projeto, contribuindo com código que pode ser utilizado pela Mozilla.
* Ter os requisitos mínimos de hardware e desempenho definidos pela Mozilla e pela Open Web Device Complicance Review Board.
* Garantir que qualquer mudança feita manterá a compatibilidade com a Web API e os aspectos de privacidade e segurança previamente definidos.
* Fornecer atualizações por pelo menos 1 ano da data de lançamento.
Caso um fabricante adotasse o Boot to Gecko em um dispositivo, a Mozilla reconhecia três categorias de licenciamento que variavam conforme o atendimento dos requisitos definidos:
* Boot to Gecko: pode ser usado sem atender a nenhum requisito. Um exemplo de dispositivo que adota esse nível é o Geeksphone Revolution.
* Powered By: alguns dos requisitos de uso do Firefox OS são atendidos, o que permite ao fabricante anunciar usar a marca Firefox OS, dizer que o dispositivo é um "Firefox OS" e os padrões de cores da marca. Como os requisitos mínimos impostos pela Mozilla não precisam ser atendidos, este nível de licenciamento deve cobrir a maior partes dos dispositivos, inclusive dispositivos de baixíssimo custo, tablets, TVs e outros equipamentos.
* Co Branded: todos os requisitos são atendidos e o aparelho passa a ter a marca dupla: do fabricante e do Firefox OS. Um exemplo de dispositivo é o Alcatel One Touch Fire.

## Projeto aberto

O Boot to Gecko foi um projeto open-source e livre. É possível obter todas as versões, incluindo anteriores, atual ou em desenvolvimento, a partir do repositório da Mozilla no Git Hub. Além do acesso à implementação, a lista de funcionalidades previstas para implementação está aberta ao público.

## Arquitetura

A arquitetura Boot2Gecko é composta por três módulos: Gonk, Gecko e Gaia.

### Gonk

É o "sistema operacional" de baixo nível. Essencialmente é o kernel Linux e a camada de abstração de hardware. O kernel é baseado no kernel da versão open source do Android, o Android Open Source Project (AOSP). O uso de parte do projeto AOSP permite ao Firefox OS usar ferramentas comuns às do desenvolvimento para Android, como o ADB e o fastboot. Outro benefício é o uso de drivers que dão suporte à ampla variedade de dispositivos Android disponíveis no mercado.

### Gecko

Neste estão implementados os padrões HTML, CSS, JavaScript. Essa camada é uma versão do mesmo motor de layout utilizado no navegador Firefox. Ela permite que as interfaces e apps funcionem no próprio Firefox OS e em outros sistemas operacionais nos quais o navegador é utilizado.

### Gaia

É a camada da interface gráfica do sistema operacional. Nela está implementados tudo que aparece quando o sistema operacional é carregado. Ou seja, tela de bloqueio, barra de notificações, discador, gerenciador de mensagens de texto, câmera e demais aplicações A interface é totalmente escrita em padrões aberto da Web: HTML, CSS e JavaScript.

## Versões

| Versão | Tornou-se Feature Complete (FC) em | Data de lançamento | Codinome | Versão do Gecko |
| 1.0 | 22 de dezembro de 2012 | 21 de fevereiro de 2013 | TEF | Gecko 18 |
| 1.0.1 | 15 de janeiro de 2013 | 6 de setembro de 2013 | Shira | Gecko 18$^[$ |
| 1.1.0 | 29 de março de 2013 | 9 de outubro de 2013 | Leo | Gecko 18+ (nova APIs) |
| 1.1.1 | | - | HD | Mesmo que a versão 1.1.0, mas com WVGA |
| 1.2.0 | 15 de setembro de 2013 | 9 de dezembro de 2013 | Koi | Gecko 26 |
| 1.3.0 | 9 de dezembro de 2013 | 17 de março de 2014 | | Gecko 28 |
| 1.4.0 | 17 de março de 2014 | - | | Gecko 30 |

## Desenvolvimento

O desenvolvimento de aplicativos no Firefox OS é simples e muito semelhante com as extensões do navegador Firefox. É necessário um arquivo "manifest" (no formato JSON), sendo este responsável por todas as informações que o aplicativo precisa para poder funcionar: (nome do app, versão, informações do desenvolvedor, APIs utilizados, permissões, etc.). As Apps são basicamente escritas em HTML, JavaScript e CSS, já que o sistema é baseado em tecnologia web.
Qualquer desenvolvedor pode submeter seus aplicativos no Marketplace (loja de aplicativos do Firefox OS), bem como distribuí-los em qualquer outros.

### Tipos de aplicativos

O Firefox OS possui três tipos de aplicativos:
* Host App: são “Aplicativos Hospedados”, os tipos mais simples e comum de aplicativo. Como eles podem ser hospedados em locais variados e não passam pelo processo de análise da Política de Segurança de Conteúdo da Mozilla, eles não podem conseguir acesso a recursos mais sensíveis do sistema operacional, disponível pelas Web APIs.
* Packaged App: chamado também de "Aplicativos Empacotados”, possui inúmeras vantagens em relação aos Host Apps—dentre as quais, ter o conteúdo inteiramente salvo no aparelho após a instalação e poder ter acesso a recursos mais sensíveis do sistema operacional. São empacotados num arquivo ZIP contendo todos os arquivos do aplicativo, Manifest, HTML, CSS, imagens, JavaScript, etc.
* Hybrid App: chamado também de "Aplicativos Híbridos”, sendo basicamente um Host App, porém, também consegue funcionar como um Packaged App. Esse tipo pode ser considerado uma junção dos pontos positivos dos 2 tipos anteriores.

### Informações Técnicas

Por ser baseado em padrões e formatos abertos, em especial, da Web, os principais elementos suportados pelo Firefox OS envolvem as mesmas características.
Gráficos:
* 2D Canvas
* WebGL
Áudio e Vídeo:
* MP3
* MP4
* 3GPP
Proteção de Código:
* Obfuscation
* Mozilla Persona
IDEs e SDKs:
* Remote Debuging
* Profiling
* Firefox Simulator
Exemplo de um "manifest":