Episode 14

Thursday, August 19, 2010


  • QML 3D
  • QML/Qt Components
  • Nokia N8 Pre-Orders
  • Nokia N9 Leaked
  • New Meego Webinar on ICSNetwork
  • MeeGo v1.0 for In-Vehicle Infotainment (IVI)
Mark Hatch and Justin Noel

Intro: 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. If you have not yet heard about ICS, please visit our website at www.ics.com. As an organization, we 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.

Mark: Good morning. This is Mark Hatch. I run the Qt business here at ICS and with me as always is Justin Noel our lead engineer to help us understand what happened this week in the Qt. So Justin, what are we going to talk about today?

Justin: There have been a fair amount of things that have happened in Qt this week. It's going to be mostly Qt Quick-heavy, a little about some new phones coming out from Nokia, and a whole bunch of MeeGo happenings. There are some things that are happening on the other side of Nokia in regards to new phones, a vehicle infotainment framework, and a new webinar from the ICSNetwork.

M: Oh that's great. Let's start with Qt Quick.

J: So two things that are coming to fruition. There was a release of a research project called QML 3-D. This is Qt Quick, which is going to allow you to use 3-D sprites. And you might say how is that particularly useful? Well the idea is that instead of having a flat surface for you to place your GraphicsView or QML items, you can position them in 3-D space. There's this new component called a camera which will allow you to move the view that you're actually looking at around. That has properties and those properties work with animations so you could actually move the camera eye around your scene in real time and make that look very natural. It's also going to be very useful for those who want to write sprite-based games, which are mostly 2-D. Basically most games like space invaders is a bunch of 2-D sprites and you move them around. Now, if you take a 3-D aspect in it, even if you're not using true 3-D, you can get really cool effects by say having the space invaders spin around and explode in say, 3 dimensions. It's going to make writing games a lot easier.

M: Okay, I see. So this is Nokia saying, we need to have games in our phones to keep the three year olds entertained while my parents do something else at a party or something.

J: Yeah, you take a look at some of the applications that are on the Apple iPhone apps store, and you'll see a lot of them are very basic games that are mostly sprite fields but they each have their own cool effects. Now whether you do your effects in actual 3-D using 3-D models, or you have an array of pixmaps that makes it looks like your object is spinning around, it's an effect that a lot of people want. This is solely in the research project stage. You can actually download the code out of git, but it's not something that's going to be rolled into 4.7, maybe not even in 4.8 - it's in research project mode right now.

M: I saw the demo - it's pretty cool. It's pretty fast, which surprised me.

J: Yes, and it's extremely easy to write. You take a look at the code and there's not a lot there for the penguin/monkey-head example, but what you'll notice is that most of the heavy lifting is done by the artist because you're loading model files. Right now it supports the 3DS file format and Nokia has alluded to more file formats to come, but your 3-D artists basically make a model of an object essentially for you and then you can use that as a sprite in QML. So that space invader that spins around in 3 dimensions would be designed by an artist and then used by a Qt Quick programmer.

M: So this is still in tech preview?

J: It's even before tech preview. This is in the research stage. You can take a look at the code, you can read it. You could probably almost use it if you wanted to, but it's probably something that's going to change dramatically between now and whenever it gets rolled into mainline Qt Quick.

M: But it must be similar to tech preview or a similar license, either gpl or you can't use it for commercial use or something.

J: Exactly. And also in the Qt Quick world and this is actually related to regular Qt to some extent, the Qt Components project is actually making some pretty huge steps. You may remember from previous conversations about Qt Quick, otherwise known as QML, that there are no actual widgets. You're basically using primitives - pixmap sprites, rectangles, mouse areas - not a whole lot going on there. If you wanted your own button, you would have to make a rectangle or a pixmap and then assign it a mouse area and basically roll your own. The Qt Components project is designed to make a set of widgets entirely written in QML. So it's taking these items and basically building up the buttons for you. The logic of these buttons is written in JavaScript, so when you click a button, it will launch some JavaScript which you could then hook back into C++ code. And the idea is that it is going to eventually emulate quote, unquote a native toolkit. Like right now they have a widget gallery that emulates most of the Harmhattan widgets, which is what became MeeGo Touch Library. They also have a set of widgets that emulate the MX toolkit. So what you're going to find is that QML is starting to create objects that you can use and reuse that will allow you to write QML that looks like it belongs on a MeeGo device. And you can't really tell the difference from a MeeGo Touch Library slider versus the Qt Quick version that you might use.

M: Well what about the performance? Any prediction on what the implications are going to be?

J: Well they should be pretty performance parody, I would say, because they are both graphics items. MeeGo Touch Library is written using GraphicsView. QML is used for GraphicsView. Load up time, since a lot of the actual things like the GraphicsView items are written in C++, you've got a parsed QML at startup, but once they are created, you are basically running in C++. You'll probably see a little bit of a performance hit in the JavaScript interpreter side, but when the user is clicking around a few extra milliseconds may not make a difference.

M: So the CPU budget of the UI piece may be a little bit higher than it would be, but you probably won't see it.

J: But you end up with something that's a lot more flexible. Let's say (we're going to talk about this later) that the in-vehicle infotainment system for MeeGo - instead of writing the user interface in C++ and then having to change that every manufacturer wants something that's completely branded their own, they could take QML and basically just replace that with their own look and feel. They wouldn't even have to recompile the application.

M: Okay, that's pretty cool. Hey I just heard that there's a Nokia N8 that was found in a bar in Palo Alto or something.

J: Close but not really. It was actually an N9 that was photographed in a factory in China, which is really cool. It's going to be the first MeeGo device and should ship sometime before the end of the year. If you take a look at it on Engadget there are photographs - most the gadget websites do. Engadget has also taken a picture of it next to a MacBook Pro and the similarities are remarkable. They look very similar. And it's a really nice design. It's basically a slider that angles up much like the N97. It looks a lot thinner than the N900 and it looks like a pretty cool looking phone. They didn't show any of the software running on it, but the hardware looks really well put together.

M: That's pretty interesting. So again, we don't know when that's coming out?

J: No, there's been no release date. Although something that was announced this week was that the N8 is available for pre-order - meaning that Nokia will actually take your money for an N8 with an expected delivery date of the end of September.

M: So let's figure this one out. How long do we expect the delivery dates to be for the N900's?

J: N900's slipped about 2-3 months; although they didn't actually announce a delivery date until about a month in advance for that.

M: Okay.

J: The N97 was a little bit late. I would expect this to be out by the end of the year.

M: Certainly before the Christmas rush season.

J: Yes, I actually saw one of these N8's in action and it was pretty solid when I saw it a few months ago. So I have faith that they'll probably make their expected delivery date.

M: And we've seen N8's because we've done development on them, so we joke a little bit, but to be true they are coming out pretty solid.

J: Yes. And the price point right now is $549 usd unlocked, which is about $100 cheaper than the pre-orders for the N97. It looks like it will be a pretty solid phone. It's also going to be the last N series that runs Symbian. It's going to run Symbian 3 and the N Series from the N9 on is going to be all MeeGo, and Symbian is going to be lower in the stack - mostly on the regular consumer phones.

M: What about the feature phones?

J: The feature phones are really catching up to the smart phones in technology. Especially where everybody really wants apps which is something that was relegated to smart phones for a really long time.

M: Okay so speaking of MeeGo and N9's, what's going on there?

J: MeeGo has had some very interesting happenings. The first one, and I was cruising the MeeGo site and just happened to sort of stumble across it - there wasn't any announcement to the mailing list as there usually is, but they have opened up Day 1 of their project first code drop for MeeGo version 1.0 for in-vehicle infotainment (IVI). And basically it's designed around two Intel development boards and is meant to be hooked into the dashboard of a car. It was designed to give you maps, Bluetooth integration, vehicle system information and right now it has a lot of GUI elements from the old Moblin, so there's sort of a mix of acute gtk and some other random toolkits, but they're working right now to rewrite the entire user interface using MeeGo Touch Library.

M: Well that's pretty cool. There were two cars used to beta test. You and one and I have one, right?

J: Yeah, in fact it's interesting because the supported hardware lists an Intel Russellville System and an Intel Crown Bay Tunnel Creek System. Of course the first thing I did was Google for those two systems, but it looks like you have to be some sort of major player to get access to those. They barely show up on Google.

M: So this won't fit your Camaro and my Dotson will it?

J: Well we'll see when it comes out.

M: So we have one more thing about MeeGo, right?

J: Yes, there was actually a new webinar up on the ICSNetwork which is basically an introduction to MeeGo for Qt developers. So if you've been a Qt developer for some time and you want to find out what MeeGo is all about, you can find out what they have for their APIs, what the MeeGo Touch Library looks like, and how their development environment works.

M: That was Jeff Tranter who created that webinar. And there's another one coming which focuses specifically on the MTF, MeeGo Touch Framework here which I guess is going to be out in about a month or so in the Fall.

J: Yes, it's really exciting. It has a really nice implementation of a Qt widget set that is usable by touching with human hands.

M: It's multi-touch too. That's pretty cool. Well great. It's been a very busy week, hasn't it?

J: It has. It seems like every podcast we do it chock full of new stuff.

M: It's just amazing as I think we've said before that when it was just Trolltech things would kind of go on and if we did this once a quarter, we could probably keep everything up to date, but Nokia has really put the gas on Qt and the whole framework and Intel's help on MeeGo.

J: And DevDays is less than two months away and I'm sure there will be lots of announcements between now and then.

M: This is the traditional time isn't it? Well thank you very much everybody for listening and thank you Justin for helping us out today as always.

J: See you all next week: same time, same channel.