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 sergio91pt)