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