Today I managed to get a Bq Aquaris E4.5 Ubuntu Edition during the second flash sale of these phones. As someone who is really into the Ubuntu operating system, I waited for a long time to finally have an Ubuntu Phone. About a year ago I bought a Nexus 4, which was the reference development phone for Canonical, so I could flash it and run Ubuntu Phone. I used it for a few days and though it was an early work in progress version (which updated at least once daily), I was quite impressed. Swiping from the edges gets very intuitive after some short time and the design looks very promising.
If you merely look at the specs, there is nothing to be proud of. The hardware is mediocre, a bit more powerful than Galaxy S4 Mini, not a big deal.
Developing mobile apps can be frustrating
For me, as someone who is also developing mobile apps, I was very curious how developer-friendly the Ubuntu ecosystem is on mobile. If you say you are just a user and don’t care about that, keep in mind: Developer-friendly means developers struggle less with the tools they need to use and can concentrate better on getting real work done, leading to a better user experience, better stability and a greater variety of apps. I am sure that if you are a mobile app developer, you will be reminded now of how you struggle to get that stupid provisioning profiles set up, get lost in the objective-C hell of square brackets because Apple’s newest language called “Swift” is a giant green banana. XCode, the development tool for iOS apps, crashes randomly and stackoverflow is your friend when it comes to solving problems caused by inexplicable behaviour or frequent changes in predefined behaviour by Apple. When developing for Android, you’re left with a dead-slow simulator (so people usually use Android for x86 running in a VM or keep running their app on a real device) and clumsy Eclipse. Yes, there are alternatives to Eclipse, but each has its own quirks and cannot be regarded as a replacement, so you’re basically stuck. Android devices run Java, which theoretically isn’t slow. Practically, you need a quad-core processor to experience judder-free animations – quite ridiculous. Then there comes Firefox OS, the extreme version of every app is a website. Windows Phone? Noone wants Windows Phone. But I have to say: Working with Visual Studio and actually creating a Windows Phone app is smooth (although the tools seem to be very limited, but they’re stable), the process of submitting an app into the appstore is awful.
The two kinds of mobile apps
So, in conclusion, developing mobile apps can be challenging. Practically, there are just two main routes for the development of a mobile app:
You create a webapp, ie. a website that will be loaded in a container app, so the “app” is just a webbrowser window without the bar and tabs. Since most websites offer a mobile version anyways, this often allows to reduce the development costs. The disadvantage of this technique: You actually have to be online at the time you’re running the app or least trick around that limitation by storing offline sites. And the app still is a website, which has its own set of problems, like non-native controls, zooming behaviour, visual glitches, position problems and – especially on older devices – bad performance. If you write multiple containers, you can run your app on multiple devices saving the time to rewrite the whole app in a different programming language. So this is a trade-off between development speed/cost and app quality, but it’s better to have that kind of an app than any app at all.
You create a native app, ie. you are rewriting the app for each device. This requires you to literally rewrite the whole app, but you get native controls and better performance. On the other hand, you have to cope with the specialities of each development platform. Also, for an obvious reason, the development of native apps takes more time and thus will be more expensive.
Why Canonical did everything right
As a developer, I can only cheer Canonical for making the life of us developers a lot easier. They have recognized correctly how apps are being developed and are offering two ways to write your app:
Getting started quickly: Regarding the use case in which you quickly want to get your mobile website embedded in an app, they created a special template. Basically, it is a single file that you feed with some information about your app and it will appify your mobile website instantly.
The bleeding edge: You can write native apps with QML, which is basically a native app that can be developed as easy as a website (in the source code), but will compile to a native app. You can mix in C/C++ freely. With QtCreator, developers are supplied a well-known, excellent development tool. QML-apps can also run on Android, iOS and Windows Phone with no or few modifications to the source code.
Apps are distributed as packages through the software center of Ubuntu.
So, from a technical viewpoint, this sounds like something developers are waiting for a long time. It is undertstandable that Canonical tries to enter the smartphone market with a mid-priced budget phone, which probably is the best strategy from a marketing perspective.
Ubuntu Phone – cheapo or not?
While the Ubuntu Phone may appear like a cheap alternative to Android or iOS, it is an interesting piece of technology. Canonical is not generating a hype around void promises, rather they sneak in fully armed like a ninja. Their decisions on technologies are not based on suspect measures like the number of potential developers or the goal to create an isolated ecosystem, but rather on sane, rational arguments. That makes us developers happy and happy developers will write great apps.