App Developer Week -- The Making of Unity 2D -- Kaleo -- Tue, Sep 6th, 2011

   1 [17:00] <dpm> Kaleo, as soon as the Classbot kicks in with the intro, the floor is yours!
   2 [17:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/09/06/%23ubuntu-classroom.html following the conclusion of the session.
   3 [17:00] <Kaleo> dpm: thank you David
   4 [17:01] <Kaleo> dpm: thank you everyone for joining this session
   5 [17:01] <Kaleo> dpm: My name is Florian Boucault
   6 [17:01] <Kaleo> dpm: and I am one of the software developers behind Unity 2D
   7 [17:02] <Kaleo> dpm: I would like that session to be as interactive as you guys would like
   8 [17:02] <Kaleo> dpm: so don't hesistate to ask any question at any time
   9 [17:02] <Kaleo> (and I'll drop the dpm :))
  10 [17:02] <Kaleo> Unity 2D is essentially an implementation of the Unity user interface using Qt and QML
  11 [17:03] <Kaleo> it reuses the same backend technologies used in Unity 3D
  12 [17:03] <Kaleo> and intends to provide a UI that matches Unity 3D
  13 [17:03] <Kaleo> the main goal of Unity 2D is to run on platforms that do not provide accelerated OpenGL
  14 [17:04] <Kaleo> it also simplifies the development of the shell UI quite a bit
  15 [17:04] <Kaleo> it is made up of 4 UI components
  16 [17:04] <Kaleo> 3 of which you can see on the following diagram:
  17 [17:04] <Kaleo> http://people.canonical.com/~kaleo/classroom/unity_2d_wireframe.png
  18 [17:05] <Kaleo> - the app launcher on the left
  19 [17:05] <Kaleo> - the top panel with the application menu and the indicators
  20 [17:05] <Kaleo> - the dash that is a UI to essentially search for content
  21 [17:05] <Kaleo> - and the one not in the diagram, the workspace switcher
  22 [17:06] <Kaleo> the workspace switcher allows user to switch between workspace, applications and windows
  23 [17:06] <Kaleo> right now these 4 components are separate programs that are displayed on top of every other windows
  24 [17:07] <Kaleo> they are written with QML
  25 [17:07] <Kaleo> and use APIs defined in C++/QObjects in a common library called libunity-2d-private
  26 [17:08] <Kaleo> a lot of these APIs just wrap other libraries, such as wnck, bamf, dee, etc.
  27 [17:08] <Kaleo> and made these functionalities easily accessible to QML uis
  28 [17:08] <Kaleo> I can go into the details of what each library provides us with
  29 [17:09] <Kaleo> if anybody has questions about that
  30 [17:09] <Kaleo> these 4 components are fairly window manager agnostic
  31 [17:09] <Kaleo> today Unity 2D ships with Metacity
  32 [17:09] <Kaleo> but it should work equally well with others: compiz, kwin, xfwm..
  33 [17:11] <Kaleo> historically Unity 2D's development started last year towards the end of the summer
  34 [17:11] <Kaleo> and grew into being the default interface for ARM based Ubuntu isos
  35 [17:11] <Kaleo> development happens on Launchpad
  36 [17:12] <Kaleo> getting started for developers is straightforward
  37 [17:12] <Kaleo> and documented https://wiki.ubuntu.com/Unity2D
  38 [17:12] <Kaleo> at*
  39 [17:12] <Kaleo> each component (dash, launcher, etc.) has a separate directory in the source tree
  40 [17:13] <Kaleo> and can be hacked on independently
  41 [17:13] <Kaleo> the policy for trunk is that it has to be releasable at any point;
  42 [17:13] <Kaleo> that means, no regression when introducing no features and only landing features that are ready
  43 [17:14] <Kaleo> automated builds are produced every day
  44 [17:14] <Kaleo> and released into a PPA: https://launchpad.net/~unity-2d-team/+archive/unity-2d-daily
  45 [17:16] <Kaleo> (connection issues here)
  46 [17:17] <Kaleo> for developers who want to play around with it (or fix bugs)
  47 [17:17] <Kaleo> the required knowledge to get on the project is:
  48 [17:17] <Kaleo> - QML and Javascript for the UI pieces
  49 [17:18] <Kaleo> - C++ if you want to add features that require new data that our backend does not provide
  50 [17:18] <Kaleo> one thing to remember is that we try to keep the list of features between Unity 2D and 3D to be synchronised
  51 [17:19] <Kaleo> so if you have an idea about the UI, don't forget that it needs to be done in both
  52 [17:20] <Kaleo> I think that's enough for the general presentation.
  53 [17:20] <Kaleo> Do you guys have any specific question?
  54 [17:20] <Kaleo> let me take Andy80's :)
  55 [17:21] <Kaleo> Andy80: we have a wrapper for indicators as well
  56 [17:21] <Kaleo> Andy80: it's a C++/Qt API that calls the API of the unity-panel-service
  57 [17:21] <Kaleo> Andy80: and essentially gives us a list of indicators to render
  58 [17:22] <ClassBot> Andy80 asked: do we have a wrapper for indicators too or are we just calling the original methods?
  59 [17:22] <Kaleo> (thanks ClassBot)
  60 [17:24] <Kaleo> anybody else? :)
  61 [17:24] <ClassBot> dpm asked: which libraries should an app developer wanting to interface his/her app with Unity 2D should know about?
  62 [17:25] <Kaleo> so, dpm, the integration into Unity 2D is the same as the integration into Unity 3D
  63 [17:25] <Kaleo> once you have done it for one you have done it for both
  64 [17:25] <Kaleo> the libraries concretely are libunity
  65 [17:26] <Kaleo> you can integrate with the launcher with that
  66 [17:26] <Kaleo> you can also create a lens to add content to the dash (for example the Gwibber lens)
  67 [17:26] <Kaleo> finally you can also integrate with the top panel's indicators
  68 [17:26] <Kaleo> the way Banshee is integrated for example
  69 [17:27] <Kaleo> in the sound menu
  70 [17:27] <Kaleo> does that answer the question?
  71 [17:28] <ClassBot> mohammedalieng asked: are there any plans to provide desktop gadgets, specially it is the default interface for ARM devices ?
  72 [17:28] <Kaleo> mohammedalieng: there are no concrete plans so far for desktop gadgets
  73 [17:29] <Kaleo> mohammedalieng: right now if one needs them I would personally recommend to use KDE's "gadgets"
  74 [17:29] <Kaleo> that is the Plasma ones
  75 [17:30] <Kaleo> it fits well technology wise with Unity 2D as it uses QML as well
  76 [17:30] <ClassBot> Andy80 asked: if I correctly understand, Unity-2D must have the same features of Unity but without the 3D effects that would not be possible on PC without a 3D graphic card. But we know that QML is used even on hardware with 3D acceleration to have very nice effects too (look for example Harmattan running on Nokia N9). Would not be better to develop just Unity-2D + Unity-effects insted of duplicating the work having to develo
  77 [17:31] <Kaleo> Andy80: I essentially agree with that
  78 [17:31] <Kaleo> to add on that on a technical level
  79 [17:31] <Kaleo> the visual possibilities of QML today are pretty advanced
  80 [17:31] <Kaleo> especially on the effects side
  81 [17:31] <Kaleo> the only limitation today is on the 3D side of things
  82 [17:32] <Kaleo> only rudimentary 3D is available
  83 [17:32] <Kaleo> which is a gap that can be closed with Qt Quick 3D
  84 [17:32] <Kaleo> I have experiments of integrating 3D objects and scenes into the launcher and the dash
  85 [17:32] <Kaleo> it works fairly well
  86 [17:33] <Kaleo> on the performance side, we are already pretty good with the rendering engine we enforce the use of, raster
  87 [17:33] <Kaleo> Unity 2D also works with the OpenGL2 engine
  88 [17:33] <Kaleo> and we are quite looking forward to migrating to QML2
  89 [17:33] <Kaleo> that will provide very nice performance improvements
  90 [17:34] <Kaleo> by adding a better rendering model when it comes to OpenGL and modern GPUs
  91 [17:35] <Kaleo> the important thing to remember here is that:
  92 [17:35] <Kaleo> 1) we are not limited by QML UI-wise (we can use Qt Quick 3D or even write our own OpenGL based QML ui elements)
  93 [17:36] <Kaleo> 2) the QML code we write today for QML1 will work in the future without changes with QML2 and QML3D
  94 [17:36] <Kaleo> Andy80: does that answer the question?
  95 [17:37] <Kaleo> Andy80 asks: "what are we waiting for?"
  96 [17:37] <Kaleo> we are waiting for you :)
  97 [17:38] <Kaleo> there is quite a lot of invisible work happening in Unity 2D
  98 [17:38] <Kaleo> that takes quite a bit of our attention
  99 [17:38] <Kaleo> (we are just 3 developers today)
 100 [17:38] <Kaleo> for example, supporting multi monitor properly
 101 [17:38] <Kaleo> right-to-left languages
 102 [17:39] <Kaleo> languages that need special input methods
 103 [17:39] <Kaleo> fixing important bugs :)
 104 [17:40] <Kaleo> so, developers are of course always available
 105 [17:40] <Kaleo> on freenode #ayatana
 106 [17:40] <Kaleo> and for those lucky ones going to UDS
 107 [17:40] <Kaleo> they will be happy to spend time with those interested
 108 [17:41] <Kaleo> we will have a session as well planning for Ubuntu P
 109 [17:41] <ClassBot> dpm asked: what are the issues with right-to-left languages? Is it a matter of QML not supporting them well?
 110 [17:41] <Kaleo> dpm: the issue was indeed that QML was not supporting them well
 111 [17:41] <Kaleo> dpm: so, we had a first shot at it working around that limitation
 112 [17:42] <Kaleo> but now Qt 4.7.4 is out with Qt Quick 1.1 that supports natively RTL languages
 113 [17:42] <Kaleo> so we are mostly in the clear now
 114 [17:42] <Kaleo> in Oneiric we will support them decently
 115 [17:42] <Kaleo> another example of invisible work is accessibility support
 116 [17:43] <Kaleo> critical for us as Unity 2D is becoming the default desktop on Ubuntu Oneiric where Unity 3D cannot run
 117 [17:43] <Kaleo> I like to see Unity 2D as the universal version:
 118 [17:43] <Kaleo> - works everywhere
 119 [17:44] <Kaleo> - works for everybody
 120 [17:44] <Kaleo> (all machines, all cultures, all needs)
 121 [17:44] <Kaleo> that's being a bit idealistic of course :)
 122 [17:44] <Kaleo> thanks for the question dpm
 123 [17:47] <ClassBot> rsajdok asked: Is there the list of new feature which will be added to Unity-2d in future?
 124 [17:48] <Kaleo> rsajdok: so, the first set of features we want to add are the ones that are in Unity 3D but not in 2D yet because we have not had time to do them
 125 [17:48] <Kaleo> rsajdok: https://bugs.launchpad.net/unity-2d/+bugs?field.tag=delta-with-3d
 126 [17:49] <Kaleo> rsajdok: and of course the wish list items https://bugs.launchpad.net/unity-2d/+bugs?search=Search&field.importance=Wishlist&field.status=New&field.status=Incomplete&field.status=Confirmed&field.status=Triaged&field.status=In+Progress&field.status=Fix+Committed
 127 [17:49] <Kaleo> for those who want to start easy to learn how it works inside and implement something not too difficult
 128 [17:49] <Kaleo> we use the bitesize tag
 129 [17:50] <Kaleo> https://bugs.launchpad.net/unity-2d/+bugs?field.tag=bitesize
 130 [17:50] <ClassBot> There are 10 minutes remaining in the current session.
 131 [17:51] <Kaleo> thanks ClassBot
 132 [17:53] <Kaleo> alright folks, just a few minutes for more questions
 133 [17:54] <ClassBot> Andy80 asked: are you aware if any other distro is interested in Unity/Unity-2d? This could bring more contributions to the project
 134 [17:55] <Kaleo> Andy80: I know somebody contacted us to package it up in OpenSuse
 135 [17:55] <Kaleo> but that's the extent of my knowledge
 136 [17:55] <ClassBot> rsajdok asked: Are there bugs in pure javascript?
 137 [17:55] <ClassBot> There are 5 minutes remaining in the current session.
 138 [17:56] <Kaleo> rsajdok: yes, it happens often that the issues can be fixed with a bit of QML + javascript
 139 [17:58] <ClassBot> rsajdok asked: How find these bugs?
 140 [17:58] <Kaleo> rsajdok: unfortunately we don't have such a list readily available
 141 [17:59] <Kaleo> rsajdok: you will have to try I am afraid
 142 [17:59] <Kaleo> I think it's time for me to leave the stage to Curtis Hovey
 143 [18:00] <dpm> Thanks a lot for a great session Kaleo!
 144 [18:00] <Kaleo> :)
 145 [18:00] <Kaleo> thanks dpm, thanks for the questions everybody

MeetingLogs/appdevweek1109/TheMakingofUnity2D (last edited 2011-09-06 19:07:37 by ABTS-KK-Dynamic-249)