Paul Hammant's Blog: QML and the new Ubuntu phone OS
Synopsis: QML looks like a nicer way to make installable smartphone apps that the Apple anointed XCode way for iOS, or the classic Java toolchain for Android.
Why do I like it?
- Declarative UI code, reminiscent of a nested markup language
- Interleaved references to JavaScript functions
Together these two make me feel like I’m using a pseudo-declarative UI DSL (domain specific language) which I like. Put another way, I am drawn to nice human-centric source formats (like C, Java, Ruby, Python), and away from nasty machine-centric source formats (XML & HTML). The dominant UI technology, HTML, is fully declarative and lacks turing-completeness. I has an escape syntax to a pseudo-functional language - JavaScript - which I find distasteful.
Three and a bit years ago, I blogged before on QML. “Kinetic” and/or “Qt Quick” were former branding attempts for the technology.
Ubuntu mobile platform
Ubuntu’s new phone OS was announced a few days ago. Of course they have an uphill struggle, and I’m cautious after WebOS which also showed great promise.
I’m interested in this one, and will dive into the developer platform to play with it, because of QML. QML seems to be their recommended way to build fatter apps on this platform. I’ve been tracking it for three years (as mentioned). Previously I felt that Nokia/Trolltech were unable to have a clear message around what it was, or a single landing page that would be sticky in respect of the platform’s development and use. That’s still the case, but Ubuntu have their own landing page : http://developer.ubuntu.com/get-started/gomobile. That’s still a long URL, but the page contents definitely pass the five-second test.
Problems
Linux only
This stuff Linux only for now. I’ll have to create space on my measly 256Gb SSD ThoughtWorks supplied Mac for a VMWare image of Ubuntu, and then install Qt5 and ‘Qt Creator’ (via apt-get). For installing Qt5, Ubuntu have made an apt-get repository. That’s worth mentioning, as Nokia’s top hit for “installing Qt5” is a wiki page Building Qt 5 from Git that is 2200 words long. The base technologies are actually cross-platform, but Canonical (who control Ubuntu’s fate), and not likely to be invested in a cross-platform development capability, which is a shame.
We have RubyMotion for iOS which is heading in the same direction (Jean Lazarou - please write that blog entry!). If we consider multiple platforms (iOS, Android and whatever could emerge into a viable third-platform space), and the wishes of a developer to share code between them, then we’re still waiting for a pervasive solution. ThoughtWorks colleague Giles Alexander has Calatrava which is a fairly compelling cross platform solution, and chief-scientist Martin Fowler counsels against the folly of a one-size-fits-all native solution in an infodeck, but teams are going to keep pushing for such a panacea.
The “Quickly” tool-chain
As mentioned, “Qt Quick” was one of the former branding attempts from Nokia for this technology. Ubuntu have a “Quickly” toolchain, and a tab explaining it, which is located adjacent to the tab that explains Qt and their platform. Of course I’m going to get confused after clicking it:
It is a total red-herring. Worse because it cites Bazaar as an SCM choice, and GTK+ as the UI technology. The latter isn’t part of the Qt / QML stuff at all, it’s an alternative. The former is not where the intelligentsia want to be. That would be Git/GitHub. It would be better to not recommend an SCM choice than to mention Bazaar IMO.
Branding.
I’ver alluded to this in this article, but QML / Qt-Quick branding is still unclear. Ubuntu will have to bash Nokia into submission to get somewhere on this, or it will all be for nothing.
Getting started.
Here’s a reference application “Currency Converter Phone App” : http://developer.ubuntu.com/resources/app-developer-cookbook/mobile/currency-converter-phone-app.
The tutorial is fairly detailed over four “pages”. There’s nothing to GitHub-clone though. Instead you get a link to a single source file served up a web-ui - https://bazaar.launchpad.net/~appdev-cookbook-tmp/+junk/ubuntu-app-dev-cookbook/view/7/CurrencyConverter.qml
That’s a hard-coded path to revision 7. If you navigate around a little, you’ll find revision 9 (HEAD) instead: https://bazaar.launchpad.net/~appdev-cookbook-tmp/+junk/ubuntu-app-dev-cookbook/files/head:/mobile/CurrencyConverter
Did I make the GitHub point already ?
I hope these guys can really make this successful (and cross platform).