Last week I delivered a keynote at the Qt Developer Days 2011 event in San Francisco. I have not seen a video of the keynote online yet, but I am assured it should be online soon. Rick Spencer gave a keynote at the Munich event shortly before UDS in October.
Over the last year or so the relationship between Ubuntu and Qt has growing closer. As many of you will recall, we announced that for Ubuntu 11.10 we were going to make Qt a first-class citizen in Ubuntu. This would mean that you could install Qt applications on a standard Ubuntu system, and those applications would integrate neatly into Ubuntu. There was also a goal to ensure the Qt development tools (e.g. Qt Creator) are fully supported and ready to to roll in Ubuntu 11.10. Those goals were successfully accomplished.
Qt Creator is an IDE for building Qt and QML apps.
My presentation last week summarized the progress being made in Ubuntu make it a strong platform for app developers (e.g. refinements to the Ubuntu Software Center, developer.ubuntu.com, the MyApps process etc), and summarizing much of the work to integrate Qt neatly into the platform. The presentation seemed to be well received with a lot of excitement about Ubuntu afterwards.
Aside from delivering the keynote, I was also interested in using the event to learn more about Qt and specifically QML. We are in a really interesting position with Ubuntu in that we want to deliver a strong application development platform, and a platform driven by choice, but also a platform that allows both professional and hobbyist developers to deliver their apps.
If you want to deliver native apps in Ubuntu today, most people will either write their apps using GTK or Qt. For GTK, those apps can be written in C, Python, C# and various other languages. For Qt you can write apps in either C++ or Python (although the complete Python bindings are not 100% free). These two options provide a good set of development options for our developers.
In terms of facilities I think it is fair to say that Qt provides a more comprehensive solution. GTK, while popular (I myself, horrendous programmer that I am, have written some GTK apps in Python), brings together the core pieces you need for an app, but lacks some of the more advanced functionality that is in Qt. The traditional challenge with Qt though was that you needed to know C++ to use it, and even though Qt provides many convenience classes, C++ can be a bit much for amateur and hobbyist programmers. I think it is important that we provide a great solution for both professional and hobbyist programmers, and everyone in-between.
What has been exciting to me however is QML; a new technology that is part of Qt that provides a higher-level means of producing user interfaces. QML was not new to many Ubuntu people; Ryan Paul did an excellent presentation a year ago at UDS in Orlando, we had a great presentation on QML at UDS in Budapest, and Qt Creator and it’s QML and it’s QML designer have been available in Ubuntu for quite some time.
The integrated designer in Qt Creator.
What I was unclear on, and it seems I was not alone, is where the lines between QML and traditional Qt start and end. I knew that the philosophy in the Qt project is that you would write big and serious apps in Qt and smaller and more casual apps in QML. While these lines seemed fairly blurry, what blurred it more was that there is a strong focus on making QML more and more flexible for the up-coming Qt 5 (expected in 2012).
I went to the Qt Developer Days conference with a simple question: could someone write Angry Birds in QML. In other words, can you write a fun, vibrant, visually attractive game in the high-level, managed environment that is QML. If so, this could dramatically lower the bar for developers to write fun and interesting apps and deliver them not just on Ubuntu, but on other platforms too.
I am still very much learning about what QML can and can’t do, but from what I saw at the event and some recent research online, QML very much does provide a great solution for writing attractive, capable interfaces, games, and other applications. As an example, I was chatting to Lars Knoll, Qt Chief Architect, and he showed me an example of a game written entirely in QML, Incredible Circus, and running on his Nokia N9 phone:
He also pointed out many of the other applications on the N9 that are written entirely in QML. It turns out there there are many, many, many, many, many, many games on YouTube, even a Angry Birds clone, all written in QML.
Ryan Paul also wrote an Ars RSS reader in QML:
Can’t see the video? Watch it here.
…and I event found Flickr Browser written in pure QML.
Can’t see the video? Watch it here.
My previous assumption about QML was that it was only really useful for creating UIs; it seems that it is also flexible for much of the logic you would need in games and other applications too.
While I have not played with QML all that much, I am excited by it’s potential, and the roadmap outlined by Lars at the Qt Dev Days offers a bright future. This is not only a bright future for Qt, but also a bright future for developers who want to deliver apps on Ubuntu thanks to the integration work done in 11.10.
Install Qt Creator in Ubuntu and get started.