QtQuickAtAPace
Qt Quick At A Pace - Instructors: Donald Carr
1 === ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: App Developer Week - Current Session: Qt Quick At A Pace - Instructors: donaldcarr_work
2 [21:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/09/09/%23ubuntu-classroom.html following the conclusion of the session.
3 [21:02] <donaldcarr_work> Good evening
4 [21:02] <donaldcarr_work> My name is Donald Carr, I am a PSO engineer with Nokia in Sunnyvale.
5 [21:02] <donaldcarr_work> I joined Trolltech in Oslo in 2005, and left for a brief sabbatical as a Qt customer working on a Skypesque client (for 2 years) in New York before relocating to the Bay Area office.
6 [21:03] <donaldcarr_work> I work on various embedded targets, track Qt's development across the breadth of the framework and am one of the parents of http://www.qtmediahub.com/ which is one of the largest QML projects I am aware of outside of Intel's tablet (1.2) UX stack.
7 [21:03] <donaldcarr_work> I work with many commercial customers who ship embedded Linux based products
8 [21:03] <donaldcarr_work> Embedded Linux is almost ubiquitous in embedded devices
9 [21:04] <donaldcarr_work> Qt is very strong in the Linux space, and the Webkit/DirectFB acceleration in particular have placed us primely in the STB (Set top box) market
10 [21:04] <donaldcarr_work> I am here today to discuss QtQuick
11 [21:04] <donaldcarr_work> This is a very laxly structured talk, and we can adjust the content to peoples needs
12 [21:04] <donaldcarr_work> basically I have hacked on and around QML a fair amount
13 [21:05] <donaldcarr_work> and rather than just showing people trivial examples
14 [21:05] <donaldcarr_work> will cover:
15 [21:05] <donaldcarr_work> What QtQuick is
16 [21:05] <donaldcarr_work> How you can get hacking on it
17 [21:05] <donaldcarr_work> How you can use it in your projects or large projects
18 [21:05] <donaldcarr_work> Gotchas/strengthes associated with it
19 [21:06] <donaldcarr_work> Forgive my shoddy spelling, I am cut and pasting half of the material, live tapping the rest of it
20 [21:06] <donaldcarr_work> Feel free to rain questions down on me
21 [21:06] <donaldcarr_work> My question queue is empty
22 [21:06] <donaldcarr_work> and I feel neglected :)
23 [21:07] <donaldcarr_work> I would suspect/hope that people would have questions out of the gate
24 [21:07] <donaldcarr_work> I have no clue how big my audience is
25 [21:07] <donaldcarr_work> and at what level to pitch my talk
26 [21:07] <donaldcarr_work> We can deal with hairy QML issues if you want, feel free to direct questions to me at any point
27 [21:07] <donaldcarr_work> I will start with introducing QtQuick to the unitiated
28 [21:07] <donaldcarr_work> uninitiated
29 [21:08] <donaldcarr_work> QtQuick is an umbrella term used to refer to QML and the associated tooling. QML is a declarative markup language with tight bindings to javascript which enables you to rapidly create animation rich pixmap orientated UIs.
30 [21:08] <donaldcarr_work> There has been a fair amount of controversy surrounding QML
31 [21:09] <donaldcarr_work> People seem to think it is too focused on mobile devices, and that it is less suitable for desktop usage
32 [21:09] <donaldcarr_work> I would contest this, and will hopefully have justified our hard emphasis on the usefulness of this tech by the end of this session
33 [21:10] <donaldcarr_work> In order to get you hacking on this, let me step you through getting this on Ubuntu
34 [21:10] <donaldcarr_work> qt-sdk is available in the Ubuntu 11.04 repos
35 [21:10] <donaldcarr_work> in order to grab it, all you have to do is run
36 [21:10] <donaldcarr_work> sudo apt-get install qt-sdk
37 [21:10] <donaldcarr_work> (It will pull in all dependencies, if you want just grab Qt Creator and the required subset of packages for Qt development)
38 [21:11] <donaldcarr_work> Please be advised, the SDK version shipped with 11.04 is a little long in the tooth at this point
39 [21:11] <donaldcarr_work> and you can grab binaries for 32/64bit Linux here http://qt.nokia.com/downloads/
40 [21:12] <donaldcarr_work> Our website will provide you with Qt SDK version 1.1.3 (Qt Creator 2.3.0, Qt 4.7.4) which includes its own updating mechanism and will have infinitely superior QML tooling.
41 [21:12] <donaldcarr_work> I was hoping this was going to be an interactive session
42 [21:12] <donaldcarr_work> I am one of the parents of: http://gitorious.org/qtmediahub
43 [21:13] <donaldcarr_work> This project is an attempt to recreate the look and feel and a subset of the functionality that XBMC provides
44 [21:13] <donaldcarr_work> The functionality we provide is basically everything Qt/QML gives us for free
45 [21:13] <donaldcarr_work> namely accelerated multimedia playback
46 [21:14] <donaldcarr_work> and a heavily pixmap centric layouting engine
47 [21:15] <donaldcarr_work> As mentioned, I am heavily involved with aiding people in using Qt in their set top boxes, and demonstrating its performance, readibility and high level accessibility is incredibly valueable
48 [21:15] <donaldcarr_work> You can check out the whole project
49 [21:15] <donaldcarr_work> or simply browse the QML code here:
50 [21:15] <donaldcarr_work> http://gitorious.org/qtmediahub/confluence/trees/master
51 [21:16] <donaldcarr_work> This code is for the primary skin
52 [21:16] <donaldcarr_work> and I can happily explain/walk you through any points of interest you may have
53 [21:17] <ClassBot> teemperor asked: ok, some question, is qml only a language/tool for guis or for whole applications?
54 [21:17] <donaldcarr_work> teemperor: There is no theoretical limitation which confines it to gui usage
55 [21:18] <donaldcarr_work> teemperor: Any person who starts a QML application will find themselves exposing a great set of Qt functionality to QML in order to use it, so there is certainly merit to dealing with non-gui elements in QML
56 [21:18] <donaldcarr_work> teemperor: It is not hard to imagine headless apps written using QML
57 [21:19] <donaldcarr_work> teemperor: That said, one of the nicest things about it is the way the bindings allow for relatively layouting
58 [21:19] <donaldcarr_work> If you look at XBMC skins
59 [21:19] <donaldcarr_work> You will see they are fundementally simple skins with a very limited number of relatively placed items
60 [21:20] <donaldcarr_work> They are far less like widget based applications and far more distance friendly
61 [21:20] <donaldcarr_work> (10 foot UIs?)
62 [21:21] <ClassBot> niemeyer asked: Is there any good path today/in the works to have QML handled by a C program?
63 [21:22] <donaldcarr_work> niemeyer: No, there is no straight forward way to do this
64 [21:22] <donaldcarr_work> niemeyer: I have no doubt a braver man than me could attempt it an succeed
65 [21:22] <donaldcarr_work> niemeyer: I am not that man
66 [21:23] <donaldcarr_work> gnomie just mentioned that Unity2D is QML based
67 [21:23] <donaldcarr_work> this is true, and it is really clean and small
68 [21:23] <donaldcarr_work> The Meego tablet UX is also QML based
69 [21:23] <donaldcarr_work> and is the broadest most ambitious of QML I have seen in a public project
70 [21:24] <donaldcarr_work> every single application is QML based
71 [21:24] <donaldcarr_work> and all launcher via a single engine
72 [21:24] <donaldcarr_work> I would love to see more QML applications in the desktop domain
73 [21:25] <donaldcarr_work> We tried to craft a compelling demo for CES 2009 using graphicsview
74 [21:25] <donaldcarr_work> And we found we were struggling against it every step of the way
75 [21:26] <donaldcarr_work> What we produced in a similar timeframe was completely uncomparable to the QML code we managed to churn out and demo
76 [21:26] <donaldcarr_work> The Confluence skin I have supplied a link to above is pretty big
77 [21:26] <donaldcarr_work> it is also vey ugly, but valuable in that it demonstrates various problems with large QML projects
78 [21:27] <donaldcarr_work> and should inspire you to contrain your QML to your own set of criteria
79 [21:27] <donaldcarr_work> basically
80 [21:27] <donaldcarr_work> the language does not constrain you, and allows you to use global variables and generate spagetthi code
81 [21:27] <donaldcarr_work> You have to be aware of this
82 [21:28] <donaldcarr_work> from the outset
83 [21:29] <donaldcarr_work> and set the appropriate coding conventions at the outset
84 [21:29] <donaldcarr_work> if you look at the Delphin skin:
85 [21:29] <donaldcarr_work> http://gitorious.org/qtmediahub/delphin/trees/master
86 [21:29] <donaldcarr_work> You will see it is infinitely cleaner
87 [21:30] <donaldcarr_work> I would urge any of your interested in QML to checkout out and build our project
88 [21:30] <donaldcarr_work> as it can get you hacking QML within minutes
89 [21:30] <donaldcarr_work> we are more than happy to field questions
90 [21:30] <donaldcarr_work> http://www.qtmediahub.com/
91 [21:30] <donaldcarr_work> gives information about the project
92 [21:30] <donaldcarr_work> and our respective email addresses
93 [21:30] <donaldcarr_work> where you can spam us to your hearts content
94 [21:31] <donaldcarr_work> I have to stress that we are pushing QML everywhere
95 [21:32] <donaldcarr_work> and experimenting with the extent to which it increases the accessibility of otherwise incredibly complex tasks
96 [21:32] <donaldcarr_work> This blog posting:
97 [21:32] <donaldcarr_work> http://labs.qt.nokia.com/2011/08/24/qt-quick-3d-tutorial-video/
98 [21:32] <donaldcarr_work> demonstrates the use of QML3D to render and interact with a 3D model of a car using QML
99 [21:33] <donaldcarr_work> If you are in the market for more formal training, or curious as to specifics, we have free training material for Qt Quick available here:
100 [21:33] <donaldcarr_work> http://qt.nokia.com/learning/online/training/materials/qt-quick-for-designers
101 [21:33] <donaldcarr_work> and here:
102 [21:33] <donaldcarr_work> http://qt.nokia.com/learning/online/training/materials/qt-essentials-qt-quick-edition
103 [21:35] <donaldcarr_work> As you would have gathered ARM based devices are gaining momentum in an increasing array of tasks
104 [21:35] <donaldcarr_work> my job involves dabbling with these devices on a daily basis
105 [21:35] <donaldcarr_work> Is there any remaining question about what QML is?
106 [21:35] <donaldcarr_work> Qt has historically had a painter algorithm paint engine
107 [21:36] <donaldcarr_work> a style api based on this, and widgets which render using this
108 [21:36] <donaldcarr_work> This resulted in an ungodly mapping of atomic painters algorithm calls resolving to GL calls and massive amount of overhead
109 [21:37] <donaldcarr_work> This will be resolved by the scenegraph work going into Qt 5
110 [21:37] <donaldcarr_work> As I mentioned earlier, there has been some public concern that Qt will become less applicable for desktop apps
111 [21:37] <donaldcarr_work> Our engineers have already blogged about:
112 [21:37] <donaldcarr_work> http://labs.qt.nokia.com/2011/03/10/qml-components-for-desktop/
113 [21:38] <donaldcarr_work> which demonstrates higher level native controls for usage from within QML
114 [21:38] <donaldcarr_work> These are still be actively researched and should mature over the coming months
115 [21:39] <donaldcarr_work> When QtQuick was first released, it provided very little higher level widget functionality and this caused something of a panic and pigeon holing of the tech as being undesktop like
116 [21:40] <donaldcarr_work> This was caused by the lag time in actually implementing and releases Components, which clearly could not be implemented in parallel to the core QML language itself
117 [21:40] <donaldcarr_work> We are having a session on this at this years Qt Developer Days (Munich 24-26th Oct, SF 29Nov-1Dec):
118 [21:40] <donaldcarr_work> http://qt.nokia.com/qtdevdays2011/qt-technical-sessions#qtquickcomponentsdesktop
119 [21:41] <donaldcarr_work> Does anyone have any questions of statements to make at this point
120 [21:41] <donaldcarr_work> ?
121 [21:41] <donaldcarr_work> If people want to use QML components now
122 [21:42] <donaldcarr_work> http://labs.qt.nokia.com/2011/07/06/ready-made-ui-building-blocks-at-your-service-qt-quick-components-for-symbian-and-meego-1-2-harmattan/
123 [21:42] <donaldcarr_work> documents the release of the Symbian component set which have no dependency outside of Qt so you can happily use them outside of Symbian development. (YMMV)
124 [21:43] <ClassBot> tomalan asked: gtk-applications tend to have a "foreign" look on OSX. How is that with QT?
125 [21:43] <donaldcarr_work> tomalan: I am going to assume you are asking this question in the QML context
126 [21:43] <donaldcarr_work> tomalan: Jens provides this screen shot in the comments section: http://labs.qt.nokia.com/wp-content/uploads/2011/03/mac2.png
127 [21:44] <donaldcarr_work> tomalan: I would assume the controls would look passably macish, although I clearly can't vouch for them until the surrounding work has matured
128 [21:45] <donaldcarr_work> tomalan: I also cant vouch for the feel (even though the look as clearly quite far along)
129 [21:45] <donaldcarr_work> tomalan: We are also exposing native theming functionality via other QML constructs
130 [21:45] <donaldcarr_work> as documented in this blog: http://labs.qt.nokia.com/2011/04/08/mac-toolbars-for-qt-quick/
131 [21:46] <donaldcarr_work> If you are interested in Qt development
132 [21:46] <donaldcarr_work> Please subscribe to the Qt developer mailing lists:
133 [21:46] <donaldcarr_work> http://lists.qt.nokia.com/mailman/listinfo
134 [21:46] <donaldcarr_work> where flame wars abound
135 [21:46] <donaldcarr_work> (but they have to be constructive flamewars)
136 [21:47] <donaldcarr_work> If in dabbling with QML you hit any issues please feel free to address questions to:
137 [21:47] <donaldcarr_work> Please direct any queries to qt-qml@qt.nokia.com where we can collectively address them.
138 [21:47] <donaldcarr_work> If there are no further questions
139 [21:48] <donaldcarr_work> I will show you interesting items from Qt Media Hub
140 [21:48] <donaldcarr_work> if you do not interject with questions
141 [21:48] <donaldcarr_work> the way the project is currently structured
142 [21:48] <donaldcarr_work> all models, model population, file system crawling, threading is done in c++
143 [21:49] <donaldcarr_work> the only thing the QML model cares about are structures which are explicitly exposed to it
144 [21:49] <donaldcarr_work> this is done in:
145 [21:49] <donaldcarr_work> http://gitorious.org/qtmediahub/qtmediahub-core/blobs/master/src/skinruntime.cpp
146 [21:50] <donaldcarr_work> starting on line 266
147 [21:50] <donaldcarr_work> You can see we create a property map
148 [21:50] <donaldcarr_work> and then attach it to the root context
149 [21:50] <ClassBot> There are 10 minutes remaining in the current session.
150 [21:51] <donaldcarr_work> this is a clear point where you can see the division of functionality between c++ and QML
151 [21:51] <donaldcarr_work> basically, media player skins are completely unconstrained other than the fact they have to use the APIs of these common exported contructs
152 [21:52] <donaldcarr_work> So where as XBMC has a fixed XML layout engine
153 [21:52] <donaldcarr_work> where the themes are bound to formatting/layout constraints imposed by this intermediate engine
154 [21:53] <donaldcarr_work> our QML skins can take any liberties extended by QML
155 [21:53] <donaldcarr_work> We currently have around 5 skins
156 [21:53] <donaldcarr_work> depending on the targets we are aiming them at: automotive, directfb hardware, GL based devices
157 [21:54] <donaldcarr_work> Your QML skin changes depending on the acceleration mechanisms available and the input mechanisms
158 [21:54] <donaldcarr_work> One of the trickiest things about QML (it has to be said) is the focus handling
159 [21:55] <donaldcarr_work> When using a keyboard to change focus between a hierarchy of controls, especially in a project where multiple people are hacking, we found we had to adopt a procedual way of switching focus between components
160 [21:55] <ClassBot> There are 5 minutes remaining in the current session.
161 [21:56] <donaldcarr_work> We have 5 minutes remaining, does anyone have any questions?
162 [21:56] <donaldcarr_work> I hope some of you managed to grab the qt-sdk package
163 [21:56] <donaldcarr_work> and are curious enough to look further into it
164 [21:57] <donaldcarr_work> If any of you are interested in joining our project feel free to join us at #qtmediahub
165 [21:58] <donaldcarr_work> for QML related questions you can always hop on #qt-qml
166 [21:58] <donaldcarr_work> As you would have gathered for Qt 5, QML is the first class citizen, he has the key to the city and hence familiarizing yourself with this technology is very adviseable
167 [21:59] <donaldcarr_work> I for one am thoroughly convinced that the new model/architecture of Qt (for Qt 5) makes it very plausable for wide usage in the embedded (and desktop) space
168 [21:59] <donaldcarr_work> I think I am about to get booted
169 [21:59] <donaldcarr_work> thank you for your time
170 [21:59] <donaldcarr_work> I hope that this has been useful
171 [22:00] <ClassBot> tomalan asked: When will QT5 be available?
172 [22:00] <donaldcarr_work> tomalan: I can't give explicit dates for clear reasons
173 [22:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/09/09/%23ubuntu-classroom.html
174 [22:00] <donaldcarr_work> tomalan: I would expect it to be quite useable by the end of the year
MeetingLogs/appdevweek1109/QtQuickAtAPace (last edited 2011-09-12 15:46:36 by bl18-252-24)