This article expresses the author's opinion at the time of writing. There are no guarantees of correctness, originality or current relevance. Copying the whole article is forbidden. Transcription of selected parts is allowed provided that author and this source are mentioned.
My work colleagues routinely enroll in developer contests and similar promotions to get hardware, like development boards and phones. Unfortunately I am not "in the loop" for such contests and I don't even pay attention to related announcements. Shame on me.
But this time a friend (Toti?) from #d00dz tipped me about Firefox OS devices for developers, and I tried my hand. Beginner's luck struck and I got a Keon phone. Having a moderately successful app in Android store — that happens to be written in HTML5 — certainly helped.
The Keon phone is the 'youngest child' of the devices manufactured by Geeksphone. It is small and not very powerful; equivalent phones cost a couple bucks in the store. But holding a live device loaded with the platform is much, much better than any simulator. And of course, Keons (or Firefox OS devices in general) can't be found in the nearby store yet. Having access to a prerelease platform is the nerd's equivalent of dating a supermodel :)
In spite of the slow CPU and low-resolution screen, Keon has 512MB RAM and almost every sensor found in flagship smartphones, allowing the developer to test every kind of app in it.
As you can see in the picture, the phone came in a very attractive cubic box. Those folks learnt a couple lessons from Cupertino. A MicroSD card was enclosed in the FEDEX bag, a nice touch that spared me a walk to the store. Phone came loaded with Firefox OS 1.0, which is stable and fully functional (except for GPS).
I experimented with images of Firefox v1.1 and v1.2, each one has its share of bugs. I had problems pushing my app in v1.2 image, so I settled with v1.1. It shows "Emergency Calls Only" instead of the telecom name, but voice calls and SMS just work, and a config tweak fixed GPS. I even wrote a simple app to show raw geolocation data, since no app in Firefox Marketplace seems to do that.
The only development tool for the platform is the Firefox OS Simulator, that is a Firefox add-on. It contains a surprisingly good simulator as well as a 'Push' option to install the app on the phone. Development itself is carried out outside Simulator, using your favorite tools (*cough* vi *cough*) and initial testing can be made in any browser, since Firefox OS is an HTML5-based platform.
The simulator add-on is immature, as the platform in general is immature. When you push the app to the phone you need to kill it explicitly, so the latest version is started. Annoying little things like that. But the tool works and it is a good start.
To put this initial experience into perspective, I quit playing with Tizen because of its toolchain: slow, confusing, and no way to try a development device. With Firefox OS's tools, I felt home right away.
When you submit an app proposal to get a Firefox phone, you have to promise some kind of deadline e.g. have the app ready 30 days after delivery. I managed to port my app in just two moonlighting-days, and even wrote a second app to test the GPS (as mentioned before).
Firefox OS (FOS from now on) has the same age-old ambition, shared by many other past and present players, of being a portable HTML5-based platform.
FOS has three main layers: Gecko (the browser engine), Gaia (the portable part of the platform, implements the UI, etc.) and a platform-dependent substratum. In a PC, the substratum is the operating system you use. In the phone, it is Gonk, "basically an extremely simple Linux distribution", accordingly to the documentation.
For some Android-based phones, it is also possible to use Android in place of Gonk (i.e. there is a port of Gaia to Android platform). Actually, Gonk borrows some components and protocols from the open-source parts of Android, like fastboot and adb, making even easier for Android developers to grasp the new platform.
The whole stack of FOS-on-phone is normally distributed as a flashable image and is known as B2G ("Boot to Gecko"). B2G was an initial nickname of the Gonk layer, that stuck to the whole image. When searching for FOS stuff related to phones, it may be good to include "B2G". Being an open-source platform, you can fetch the sources and build your own image, as expected.
Personally, I can't help but like a mobile platform where open standards and interpreted language are first-class citizens. Back in 2006, we worked on Python for Maemo, we saw a huge number of apps being written for Maemo just because Python was available, and of course we did not forget the ordeal of being ignored by the manufacturer. (Revenge is a dish best served cold.)
Current major platforms are still quite conservative (reactionary?) in this regard, even though I must admit that they are much better than 2005-era platforms, and it is perfectly possible to write an HTML5 apps for them.
The current success of iOS and Android leaves little room for other platforms. Even the excellent Windows Phone is struggling. Firefox OS expects to find its niche in the 'feature phone' market, running on cheaper, less powerful devices. I think that it is a valid strategy; I like to carry a cheap backup phone (am I paranoid?) and an app-capable platform for it is welcome.
But many other upcoming platforms want this market as well: Tizen, Sailfish, Ubuntu Touch, Chrome OS, etc. For a while, it seemed that a new mobile platform was being announced every week. Most of them will die out. It is very difficult to say which platform (or if any platform) will thrive.
I feel that Mozilla team is doing things in a consistent way. They have a working OS, already running on real phones; the platform is based on a technology that is clearly within Mozilla's expertise. Other platforms have a record of inconsistencies, they seem to fill the role of straw men or fake Plan B's to bluff other players — not the best motivation for any technical effort.