Firefox, Android and ARMing the World with the Open Web.

I’ve been meaning to blog about this for a while, and Singularity Hub’s article about the explosive sales of low-cost Android phones in Kenya reminded me to actually do it.

I was lucky enough to attend a bunch of different tech events outside of the USA in the last year. I went to events in Thailand, Cambodia, Laos, Vietnam, Indonesia and Kenya. I also visited Malaysia and China, and briefly crossed the border into Burma.

Everywhere I went I found Android.

As the article mentioned, Huawei’s IDEOS phones are selling fast in Kenya at ~80USD. These were on sale in the airport in Nairobi, and in many of the mobile shops I went into. Nexian is a manufacturer in Indonesia, with a bunch of Android phones aimed at the mid- to low-end market. In Thailand, HTC is the big Android purveyor (and always *one* Windows phone on offer!). Their low-budget phones in the US are the mid-range phones in Thailand, such as the Wildfire and Tattoo. There were a bunch of other brands and models, I really should’ve taken pictures. The advertising was everywhere. Google was holding Android dev days in major cities. The presence was constant and sometimes unavoidable – like when I rode a tuk-tuk into Siem Reap from the airport and we drove under a Google/Android banner that crossed all 6 lanes of traffic.

Anyways, everywhere I went I was asked why Firefox wasn’t in the Android Market, or if it was, people said that it wouldn’t install, or crashed before starting up.

Well, the explanation is that not all Android devices are equal. The Android devices that are selling well in these countries are very low cost devices. They’re selling in places where 40% of the population lives on less than 2USD per day (Kenya, according to that article), or where >80% of the populace is not even online yet (less than 20% of Indonesia is online, according to Internetworldstats.com). The ARM CPUs that these Android phones have are not very powerful, and they usually have little memory. Often these devices are running 1.x versions of Android. Their screens are small and have the best resolution you could get in a phone in 2002.

But that’s only part of the explanation. These phones all come with browsers! Why can’t they install Firefox instead?

  • Firefox on Android doesn’t support the ARM CPUs commonly used in these phones.
  • Firefox is not realistically usable given the amount of memory many of these phones ship with.

There’ve been bugs filed about supporting Android devices with weak CPUs, little memory and poor screen resolution, but no traction. The mobile team has explicitly not targeted these phones. Maybe this is because Firefox as it exists today is too far away from being able to run under these conditions. If that’s the case, maybe we need to look at other options, like radically cutting down the feature set, even further than Fennec did.

I don’t think we can wait for decent hardware to become affordable in these markets. They are growing fast, and turning to the Android they can get, and taking the only Web they can get: The one they can afford. There’s not much choice in that scenario, and choice is a key part of the Mozilla mission. When the other 80% of Indonesia comes online for the very first time, Mozilla and Firefox should be there, ready to provide that choice.


13 Comments on “Firefox, Android and ARMing the World with the Open Web.”

  1. Cortex says:

    It’s not so easy, those ARMv5 and ARMv6 architecture SoCs are really underpowered compared to ARMv7 architecture SoCs like Nvidia Tegra 2 and the upcoming Nvidia Tegra 3 quad-core SoC.

    http://en.wikipedia.org/wiki/ARM_architecture

    Mozilla should not bother with those, even Google requires ARMv7 SoCs for Android 2.x/3.x/Ice Cream Sandwich. Almost all the manufacturers are using ARMv7 architecture SoCs for their browser, they’re not catering to the lowest common denominator hardware.

    ARMv7 dual-core SoCs will be dirt cheap in the future as the ARMv7 quad-core SoCs replace them at the high-end of the market.

    • Peter Robinson says:

      Actually they don’t require ARMv7 for 2.x at all. I have gingerbread running really fast on my cheep Orange SanFrancisco ARMv6 phone.

  2. Yeah, I’ve been thinking about this seeing as WebKit and Opera can run on weaker hardware.

    I think despite the industry moving forward to more powerful hardware, Mozilla should still work on making Firefox work on weaker hardware.
    Devices with more powerful hardware should benefit from this anyways.

  3. Mobile Firefox is already slow on a Nexus one with its 1GHz cpu and 512MB of ram. Unless you use some magic to lower cpu and memory usage bij 4x you won’t make it run on those $100 android devices.
    Maybe bring Firefox home to old android?

  4. Jens says:

    I love Firefox on the desktop but on my Nexus S it’s barely usable due to the high memory usage. I.e. I open a link in a newsreader into Firefox and when I’m done reading and go back the newsreader app was killed due to low memory and has to restart… It’s not fun that way. Still prefer xscope in Android

  5. ted says:

    I’ve got an ARMv6 Android phone (ZTE Blade) and am somewhat disappointed that I can’t run Firefox. However, I wouldn’t worry about it too much if I was in charge of Mozilla.

    1. Android devices are getting better all the time. By the time Android really takes off, it’ll be running on better chips, even at the low end.

    2. It gives you a fairly clean line of separation between won’t work / will work rather than have performance degrade down past acceptable and annoy users.

    3. I don’t think it particularly harms Firefox if people are running fairly recent Opera or Webkit-based browsers. If they’re running out-of-date browsers or IE or worst of all an out-of-date-IE then that’s holding back Firefox and the web due to lack of support form newer standards like WebGL or WebM. You need to pick your battles.

  6. robcee says:

    Would the time to create a working version of Firefox on these low-end devices (processor, old versions of Android) see a lot of these limitations disappear?

    The high-end android phone of today is the low-cost phone of 2 years from now. Granted, I’d love to see something called “Firefox” on these phones right now to get it in people’s hands.

    Great post! Very thought provoking.

  7. Samat Jain says:

    My 2¢.

    Seeing these devices run Android and have web browsers is one thing—actually attempting to use the Web on them is another. Have you actually tried?

    Firefox Mobile already gets enough flak for being slow (compared to the stock Android browser) on high-end devices, even though it’s a situation quickly improving every day. Is it reasonable, however, to think the experience will improve to be usable on devices where even the stock browser is barely usable? As mentioned, many devices simply don’t have enough RAM.

    3. I don’t think it particularly harms Firefox if people are running fairly recent Opera or Webkit-based browsers. If they’re running out-of-date browsers or IE or worst of all an out-of-date-IE then that’s holding back Firefox and the web due to lack of support form newer standards like WebGL or WebM. You need to pick your battles.

    You’ve just made a point against your argument.

    Only the most tech-savvy of users can upgrade their OS—otherwise, they’re left to the whim of the manufacturers who in the Android space have consistently shown they’ve no interest in pushing out software updates. AFAIK neither the Browser app nor its Webkit component are independently upgradeable outside of Android.

    People who don’t purchase new hardware will be stuck on old versions of Android and thus old versions of Webkit, holding the Mobile Web back yet reminiscent of Microsoft and Internet Explorer.

    The high-end android phone of today is the low-cost phone of 2 years from now. Granted, I’d love to see something called “Firefox” on these phones right now to get it in people’s hands.

    I feel like that misunderstands how ARM licensing works.

    Yes, today’s high-end phones will be low-cost 2 years from now, but the way ARM works, it also means today’s low-cost phones will be even MORE low-cost 2 years from now. That is, since anyone can purchase ARM licensing and manufacture it (you’re not, say, forced to buy the latest and greatest from AMD or Intel), these old CPUs will always be around. Whether in significant numbers to justify supporting, I don’t know.

  8. Jigar Shah says:

    FF is putting some efforts like MemShrink. But yes…its again for desktop mostly. Definitely fennec will benefit from it.

    But as rightly said, Byt the time those high power phone cheaper, People will be used to using those build-in browser.

    Getting lean should be top target for FF. War is on. androids are everywhere.

    (Disclaimer : I am still waiting for FF to run on cheaper android, So i can buy one soon :))

  9. Filipe Dias says:

    Hi guys!

    A few months back, I went a little crazy and set myself to get an webgl solution for my ZTE.

    Yes, even after reading mozilla ignored the ArmV6 platform, I figured that if GL ES 2.0 DOES WORK on these devices, so would WEBGL.

    Where would I look next? Webkit, of course. After countless nights of VM setup and git cloning the android tree, I dug the webkit source, looking everywhere for webgl context related stuff. Guess what? It’s there, waiting for someone to build it properly, which I was unable to, due to schedule issues.

    My next move was to try something on a (pretty) higher level: javascript native interface. I tried two approachs:

    a) have some android “native” (read java) code called from javascript which, in turn, would address a glSurfaceView, building shaders from text passed as parameters. It could work but, in this god forgotten world, glSurfaceView is not considered a valid UI component (why, oh why… SurfaceView).

    b) trying to be a “smartass” (I had to try it 🙂 ) , tried to register an interface into a WebView and use the gl context. I totally forgot the android GLES interface’s methods had different names from those used in javascript WebglContext 🙂 That was as far as I got before being met, once again, with pretty tight schedules…

    So… Would b) work if anyone tried and created a bridge interface between GLES20 (not an object, by the way, it’s a static class. It just downed on me: is it final?) and javascript so we could call it’s native methods, having the native side converting datatypes?

    Any thoughts on this?

  10. Cortex says:

    http://www.anandtech.com/show/4991/arms-cortex-a7-bringing-cheaper-dualcore-more-power-efficient-highend-devices

    ARM just announced the Cortex A7 dual-core. Like I wrote earlier, ARMv7 dual-cores will be cheaper, faster and more power efficient than older ARMv6 designs.

  11. free vpn says:

    What’s up to all, it’s genuinely a nice for me to pay a
    visit this site, it consists of precious Information.


Leave a reply to robcee Cancel reply