I’ve got my hands on
Alcatel One Touch Fire couple days ago so I decided
to write couple of words about its drawbacks. Don’t get me wrong, even
though I will only complain in this post, I’m quite impressed by this
device as a whole. You can buy it for 404 PLN (it seems that T-mobile
salesmen have a sense of humor) which is about 130 USD, without any
simlock protection or a contract - that’s quite low price for Polish
standards. It’s a very early version of the software (1.0.1) but it
seems to be stable and usable - you can make phone calls, receive/send
text messages, use Internet browser, listen to the music, or even watch
Youtube. And don’t laugh, that’s not so obvious for me - couple years
ago I bought
OpenMoko FreeRunner for much, much bigger price and it
never got that far (It was a great project, with very different goals,
though). System generally runs quite smooth, you have GPS, accelerometer,
camera, touchscreen and quite a lot of storage space - not bad for that
price. There are, however, some imperfections and It’s not that easy to
find informations about them on the Internet so let’s get started.
User point of view
Only one button
Reference design of Firefox OS phone has only one button - home button.
It supports two operations - going to home screen when clicked and
showing task switcher when hold. And that’s about it. Rest of the
functionality has to be provided by an application itself. The button I
miss the most id
back button. Every application is supposed to provide
it’s own back button functionality and of course it’s not always the
case. What’s worse is that there’s no way to get back between
applications, for example after you call some
There is one small workaround for that provided by Mozilla in
1.1 - it’s called chrome. You can enable it adding one line in
manifest file and you get some navigation buttons for free. This does
not solve the problem, though.
I’m not sure how this could be fixed in the future. I doubt some buttons will be added and it wouldn’t be a good idea to add additional functionality to the existing one. Maybe some screen gesture could be used to provide back button functionality?
Each input field in
Firefox OS, then clicked, automatically starts
editing mode. Software keyboard shows up and you can type some text.
There are three problems in current implementation, however. First is
somewhat related to the previous point - there’s no button you could
press to hide the keyboard and the keyboard itself does not have any way
to hide itself. This can be annoying at times since the keyboard takes
most of the screen space. Second problem is total lack of even basic
editing tools. You can’t select text and can’t copy/paste. The last
problem is common in most of today’s smartphones - there are no arrow
keys and no
delete button on the keyboard. It makes it hard to remove
some characters from the end of the line you are editing, especially
when it’s longer than your screen can show at once (for example when
editing URL field in browser). Fortunately all this can be fixed in the
software in future versions of the system. Let’s hope it will.
There’s nothing surprising here - it’s just not mature enough, yet. There is very small amount of applications, and the rating system is not working correctly since there is just not enough voters. The market application is also currently quite limited compared to Android one - you can’t review installed apps from it or configure anything (like updating policy), for example. But I like the fact you don’t have to register any account in order to use it.
Limited default applications
Default applications you get with the system seems to be working correctly and they have most of the features you would expect from the phone - you can make/receive calls, send/receive SMS/MMS messages, there’s Alarm and Calendar application, you have maps, browser and e-mail client. Problem is, they are currently quite limited. I haven’t spend too much time playing with those apps so I’m sure there are much more problems than I found but still, here are some examples.
E-mail application has almost none configuration options. For example I wasn’t able to connect to my private e-mail server because it uses self signed certificate and you have no way to configure application to accept such a certificate. Even if you connect to the server, there are virtually no configuration options there - you can’t configure how your mail will be cached on device, there’s no support for signatures, synchronizing only selected folders etc.
SMS application won’t let you send a message to more than one contact at
a time. So if you changed your phone number and want to tell that to
your friends, you have to spend a whole day sending messages. And
remember there is no way to copy&paste the text. This limitation was
actually good to me since it forced me to write an application for
sending batch SMS messages. You can find it in my github repo, it’s
Browser is very limited, too. Like in E-mail applications, there’s almost no configuration, you can’t force the browser to show non-mobile version of the site, for example. The only option you have is to clear browsing history and cookies. No extensions, private browsing, proxy settings, passwords or cache management. And there’s currently no way to install any other browser since you can’t run native applications.
All the applications are “just webpages” which means that everything you can do with your webpage look, you can do with your application. Mozilla clearly states they don’t want to do application framework, instead they want to bring the Web to mobile devices.
In Android you have a UI library that let you create even complicated UI
quite easily. All the applications using this library look similar and
this makes consistent user experience. The library is flexible enough to
change everything to look and feel differently so if you are willing to
invest enough effort, you can do this. In
Firefox OS it’s actually the
other way around. The easiest way is to do whole UI your own way, the
same you would do on the web site. However Mozilla did create Building
Blocks and Design Assets Library so that, if you invest enough
effort, you can make your application look consistent with system applications.
Developer’s point of view
Currently there are couple problems with the APIs available for the applications. First, most of them are either under development (and are quite limited), in standardization process (and so are subject to change) or to general because they are not limited to mobile devices. Plus the documentation is not the most organized I’ve seen.
One example is Geolocation API. Currently it’s the only was to talk
GPS on the device. The API is quite old, it’s standardised
and works in the browsers for years now. There’s only one problem - it’s
to limited for me. It’s designed to be general so that the application
that is using it does not know anything about what is the source of
location informations. This means there is no
information - you can’t get
GPS signal strength, number of satellites,
GPS time, etc.
Sending SMS/MMS messages is another example. There is
WebSMS API but it
is not standardized and currently under development. For example
MozSmsManager is already deprecated in favour of
MozMobileMessageManager but the later is not yet available in the
Firefox OS devices.
My last example is
Background Services API which does not even exists
yet, it’s planned and there is some initial proposal for it. It’s not
clear to me if anybody is working on it right now. And for me it seems
like very important thing for smartphones.
One source of the problem is Mozillas’ openness. They don’t want to
create closed API just for
Firefox OS. Instead they are trying to
create set of
WebAPIs that will be implemented by all the browser
vendors. This is all great but such standardization requires a lot of
time an effort compared to creating a new API just for one operating
system like Google did with Android. Hopefully, it’s a matter of time
for things to get better.
Packaged apps without marketplace
There is no equivalent for
.apk on Android or
.jad on Nokia phones.
You can’t download a file from the Internet and install it. You can
install so called
hosted apps but they don’t have permission to access
some APIs so not all apps can be distributed this way. So called
packaged apps exists but AFAIK they can only be installed using
Marketplace or using USB cable in development mode (using
Firefox OS Simulator)
While it’s usually not that much of a problem (it’s not that common to install applications bypassing Marketplace), in some situations I find it useful to be able to install package directly. One example can be beta/nightly versions of some applications.
I believe that almost all Android developers out there (minus some freaks like me that prefer writing applications in Vim and compile it inside Android platform sources… but that’s deferent story) uses the same development environment - Eclipse with ADT. All the Android development tutorials starts from teaching you how to use it. And to be honest - it’s not that bad.
While I’m not a fun of such solution, it has it’s advantages. With
Firefox OS you don’t have this. You are building website so you can
use your website development tools. That’s great for veteran developers
but not so good for noobs, I think.
Also, IDE is not the only problem. With Android you get consistent way
for translating your application, ship libraries etc. There seems not to
be such thing for
Firefox OS currently.
Hosted vs packaged apps
So there are two basic types of apps - hosted and packaged. First one is
basically a web page on a server (although it can use technologies like
Application Cache to be usable off-line too) and second one is
independent application - basically whole site packed to a
Depending on which type of app you are developing, you will have access
to different set of APIs. Normal website has the least permissions, when
it’s installed (as
hosted app), it will have some more. In order to get
even more permissions, you have to package your app. There are 3 types
of packaged apps - normal, with smallest set of permissions,
priviledged that has access to more APIs than
hosted one and
certified which has access to all the APIs.
Hosted apps can be installed easily but as I mentioned earlier, in
packaged apps can only be installed from
Marketspace. This means that in some situations you may be developing
hosted app and then realize that you need access to some API that is
only available to, for example,
priviledged apps. In such case, your
new version can’t be installed like the older one - from your site,
users have to install it from Marketplace.
Debugging on the device
I’m not really a fun of debuggers, I don’t use them too often. However
debug your application is through
logcat. It can show you all the
(it’s not that readable, though). Here’s the command I use:
./adb logcat GeckoConsole:* *:s
No crash logs
You wont get ‘Unfortunately xxx has stopped’ or similar message on
FirefoxOS. Instead your application will just work strangely. This
also means that it is not currently possible to somehow automatically
report a bug with stack trace to developers.
No shared libraries support
This is very similar to the situation on Android but actually worse
Android comes with quite a lot of libraries
pre installed. I just don’t like the situation where each application in
the system will have its own version of
Firefox OS it’s not only about coding libraries, the same stands for
example for already mentioned
Buiding Blocks or parts of
Buidling Blocks are actually extracted from Gaia which
is part of
Firefox OS, so you already have all those files in your
system so why not reusing them? I know that
Buidling Blocks are
currently called unstable so maybe when they mature, they will be
somehow available for all the applications.
OK, that was a lot of complaining. Especially for the system I actually
like. What’s most valuable for me in
Firefox OS is that it instantly
made me writing apps for it. And that’s just cool.