Rich mentioned that he got a Nexus S Boot to Gecko (now Firefox OS) phone from Mozilla at JSConf. I guess he got bored with B2G and wanted to put Android ICS on the phone, but didn’t have the time or desire to get that going. He offered me the phone, and I jumped at the chance to go hands on with B2G.
For the unfamiliar, B2G is an open source mobile operating system shepherded by Mozilla that uses open web standards and APIs in lieu of platform specific ones. The open web technologies stack looks like this:
- Linux kernel
- A hardware abstraction layer, called “Gonk”
- Platform-independent JS APIs for device features (telephony, SMS, camera, Bluetooth, USB, NFC, etc.)
- Platform-independent system applications (lock screen, phone dialing & phone messaging, a view of installed applications, etc.) written in HTML5; the user interface of these is codenamed “Gaia”
- Platform-independent HTML5 web applications
B2G is a noble and good idea, elevating the mobile web to a new level and showcasing the power of HTML5, CSS3 and JS, and from what I’ve seen, B2G is pretty slick. I was excited to try it out, and I know at least one person, Friend of the ‘Lab John Sim (@jrsim_uix), is interested to hear feedback on the OS.
Unfortunately, I just couldn’t get basic stuff working to test it very much, a disappointment, so what follows are only general and basic impressions.
Not that hardware matters or is specific to B2G, but it currently only runs dependably on a few phones. The one Rich sent was a Nexus S GSM, the T-Mobile variety, minus a SIM card. I’ve been carrying the Sprint Nexus S for a year, and although the two look exactly alike, the GSM one feels slightly denser.
When booting, you are greeted with the Google splash, and a quick reminder that the phone is unlocked, w00t! Then, the OS is running.
I have to say the best feature of B2G I saw was its lightning fast startup, about five seconds, not kidding. My CDMA Nexus S takes more than a minute to start ICS, which is about double what it took to start Gingerbread. No comparison here. Shutdown was equally fast, pretty much immediate.
OS and Apps
B2G boots into a lock screen, which is swipe to unlock, pretty standard stuff by now.
There’s an Android-style notifications window shade that pulls down from the tiny system header. The fonts and icons in B2G are terribly small with very few standard affordances, e.g. I couldn’t tell if the wifi icon was indicating connected or not, since it was both small and white on black.
The small font size is kind of a big deal on a small screen, and I found myself squinting at the phone wishing for bifocals.
B2G includes quite a few apps that I barely tried because I couldn’t get the wifi working.
When I landed in the wifi settings, there was no option to add a network manually. My home network SSID is hidden, so no dice there. Popping open the settings threw up an error page that gaiamobile.org was unreachable.
Turns out Gaia, the UI, is hosted, with many components cached locally. Well, I guess my device’s cache was empty because every settings page threw that error. Obviously, none of the web apps worked either.
So, I tried a network with a broadcasted SSID, ironically, the mobile hotspot on my CDMA Nexus S. I was able to connect, but the connection kept dropping. Eventually, I decided to attempt a refresh of the phone and stumbled upon this wiki, set up specifically for the JSConf developers. Even though I was able to flash a new version of Gaia onto the phone, the network issue persisted.
I looked around and found some pretty involved tutorials on how to get B2G flashed onto a Nexus S, but after throwing several hours at this project, I’ve decided to bail on B2G for now and tackle Rich’s challenge, i.e. putting Android on it, which is easier said than done.
Anyway, B2G looked very slick, and it was pleasingly fast and responsive. I’m truly disappointed that I couldn’t give it a better test drive. If you’re interested, you can run B2G on your laptop. Comparing the B2G version on the Nexus S with the screenshots of what they’re calling Firefox OS, I can see a lot of work has been done.
If I could only flash that newer version to my device.
Maybe I’ll give it another go. If not, I’ll wade through the adventure of re-flashing the device with Android. Either way, I’ll post the experiences here.
Thoughts? Find the comments.