I love the concept and philosophy of Firefox OS, but none of that matters if its too slow to use.
If performance is actually acceptable on these devices, then what tricks are they using to make it faster than on higher end android devices?
I love the concept and philosophy of Firefox OS, but none of that matters if its too slow to use.
If performance is actually acceptable on these devices, then what tricks are they using to make it faster than on higher end android devices?
On low end devices fxos runs reasonably well but with noticeable lag, we have put in huge amounts of effort on the low end to make that possible. On high end devices the 'native' fxos application are incredibly snappy and there has been very little done to improve performance on high end devices.
Most of the stuff we have done is common sense, some you will see a lot of people doing, some almost no people do.
1. Shorten the path to rendering first screen, dont block on reading some data, load all scripts async etc.
2. Never animate top / left, use CSS transitions for everything.
3. We use 'will-change' to ensure that the graphics are properly layered for when they do animate (https://developer.mozilla.org/en-US/docs/Web/CSS/will-change)
4. Offline assets, in fxos we use packaged apps for various reasons, however one of the benefits is that reading from the filesystem is faster than reading over the network.
If I had one performance tip for web developers, look into how far you can use appcache to store resources offline (or if your feeling fancy, service workers). Offline capable web apps have a night and day difference.
Maybe this question isn't specific to firefox OS, but... what is the benefit of using appcache -- doesn't the browser already cache assets that it has loaded?
I mean try it against 2 fairly comparable static sites - http://backbonejs.org/ + http://pouchdb.com/, keep on refreshing them, that case is gonna give you the highest cache hit rate you can get and its still noticeable.
When I first purchased the Keon, running FirefoxOS v1.1 (I think, it was a very early version anyway), the experiment only lasted a couple of months before I returned to Android. The phone crashed a lot. Subsequently, I've upgraded for FFOS v2.1 on the Keon and it's a much, much nicer experience. Everything feels smoother and the phone/applications crash very infrequently.
A few months ago I decided I wanted a big fat screen, so purchased the Geeksphone Revolution. In all honesty, I'm running Cyanogenmod 11 on it, and waiting for Geeksphone to make a FFOS v2.x available, as there's no way I'm going to run v1.3 again.
Even with the 2.x versions of FirefoxOS, I'm still held back by lack of SIP client. I know there are some WebRTC apps, but as far as I know none of these allow calls to landlines or mobile phones. With CM11, I have it set to ask me every time I make a phone call whether I want to use the mobile network or the Internet (WiFi or mobile data, depending on how I'm connected). I make a lot of overseas phone calls for business and personally. I only have a cheap pay-as-you-go calling plan in the country I'm living in at the moment, because I don't know how long I will be here and I didn't want to be locked into a 24 month contract. I don't even need a dedicated SIP app with CM11 on the Revolution. Simply enter my SIP account details in the Settings and I'm prompted each call I make. I make cheap calls, over data networks, very easily.
I also use Telegram for 90% of my messaging requirements. It's reached the point now where I'm quite annoyed replying to an SMS, as it costs me money!
When FirefoxOS supports SIP calling, or there's a WebRTC client which allows me to call actual telephone numbers, then I'm ready to switch permanently. The FFOS user experience is really quite good. I'm not a big app user - email, Telegram, OSMaps and a few GPS tracking apps is about all. FirefoxOS is just missing that one killer feature for me.
The OS feels snappy, comparable to Android on a decent device. Applications vary and obviously you won't run most of the things you run on Android anyway - they just don't exist. Some things are still rough atm, but there seems to be a very recent announcement [1] about upcoming and freshly landed improvements similar to Project Butter on Android.
The performance feels really good enough in the 2.2 builds I'm running.
That said: The _general_ user experience isn't there yet. I carry the Flame with me most of the time, but I won't replace my 'Android for mails and IM' less-then-smart-phone setup just yet. Keyboard, copy&paste, basic applications like a mail client - all of that still requires quite some compromises.
I want to ditch Android for FxOS, but so far the drop in productivity isn't worth it. For me.
I am no expert, but the FirefoxOS stack is really lean and simple compared to the Android stack. Some would say that Android is an huge undocumented bloat with all the layers added during its lifetime (just check the AOSP build system to understand this opinion).
As I see it, FirefoxOS, by being ten years younger and less used, is doing million things less than Android (from the system point of view), and that's how things can get reasonably fast and responsive (that, and the blazing fast SpiderMonkey vm).
Firefox with Servo looks fantastic, though, and from their roadmap it seems Servo will be coming to mobile first, this year. I'm really hoping for a multi-process highly parallel completely rewritten in Rust Firefox within the next two years.