State of Firefox Mobile platform

It’s been way too long since I last blogged, so here’s something to try and get into the mood again. I have a few other things I’d like to write about, but work here at Mozilla is probably the most pressing one at the moment, so the others will have to wait.

Those who have been following Nightly, and/or who attended our talk at FOSDEM would be aware that we’re currently rewriting the Android version of Firefox Mobile. The major part of this change is that we’re now a ‘native’ Android app, rather than a XUL app. Consequently, we fit in and behave much better than the older version of Firefox Mobile, and we get a few perks too; namely start-up performance.

Alongside this new version of Firefox Mobile, we’ve also taken the opportunity to overhaul the platform side of things. Where as the old version was multi-process, we’ve now switched to a multi-threaded application model, with the input, content processing/rendering and UI rendering all taking separate threads. Just recently, we switched from a Java-based view compositor to a native-code off-main-thread-compositor (or OMTC, for short). While previously we drew the entire page into a buffer (with extra bits around the edges) and composited that, we now directly composite the layers that make up the page.

This gives us the speed and ease of using a single process (to some extent), but with the power afforded to us by an asynchronous rendering process. Most of what I said previously about shadow layers still applies, just replace ‘process’ with ‘thread’. Most of the problems still apply too, but the graphics team has put in some phenomenal work in fixing a lot of it.

So we’re now working our figurative nuts off fixing all the bugs that have cropped up, but I do believe we’re on the road to success. This rendering model gives us the power to retain a lot more content than before, and any saved drawing tends to translate into massive benefits on mobile – we appear to be mostly memory-bandwidth limited, so every little helps. What this translates to for users is smooth, 60fps updates, excellent interactive performance, excellent web standards support and a polished, ‘native’ feeling application. You can sample some of this work by downloading a Nightly build, it’s *almost* at the point of being a daily driver (not quite, but almost).

Maybe you want to help? Running a nightly build and providing feedback (either via the built-in methods, or by filing bugs) is a great way to start, and all the mobile developers hang out on IRC too, in #mobile. We’ve also just opened a new office in London, and I do believe we’re hiring, so if you think you’d like to get in on some of this, do contact us!

Update: The built-in method for feedback is far less obvious than I thought… You can access it via the ‘About’ page, (accessible via the settings menu), then following the links ‘Support’, ‘Ask a Question’, and finally ‘Give us feedback’. I think we should make this better, so I’ve filed a bug.