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).



Published

January 11th, 2013
Reads: 1,786

Syndicated by DZone.com
Reads:
4604 (link)

Tags

Categories

Comments formerly in Disqus, but exported and mounted statically ...


Mon, 14 Jan 2013David Planella

Hi Paul,

Great blog post.

I just wanted to comment on the last point: the branch is indeed clonable, it is not a single file on the web. The code is hosted in Launchpad and you can do a checkout with bzr.

Just click on the "Back to branch summary" at the top of the page, which will bring you to another page with instructions on how to do a local checkout.

In short, you'll just need to install bzr (in case you didn't have it installed) and issue the following command:

bzr branch
lp:~appdev-cookbook-tmp/+junk/ubuntu-app-dev-cookbook

Stay tuned to updates in the tutorial, thoughj, as I'm going to move that branch to a more generic location soon.

Kee up the good work!

Wed, 16 Jan 2013RajaRaviVarma

For that matter it is Qt and not QT. BTW QML is already promising mobile space. Look at this blog to see who has chosen Qt & QML for its primary or secondary app development framework http://www.thelins.se/johan....

Thu, 28 Feb 2013iamvoid

Why did Linux Mobile chose QML as prefered programming language instead of Qt which is much better programming framework and would run in native and not interpreted.