- Qt SDK 1.1 Released
- MeeGo Tablet Developer Preview
- Qt Quick 2.0
- Qt 5.0
- MeeGo Conference San Francisco - May 23-25
- Near Field Communications - MIT Enterprise Forum - May 23
Qt SDK 1.1 Released:
MeeGo Tablet Developer Preview:
Qt Quick 2.0:
MeeGo Conference May 23-25, San Francisco:
Near Field Communications - MIT Enterprise Forum - May 23:
Mark Hatch and Justin Noel
Intro: Welcome to Integrated Computer Solution’s, This Week in Qt, the 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 and MeeGo engineers in the world. Whether you're starting a new project or need help solving a Qt or MeeGo development challenge, please contact us at firstname.lastname@example.org.
Mark: Good morning, this is Mark Hatch and I run the Qt business here at ICS, and this is This Week in Qt. With me as always is Justin Noel, one of our lead engineers, and he’s going to walk us through what’s happening. So, Justin, what’s going on today?
Justin: So, Mark, a lot of stuff has been happening in the last couple of weeks with regard to Qt. There has been a slew of new releases, and some clue as to some of the major features that are coming on the horizon. This is post 4.8 type of stuff. And there is a lot of conferences.
M: Ok, good, let’s start with the new releases. What’s going on there?
J: Well, released today, in fact I haven’t even had a chance to install it, is the new Qt SDK 1.1. It is finally gone gold, and the feature list is as expected. It’s mobility 1.1.3, Qt 4.7.3, and apparently in this specific version, it has some more OVI store integration, and this is the SDK that you’ll use to publish things to the OVI store.
M: Ok, that’s interesting. What’s new in 1.1.3? Is it mostly bug fixes?
J: Yes, 1.1.3 is bug fixes to 1.1. There is a technology preview beta-type of package for Mobility 1.2, and that’s the type of thing that has near field capabilities and things like that in it.
M: So I think everybody has been looking forward to the 4.7.3. I think there were some bugs in 4.7.2 that people were looking forward to seeing fixed, right?
J: Yes. Actually, mostly in Symbian, there were issues in 4.7.2. Those have been cleared up with 4.7.3. This is the SDK that people have been waiting for so that they could build applications for the OVI store and get them submitted quickly, and make sure they are stable and are going to work.
M: Ok, that’s interesting.
So, what’s next after that?
J: Well, this was released a few weeks ago. In fact I went to the MeeGo summit in Finland, and I actually got one of these devices. The MeeGo tablet images and SDK is now available as MeeGo 1.2 preview edition. They are calling it “developer preview edition.” What it is, is an image for an actual tablet, you can either install it on something like the Lenovo S103T, which is a convertible tablet, or something more like a standard tablet like the ExoPC. There is also a QEMU emulator, that will emulate one of these devices for you if you don’t have one, and it is an SDK that is a lot like the Qt SDK, it comes with Creator, it comes with Qt Simulator, it comes with all the libraries and components, but instead of being geared toward Symbian and Maemo, it is geared towards MeeGo. And I was luck enough to receive one of these ExoPC from Intel. They gave them out at the Finland conference. And it is actually a really nice system, you can see how, given time it will all come together real nice. The SDK is a set of packages for different distributions. The supported distributions are Fedora and Ubuntu, so you are going to have the most amount of luck installing it on one of those platforms. I had some trouble on my SUSE, but that’s partially because with those repositories, it’s up to the community to support them. One thing to note is that the MeeGo tablet edition comes with it’s own MeeGo components for QML, and those MeeGo components are not exactly related to the official Qt components, but they are developed in roughly the same design, so they should be roughly design compatible with the Qt components.
M: So you can see those if you wanted to, by going to the Git repository and taking a look at them.
J: Exactly, and they come with this developer preview, and you can install them on the tablet and write your own applications with these MeeGo components, and they will help you make your application in QML look and feel like the rest of the applications on the device.
M: Ok, that’s interesting, but what does the UI look like? What does the user experience look like at this point?
J: The home screen is really nice. It’s based on these scrollable, vertical columns, and you can slide them back and forth, and it gives you a very information rich home screen experience. So you will see your last listened to music, your last viewed website, appointments that you might have coming up, you get to see a collection of what your friends are doing from Twitter and Facebook, you get email updates the same way, and a quick application launcher for settings and applications. You actually have to go to a separate screen to get the full view of applications.
M: So we’ve finally broken with this what, I don’t know, 20 year old Mac-type vision of a user interface, right?
J: Yeah, so this is actually trying to take apps, and separate them into applets, and a lot of them have their back-ends running to collect information, and then provide you with an information rich type of home screen experience, which I find to be really nice.
M: That’s interesting.
So what else is new?
J: So, there are things that are coming on, way on the horizon, that we are hearing rumblings about on the Qt mailing list and on different blogs. The first of which will be very important to people who are doing C++ plugins to Qt Quick right now, and it’s that Qt Quick 2.0 is on the horizon. From what I hear on mailing list traffic, it’s not going to be released in conjunction with 4.8, but will be released sometime 4.8, but in that same time frame area. With the modularization of Qt 4.8, having releases synched up isn’t as important anymore. However, I’ve learned some interesting things. As everyone who’s listened to this podcast and reads the blogs has known, this new Qt Quick will be entirely based on this thing called Qt Scene Graph.
M: Ok, what’s that?
J: Well, what it is, is like Graphics View, except that it’s deeply integrated with it’s rendering back end. So the Scene Graph can do things and optimize itself for say, OpenGL, where Q Graphics View was still very much tied to the Q Painter command-type of painting paradigm, and with technologies such as OpenGL, Qt was kind of hamstrung on the way it did things like when to flush the paint buffer, and when to queue up commands, and how to optimize the commands. So Scene Graph is going to make it so that QML optimizes itself on the back end, and it’s going to be able to do things like being able to synch on the vertical refresh of your monitor so that it can micro-optimize your animations so you get the perfect frame-rate. Because if your vertical synch is 60 frames a second, than the best way to do animation without tearing is to do exactly 60 frames a second.
M: Unless, you are at 50 frames per second like some of our European friends and their TVs, right?
J: Exactly, so you can actually optimize the animations for the hardware that’s underneath it, and a lot of modern graphics technologies have that in mind already. So what this is going to do is bring Qt Quick closer to the hardware. One of the things that was blogged about on Qt Labs, was QML shader effect items, which are an OpenGL concept of shader languages. So you can actually basically create shaders and there’s some preconfigured ones that you can use that are available in Git right now, so you can actually use basically OpenGL shaders in your QML scene, which is really cool.
M: Is this stuff in Git already?
J: It is. This is in a development branch, but you could download it and build it and start using it. There are no guarantees on its stability or usefulness, but it is there. The thing to note, though, and this surprised me this week when they were talking about it, is that QML and Qt Quick 2.0 will be source compatible in the QML language. So QML that you have written against Qt Quick 1.0 will be roughly, and maybe entirely, source compatible with Qt Quick 2.0. However, if you have written C++ plugins that use things like Qt Declarative item, where you have made your own items in C++, those are not going to be source compatible, and you are going to have to possibly rewrite portions of those, especially if you have done elaborate graphical items, because they are now going to have be done in the paradigm of Scene Graph, rather than the Graphics View API.
M: How common is that, that people would be doing things like that?
J: Well, in the projects we do here at ICS we actually do lots of backend work in C++. I don’t think that API is going to be effected too much because it’s based on Q Properties. We do occasionally make our own graphical items for things like, if you wanted a painting area where you want to draw with your finger, those types of things are going to need to be rewritten because, basically we made graphics items to do those wacky elements that need to be really touch-sensitive, not something that relates to straight mouse area. So it’s something to keep in mind, that if you have a large source base, and you’ve made lots of custom items graphically in C++, you’re probably are going to want to take a look at what Qt Quick 2.0 looks like, and gauge how much pain, if any, you need to go through to update to 2.0.
So, which brings us to another very fuzzy topic that was talked about on the Qt blog, which is apparently there is some pie-in-the-sky notions about Qt 5.0.
M: Oh my God, really!?
J: Yes, in fact, there’s been some things on the wish list for a long time that the Trolls can finally get off their plate. It’s always been talked about that they should deprecate a lot of classes that have now been replaced such as QHttp being replaced by QNetworkAccessManager, QItemDelegate has been replaced by QStyleItemDelegate, the entire Qt 3 support library… those are things that couldn’t have left the API without breaking binary compatibility. They could do that. Then there is bigger stuff. The first thing is that they might be able to abstract out the widgets from the rest of the libraries. So if you have a QML based application, right now you have to load all of the widgets into memory, and that’s no longer useful. So you basically loose a lot of memory just by pulling Qt GUI library into your process space. And they can’t separate that out into a separate library without breaking binary compatibility. So that’s something they can fix. And the really big thing that’s been talked about for years is re-architecting the widgets for the desktop, so that they would be less widget-like in the sense of MFC widgets, Win32 widgets, X11 widgets, and be these more flexible concepts like something based on GraphicsView or Scene Graph or QML. So, they’ve done this throughout the years, and they have been further and further separating the widgets from the actual architecture of the windowing system, all the way to the point now, where on all the major platforms, Linux, Mac and Windows, you actually only allocate one platform widget and Qt actually does all of the drawing inside of that one widget. So this is really just the next logical step. Now that we are no longer relying on allocating platform pyramid of widgets to create our dialogs, we can actually architect these things in such a way that we can do a lot easier animations; we can allocate less operating system resources. There is a lot interesting places you can go once you break free of binary compatibility.
M: Yeah, they’ve been waiting for this for a long time so I guess we can’t complain. It’s been what, 4 or 5 years now since the last binary…?
J: Yeah, and just a note on this, this is all me guessing on my side, they have just sort of alluded to the fact that “hey, sometime soon we are going to have discussions on the open governance mailing list about what’s going to happen on 5.0.” This just happens to be what I think is going to happen.
M: It’s about time. There’s some stuff there that is just pretty crusty nowadays.
J: Yeah, and when we teach training classes on Qt, we have to make sure that we tell people that when they come across things like QHttp, that that’s no longer the suggested way of doing web requests and they should use QNetworkAccessManager. When people say, “well, why is it still there?’ Well, it’s because of binary compatibility, but it is deprecated.
M: Ok, well that’s a lot of exciting things between the new SDK and Qt Quick and MeeGo, and some rumors about Qt 5.0. What else is happening?
J: Lots, and lots of conferences. We are coming into, I guess, the beginning of conference season, which starts with the MeeGo conference at the end of May. It’s actually May 23rd through 25th in San Francisco, followed on by DevDays Munich which is scheduled right now for October 24th through 26th. The status of the San Francisco or the American version… don’t know where it might be. It’s undetermined. I can only assume that they haven’t found a venue for it yet, so they can’t commit to dates. That usually happens two weeks to a month after Munich anyway, so they have plenty of time to keep planning that. In the way of the MeeGo conference which is May 23rd to 25th… ICS will be there and we will have a rather large presence, being North America’s largest Qt and MeeGo partners. You can stop by and see us in our booth, or you can attend some of the pre-conference tutorials that are happening over the weekend, which is May 21st and 22nd, and you can learn all about Qt and MeeGo and their API’s, and instructors from ICS will be there teaching those. The day after the conference, on the 26th, there is an in-depth technical workshop. Basically an all day event discussing MeeGo, MeeGo components, how to build applications, how to deploy applications…Very in-depth, very lab-based and also taught by myself, so if people want to come and chit-chat, and gossip and learn about MeeGo, come the day after the conference on the 26th and attend the class.
M: So the one on the 21st and 22nd is free. The MeeGo conference is run by the Linux foundation and we’re doing the training on the 26th. Now, it’s not going to be free to come and see Justin, it will cost you a little bit, but you can check the ICS website to see how to register for that.
J: Also, sort of in concurrence with the MeeGo conference, on May 23rd there is actually a near field conference at MIT here in Massachusetts, and Jeff Leblanc, one of our NFC experts here at ICS, will actually be giving an NFC tutorial to teach you how to use Qt to create near field communications applets or applications. So if you want to do things like fancy business cards, or really cool advertising where you can actually touch your phone to things and make stuff magically happen, Jeff’s the guy to talk to, and he’s going to be at MIT on May 23rd.
M: Right, and that one is going to be free, you’ve just got to register for it. There are some referral links on the ICS webpage that will allow you to do that. Part of what Jeff is going to be doing is showing you how to use Mobility 1.2 to do that, and if you are not in the Boston area, and you are going to be in the Sunnyvale area, than you can stop by our booth at the MeeGo conference and I think we are going to have something in that area to show too.
J: Yeah, we’re going to have some really interesting demos so stop by the booth at the MeeGo conference.
M: If you liked Justin’s little IVI demo… we might still bring that with us, but we’ve got some new ones too.
Well great, it’s been a while since we’ve done this, and as always, there is so many things that have happened it’s amazing how vibrant and dynamic this industry is. Thank you very much, Justin.
J: It will be an interesting couple of months, so be on the lookout for more ‘This Week in Qt’s.’
See you next week, same time, same channel.