Episode 2

Wednesday, March 3, 2010


  • DeclarativeUI (QML) is now known as Qt Quick
  • Qt Mobility API Goes Beta
  • Qt Webkit Goes Solo

Mark Hatch and Justin Noel

Mark: Welcome to ICSNetwork's This Week in Qt, the ten minute podcast that keeps you informed of significant events that may impact your engineering projects. My name is Mark Hatch and I run the Qt Services business at Integrated Computer Solutions. If you have not heard yet about ICS, please visit our website at www.ics.com. While you're there, please make sure you visit the Professional Services section of the site and review some of our past engagements. And if you're just learning Qt, make sure you explore the ICSNetwork and watch some of our free training videos on Qt. As an organization, I'm very proud of our accomplishments and believe we have the best independent team of Qt engineers in the world. Whether you're starting a new project or need help removing that insurmountable roadblock that every project has, please contact us at sales@ics.com. The content for these podcasts are based on a variety of sources. Most often they'll be based on technical discussions that occur on the Qt-interest email list or the Qt- IRC channel. In other cases, like today, some of them will be based on public announcements by Nokia or other members of the Qt ecosphere. Justin Noel, one of our senior Qt engineers at ICS is here with me today, again thank goodness, and will interpret the events of the week from an engineering perspective. Good morning Justin. Thank you for being here. 

Justin: Hi Mark, it's great to be here. It's been a really exciting week in Qt and there should be some interesting discussion topics. 

M: Well that's great. The first one you wanted to talk about was QML and I guess there are some things happening with that. 

J: So around this time last year, Nokia kicked off a project called the Declarative UI project, also known as QML. The idea was that they were going to make sort of a new type of programming style that would be the combination of CSS and JavaScript to make very interactive and very custom UIs for things like the embedded world. This week they announced that they were going to change the official name, the marketing term, for QML to be called Qt Quick. 

M: Well that's interesting. It's a little bit more of a marketing name than you usually see from this group. J: Yes, I think it's an interesting choice. I guess it's good in the fact that it really suggests that you can create very custom, very interactive, animated GUIs very quickly because it's called Quick. I really hope it doesn't get the reputation as many rapid application development tools got in that it's something that you can prototype in, and then later rewrite it in something else, such as straight C++. The target of QML is to really separate the user interface code into a state machine and completely separate it from the C++ code. 

M: So is it possible for somebody who would've used something like Flash to develop in Qt Quick? J: Well when you look at it, on its face, it looks very similar to Flash. In fact, Flash is really state over time. And Flash comes really much down to being a glorified sprite field and you basically get to move sprites over time. With Qt Quick, it's somewhat of a similar idea. Everything is a graphics item, even if you wanted buttons you pretty much only use pixmaps. And you have the concepts of state, not so much state over time but the fact that we're going from let's say from the state of using an application to the settings dialog, we might actually flip the widget around and see the settings on the back of the application. 

M: I heard that there are some enhancements that are going to be made to Qt Designer. J: Yes, it's actually enhancements being made to Qt Creator, the integrated development environment that Nokia is pursuing. In the git version, you can actually compile it with not only support for sort of a syntax highlighted-type of editor, but you can actually have a visual editor where you can define your items and your states and then define how those states change from one state to another. 

M: What level of development? What's your sense of how complete this Qt Creator piece is at this point? J: Well the magic key to getting designers and coders together has been extremely difficult for almost every company that has tried to do this before. I think that Trolltech is looking pretty good in this realm where the designer, somebody who might design webpages or design flash, a graphics user interface designer, could actually use the visual design component in Qt Creator and then allow a C++ developer to actually develop the heart of the application in C++. 

M: In the Creator, can you actually see some dynamicness of the interface from the way it's designed? J: Oh yes. So from the design side of Creator, you can actually do entirely graphically and there is a preview mode just like in Qt Designer, so when you hit go it will pop up your QML and if you have code in there to switch states – let's say when you click you want to move all the buttons from the left to the right, it will do that. 

M: So if someone wants to learn a little bit more about Qt Quick, where do they go? What's the best starting point? 

J: Well, there have been a couple of articles on it on labs.trolltech.com. There's a little bit of information on Nokia Qt Development Framework's website, but to get the real gist of it I would really suggest waiting for the Qt 4.7 technology preview which is due out any time now. The TrollTalk newsletter that came out last month pretty much said that the technology preview was coming out in March and that will actually have the code, the demos, the documentation, the whole shebang. 

M: So in ICS engineering, have we thought about where we might use something like this? J: Yes, in fact, it looks like Qt Quick is going to be pretty fantastic when it comes to mobile/embedded types of devices. Things like set top boxes, things like writing for the Nokia N900, writing for the S60 although there isn't an S60 version right now. I don't know if it will be in the technology preview or not. But things where all of your buttons are going to pixmaps, there's going to be very limited user input probably limited to just a few text fields. But something where you want a lot of animations, a lot of transitions, things where the settings dialog would spin around and fade in. 

M: So do we have to wait for another few weeks here before we get the 4.7 tech preview, right? J: Yes, I'm waiting for the drop. I'm pretty excited. 

M: Okay, great. So another news topic this week was about Qt Mobility APIs. J: Qt Mobility has gone beta. And this is great. It is not feature complete. It's almost feature complete on a couple of platforms – the biggest ones being of course, Symbian, Nokia's own operating system is very feature complete. And oddly enough, the other almost feature complete platform is Windows Mobile. 

M: Oh really? 

J: Yes. In fact, things that the Qt Mobility APIs come with are things like video widgets, messaging and contact lookup. And in fact for Windows Mobile, if you use the Qt messaging contacts API, you will actually access the Outlook contacts from the Windows Mobile device. So the Windows Mobile applications and your Qt applications will actually have the same set of contacts. 

M: Well that's pretty fascinating. And that was in the initial feature set here? Wow. J: Yes, there's actually a grid up online if you go to the Qt Mobility webpage, and you'll actually see a matrix of what platforms support what features. And even straight up Qt Embedded on Linux does support a decent amount of features. 

M: So what about this new video or API that's part of this? J: Yes, it looks like Phonon is going to eventually be deprecated. It hasn't officially been said yet, but there is a new Qt low-level multimedia API and built on top of that is a Qt Mobility multimedia API. And it's going to allow for better integration with off-load hardware. So if you has an ASIC, who's only job was to was to decode video and push it to the framebuffer, it's going to be easier to do that with the Qt Mobility multimedia APIs. 

M: Well that's interesting. So Phonon hasn't been around for that long, it's been about two or three releases here. J: Yes, unfortunately it looks like from the features set that features stopped being added to Phonon pretty much right away. There are some seemingly minor problems with Phonon but I think they ran into the Venn Diagram problem where if you try to make a truly cross platform video widget, you end up only being able to get the features that work on every single platform. Such as, one of the shortcomings of Phonon is not being able to get access to the raw frames coming through the processor, so that you might want to draw your own overlays on top of them – that's not supported on lot of platforms, and hence you can't use it. 

M: Yes I remember a couple of our customers when we were doing set top box-type stuff actually didn't use Phonon, they used their own proprietary video players that they got with the hardware manufacturer. 

J: Yes, well therein lies the problem. It's very easy to write a video widget for one platform. It's extremely difficult to write a video widget that runs on every platform. 

M: Actually, I think we're looking to start a project here pretty soon with the video widgets APIs, so you'll have something to report in a couple months here. 

J: Yes, in fact we're already using the Qt Mobility APIs on effectively Maemo and the N900 and a couple of other platforms. 

M: They look pretty good so far. So the final topic we have for the day is something about WebKit. So tell me about that. J: It looks like WebKit is going solo, as they say. Right now the development of Qt WebKit is happening very quickly. In fact, up on labs.trolltech.com they have a weekly blog called This Week in WebKit. And what's happened is that Qt is a very mature framework, especially Qt 4. They are on a one-year feature release cycle, so pretty much every January or so – well this year I think it was actually November – a new feature set comes out, a new feature release. And WebKit is moving so fast that by the time feature release time comes around there's a huge backlog of high-priority WebKit bugs. So what's going to happen is they're basically going to carve off the Qt WebKit module and they're going to call it Qt WebKit 2.0. And they are going to come out with feature releases fairly quickly, probably every 3-6 months, if I were to guess. 

M: So when do we get the first release of the solo version? J: Well they say it will be out in May, but what's going to happen is that the standard version of Qt will come with a version of Qt WebKit. It will actually be the version of Qt WebKit that is considered stable at the time of the release. So when you download, let's say Qt 4.7 in the November/December time range, you're going to get a version of Qt WebKit, but should you want the fixes that have happened in the meantime, you can always download the separate library, Qt 2.x whatever and get your fixes. 

M: Well that's too bad. We have a couple of engagements right now where we're basically taking the bug fixes and injecting them into the current WebKit release within Qt and that is a lot of work. J: Yes it was a lot of work and it was great money while it lasted. 

M: Too bad we couldn't get access sooner here than May. It's a little bit further off than I think everybody would like, but good idea.

J: Well we still have lots of work finding those bugs as well. 

M: That's true. Well thanks Justin. I think we got to all the topics we wanted to today. I hope everyone in the audience found this podcast useful. If you have any comments, please feel free to send them to Justin or myself atpodcast@ics.com. Thank you and until next week. 

J: See everybody next week! Same time, same channel.