/srv/irclogs.ubuntu.com/2011/09/06/#ubuntu-classroom.txt

=== MickE is now known as Guest71373
karna1hmm03:35
Guest93940hi03:45
karna1hi03:45
Guest93940hi03:46
Guest93940hi03:46
Guest93940hi03:46
jmarsdenThere is no class now.03:50
jmarsden!classroom03:50
ubot2`The Ubuntu Classroom is a project which aims to tutor users about Ubuntu, Kubuntu and Xubuntu through biweekly sessions in #ubuntu-classroom - For more information visit https://wiki.ubuntu.com/Classroom03:50
Test1Ciao11:17
noel__hello11:42
noel__when does the class start?12:12
iyoryhii13:18
=== zyga is now known as zyga-food
Isti_hello13:22
=== zyga-food is now known as zyga
mitya57WHOIS raju114:47
=== raju1 is now known as genupulas
=== vito_ is now known as Guest7278
=== dpm is now known as dpm_
dpmis everyone ready for another day of cool app developer sessions?15:57
dpmday 2 of ubuntu app developer week is about to start!15:57
Andy80yeeeeeaaahh15:58
dpm:)15:58
nigelbThere's a change in schedule. Today's first talk will be by dpm :)15:59
=== 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: Making Your App Speak Languages with Launchpad Translations - Instructors: dpm
dpmok, let's wait for Classbot to kick off and then get started16:00
dpmoh, there it is... :)16:00
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/09/06/%23ubuntu-classroom.html following the conclusion of the session.16:01
dpmallright, let's roll16:01
dpmWelcome to this session on setting up your project for translations in Launchpad16:01
dpmMy name is David Planella I work as the Ubuntu Translations Coordinator in the Community team at Canonical,16:02
dpmwhere I work with our translations community to bring you a localized Operating System.16:02
dpmI also tend to help with any topics related to translations and Launchpad, and that's what we're going to talk about today :)16:03
dpmThat's a really exciting topic to me, as Launchpad makes it really easy to make your applications translatable and available to everyone in almost any language, and I hope you enjoy it as much as I do.16:03
dpmTranslators are really awesome people!16:03
dpmI'll leave some time for questions at the end, but feel free to ask them throughout the session16:04
dpmAnyway, let's get started, shall we?16:05
dpmAssumptions16:05
dpm-----------16:05
dpm 16:05
dpmI will start with an application ready set up for translations, so I'm not going to go into much detail there.16:05
dpm(I'll take questions, though, if there are any)16:06
dpmMy intention is to focus in getting you started with exposing your project's translations to everyone for translation.16:06
dpmWe're going to be using these tools:16:06
dpm    bzr16:07
dpm    quickly16:07
dpm    python-distutils-extra16:07
dpmIn particular quickly, which we'll use to start with a nearly ready-made project with translations set up16:07
dpm(You can install it by running the 'sudo apt-get install quickly' command or you can get it from the Ubuntu Software Centre)16:08
dpm 16:08
dpmCreating the project and setting it up for translations16:08
dpm-------------------------------------------------------16:08
dpm 16:08
dpmWe'll use quickly to create a project called 'fooby', and then we'll set up the last touches needed to configure translations.16:08
dpmAs I said, we won't go into the detail of setting up the application for translation, as quickly will do the heavy lifting for you,16:09
=== paglia_s is now known as paglia_ss
dpmbut here's a high level overview of what needs to be done to add internationalization support to an app, in case you need to do it outside of quickly:16:09
=== paglia_ss is now known as paglia
dpmGeneric Steps to Internationalize an Application16:10
dpm================================================16:10
dpm 16:10
dpm* Integrate gettext (http://www.gnu.org/s/gettext/) into the application. Initialize gettext in your main function16:11
dpm* Integrate gettext into the build system. There are generally gettext rules in the most common build systems. Use them.16:11
dpm* Mark translatable messages. Use the _() gettext call to mark all translatable messages in your application16:12
dpm* Care for your translation community. Not necessarily a step related to adding i18n support, but you'll want an active and healthy translation community around your project. Keep the templates with translatable messages up to date. Announce these updates and give translators time to do their work before a release. Be responsive to feedback.16:12
dpmanyway, going back to the subject16:12
dpmSo if you've got all those tools installed, you can simply fire up a terminal window (Ctrl + Alt + T) and run the following command:16:13
dpm    quickly create ubuntu-application fooby16:13
dpmThis will create an application named 'fooby'16:13
dpmand give you some information about it on the first run16:13
dpmthen change to the fooby folder:16:14
dpm    cd fooby16:14
dpmAnd finally run:16:14
dpm    python setup.py build_i18n16:14
dpmThat should have finished the last bits to set up translations, so that you can already link up your application with Launchpad Translations16:15
dpmin particular, what that last command did was to created the po folder in your project, to contain what it's called the translations template and the translations files themselves16:16
dpmyou can see the template there by running:16:16
dpm    ls po16:16
dpmhave a look at it:16:16
dpm    gedit po/fooby.pot16:16
dpmIt's important to get a bit familiar with it, but you don't have to remember the whole format16:17
dpmyou should simply know what it is for now :)16:17
dpmand that Launchpad needs it to be in your project16:17
dpmA few bits and pieces on translation templates:16:18
dpm * Gettext: They follow the gettext format: http://is.gd/fC8p616:18
dpm * Name: They are generally named after your project, with a .pot extension. E.g. fooby.pot16:19
dpm * One template per app: Generally applications need only one template16:19
dpm * Layout: They generally live in the po/ folder, along with the translations16:19
dpm * Content: They are text files which contain:16:19
dpm    * A header with metadata16:19
dpm    * A set of message pairs: msgid are the original strings extracted from the code and exposed to translators, and msgstr are the placeholders for the translations, which are always empty in the templates.16:20
dpm * Launchpad import: They are imported into Launchpad and exposed for translations for all languages in https://translations.launchpad.net/$YOUR_PROJECT16:20
dpm * Updates: You update the template whenever you have new strings in your app and you think they are stable for translation (generally shortly before release)16:20
dpm * Tools: you update templates with gettext based tools:16:21
dpm    * generally intltool -> 'cd po && intltool-update -p'16:21
dpm    * or increasingly python-distutils-extra for python projects -> 'python setup.py build_i18n -p'16:21
dpmYou don't have to remember all of this16:22
dpmBut hopefully these points will give you some insight on translation templates16:22
dpmAt least you should know how that you must update the template from time to time16:22
dpmand the command to do it16:23
dpmRepeat it with me - "I _will_ update the translation from time to time, at least once before a release"16:23
dpm:-)16:23
dpmYou'll see that your project still does not contain any translations, but again, let me give you a quick overview on translations, so you know what we're talking about:16:24
dpmSo here we go, a few words on translations:16:24
dpm * Template-based: They are created from the template and share the same gettext format16:26
dpm * Name: They are named after the $CODE.po scheme, where $CODE is an ISO 639-2 code. E.g. ca.po for Catalan, de.po for German. Some have an optional country specifier. E.g. pt_BR.po (Portuguese from Brazil)16:26
dpm * Layout: they are all in the same directory as the POT template. So:16:27
dpm    * po/fooby.pot16:27
dpm    * po/ca.po16:27
dpm    * po/pt_BR.po16:27
dpm    * ...16:27
dpm * Creation: Launchpad creates them for you the minute someone translates the first message online16:27
dpm * Code integration: you can let Launchpad commit them to a branch of your choice or you can export a tarball containing them all (more on that later)16:27
dpmAnyway, let's continue. Now that you've added the template to your code, you can commit it by running the following commands:16:28
dpm    bzr add po16:28
dpm    bzr commit -m 'Created my first ever awesome .pot template. Go translators, go!'16:28
dpmAnd let's publish it in Launchpad (note that you'll have to change the Launchpad URL to your user name instead of 'dpm'):16:29
dpm    bzr push lp:~dpm/fooby/translations16:29
dpmNothing particularly hard to understand on the naming scheme above: dpm is my user name, fooby is the project and translations is the bzr branch name in Launchpad16:29
dpmOk, so that completed the first step!16:29
dpmNext:16:29
dpmah, forgot to ask, any questions so far?16:30
ClassBotAndy80 asked: what about Qt application? They don't use gettext. They have their own method to be translatable (basically it's just a matter of tr("This is a message") ) and I noticed that in Unity-2D we're using a sort of macro. Why don't we improve the launchpad integration even for Qt applications?16:30
dpmgood question16:30
dpmas Unity 2D is an Ubuntu project, it has to integrate well with Launchpad and the way Ubuntu translators translate, which is again Launchpad Translations16:31
dpmin short, in the Unity 2D project there is some code that intercepts the Qt tr() calls and converts them to gettext() calls16:32
dpmso effectively Unity 2D, despite being a Qt project, uses gettext for translations16:33
dpmI agree that it'd be nice for Launchpad to support the Qt format16:33
dpmbut as you see, you can easily use gettext from Qt-based apps too16:33
dpmOk, let's continue16:34
dpmSetting up code hosting16:34
dpm-----------------------16:34
dpm 16:34
dpmWe want our project to be available to everyone to translate, so we'll need to publish it in Launchpad first.16:34
dpmThat's beyond the scope of this session, so we'll continue from the already registered fooby project in Launchpad:16:34
dpm    https://code.launchpad.net/fooby16:34
dpmIn case you are interested, though, registering a new project in Launchpad is as easy as going to https://launchpad.net/projects/+new16:35
dpmSome of the URLs I'll post to set up your project will not allow you to open some of the pages due to permissions, so if you have your own project in Launchpad, just substitute the 'fooby' part in the URL with your project's Launchpad id16:35
dpmThe first thing we'll have to do in our project is registering a bzr branch,16:36
dpmso we'll simply go to the Code tab in Launchpad, choose the "Configure code hosting" link16:36
dpmand then on the "Link to a Bazaar branch already on Launchpad" you can enter the branch we published earlier on (~dpm/fooby/translations)16:36
dpmA shortcut is to simply go to:16:36
dpmhttps://code.launchpad.net/fooby/trunk/+setbranch16:36
dpmto do this16:36
dpmSo now we have all we need to start setting up translations.16:37
dpmYou see that all components in Launchpad are integrated, so you set up a branch to be linked to translations16:37
dpmJust as a recap, you can see and explore the resulting code from here:16:37
dpm    https://code.launchpad.net/fooby16:37
dpmFeel free to browse it (http://bazaar.launchpad.net/~dpm/fooby/translations/files)16:37
dpmor download it (bzr branch lp:fooby) and play with it16:37
dpmOk, so code hosting setup: (./) Finished!16:38
dpm 16:38
dpmSetting up translations in Launchpad16:38
dpm------------------------------------16:38
dpm 16:38
dpmNow we come to the most interesting part16:38
dpmLet's divide this in 4 steps16:38
dpm1. Telling Launchpad where translations are hosted16:38
dpmThe first step it to tell Launchpad that we want to host translations there.16:38
dpmOn your Launchpad's project, just click on the Translations tab, or go to this URL:16:39
dpm(remember to change 'fooby' to your project's name!)16:39
dpm    https://translations.launchpad.net/fooby/+configure-translations16:39
dpmThen choose the "Launchpad" option to tell Launchpad translations will be done there, and click on "Change"16:39
dpmThat was an easy one, wasn't it?16:39
dpm2. Configuring permissions16:39
dpmNow we are going to tell Launchpad how we want our translations permissions to be (i.e. who and how can translate it),16:39
dpmand which branch translators should focus on.16:40
dpmSimply go to the Translations tab again and click on the "Change permissions link"16:40
dpmOr here's the direct link: https://translations.launchpad.net/fooby/+settings :)16:40
dpmI recommend the following setup:16:40
dpm    Translations group: Launchpad Translators16:40
dpm    Translations permissions policy: Structured16:40
dpm    Translation focus: trunk (or choose your branch here)16:40
dpmAssigning the translations to a translation group will make sure a team for each language will review translations before they are submitted, ensuring the quality of translations16:40
dpmA translations group is simply a set of teams, one per language, that takes care of translations in that language16:41
dpmThey can be specific to a project or generic.16:41
dpmI recommend the Launchpad Translators group because it contains a set of already established and experienced teams:16:41
dpmhttps://translations.launchpad.net/+groups/launchpad-translators16:41
dpmas per the Structured policy16:41
dpmit gives you a good balance between openness and quality control:16:42
dpmonly the team members of an established team will be able to translate your project16:42
dpmAnd for languages without a team it will allow everyone to translate, facilitating the barrier of entry to translators at the expense of QA16:42
dpmThe other ends of the permissions spectrum are Open or Restricted16:42
dpmYou can learn more about these here:16:42
dpm    https://help.launchpad.net/Translations/YourProject/PermissionPolicies16:42
dpmIt's the project maintainer's call, but I personally discourage them to use Open16:43
dpmOk, we're nearly there, next step:16:43
dpm3. Setting up what needs to be translated16:43
dpmYou need to also tell Launchpad what needs to be translated. That's again quite easy. On the Translations tab again, choose the trunk series and specify your branch there16:43
dpmDirect link: https://launchpad.net/fooby/trunk/+linkbranch16:43
dpmAnother easy one done :)16:43
dpm4. Configuring imports and exports16:44
dpmThat's for me the most interesting bit16:44
dpmThe settings on this section basically enable Launchpad to do the work of managing translations for you16:44
dpmYou can tell Launchpad to import your translation templates automatically whenever you do a commit in your branch16:44
dpmSo you don't have to upload them manually16:44
dpmIf you are migrating a project with existing translations, you can tell it to import them too16:44
dpmAnd finally, you can let Launchpad commit translations automatically to a branch of your choice16:44
dpmI find that just awesome16:45
dpmSo for the imports, on the Launchpad page, on the "Import translations from branch" section:16:45
dpmI recommend choosing "Import template files" and then "Save settings"16:45
dpmFor exports: look at the "Export translations to branch" section and then click on the  "Choose exports branch" link16:45
dpmSo that was it!16:45
dpm4 easy steps that should not take you more than a few minutes to set up, and your app is ready for the world to translate!16:46
dpmJust a few final words:16:46
dpmPlay with translations16:46
dpm----------------------16:46
dpmAs a developer, it might be interesting to see how translators do their work.16:46
dpmExceptionally for this project (remember how I advised not to use Open permissions, tough :) I've set the translations permissions on the fooby project to Open16:46
dpmSo you can submit translations online16:47
dpmand get a feel for the work that translators do16:47
dpmAs a developer, it will give you an understanding on how they work. It is always interesting to get to know other workflows16:47
dpmand it's always good to have an insight on all areas of contribution related to your project16:47
dpmYou can start translating fooby here:16:47
dpmhttps://translations.launchpad.net/fooby16:47
dpmSo that was it really, it wasn't that hard, was it?16:48
dpmLet me give you a quick summary of what we've talked about and then take questions16:48
dpmSummary16:48
dpm-------16:48
dpmMost of the steps described here today you'll only need to do once, unless you need to change the settings. They were:16:49
dpm 1. Setting up code hosting (in case you hadn't already)16:49
dpm 2. Setting up translations in Launchpad16:49
dpm    2.1. Telling Launchpad that it's hosting your translations (https://translations.launchpad.net/fooby/+configure-translations)16:49
dpm    2.2. Configuring permissions: recommended -> Structured, Launchpad Translators (https://translations.launchpad.net/fooby/+settings)16:49
dpm    2.3. Setting up the translations branch (https://launchpad.net/fooby/trunk/+linkbranch)16:49
dpm    2.4. Configuring imports and exports (https://translations.launchpad.net/fooby/trunk/+translations-settings)16:49
dpmSo really, once your project is set up for translation, the only things you'll have to remember are:16:49
dpm  to update the template before a release,16:49
dpm  announce to translators that they can start their work,16:50
dpm  and merge the translations to your main branch.16:50
dpmIf you are using the same branch for translation imports and exports, you won't even have to do that!16:50
ClassBotThere are 10 minutes remaining in the current session.16:50
dpmok, so we've got 10 minutes left - if you've got any questions, bring them on! :)16:50
ClassBotjsjgruber_natty_ asked: ​ How can an application bring up a translation for a particular local "on-demand"? Now get the spanish version, now french version?16:50
dpmI'm guessing you're asking this for test purposes16:51
dpmin normal usage, the application will automatically load the translation for the right locale defined in the system16:52
dpmso if my desktop's language is set to Catalan, the app, assuming gettext has been correctly initialised in the code, will automatically load the Catalan translation16:52
dpmbut if you want an app to load another language, you can call the app on the command line specifying the language code, e.g.16:53
dpm$ LANGUAGE=de myapp16:53
dpmRunning that command would load the German translation of myapp ('de' is the ISO code for German)16:54
dpmother questions?16:54
ClassBotmatteonardi asked: how does translations get into users machines? Is there 1 (and only 1) package for each language? What if my application comes from a ppa?16:55
ClassBotThere are 5 minutes remaining in the current session.16:55
dpmtranslations get distributed and installed along with the application. On the technical level, translations are .mo files, one for each available translation in your app16:56
dpmIt does not matter if your application comes from a PPA16:56
dpmthe PPA will contain all the necessary .mo files, which means the translations will be installed on the system of everyone who installs the PPA16:57
dpmok, 3 minutes left, I can probably take another one if there is any16:57
dpmok, if there aren't any, the only thing remaining is to thank everyone for listening in and asking interesting questions, and I'll see you next time!16:58
dpmNext up is Kaleo, the man behind Unity 2D, who'll tell you all about how this awesome piece of software was put together17:00
dpmKaleo, as soon as the Classbot kicks in with the intro, the floor is yours!17:00
=== 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: The Making of Unity 2D - Instructors: Kaleo
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/09/06/%23ubuntu-classroom.html following the conclusion of the session.17:00
Kaleodpm: thank you David17:00
Kaleodpm: thank you everyone for joining this session17:01
Kaleodpm: My name is Florian Boucault17:01
Kaleodpm: and I am one of the software developers behind Unity 2D17:01
Kaleodpm: I would like that session to be as interactive as you guys would like17:02
Kaleodpm: so don't hesistate to ask any question at any time17:02
Kaleo(and I'll drop the dpm :))17:02
KaleoUnity 2D is essentially an implementation of the Unity user interface using Qt and QML17:02
Kaleoit reuses the same backend technologies used in Unity 3D17:03
Kaleoand intends to provide a UI that matches Unity 3D17:03
Kaleothe main goal of Unity 2D is to run on platforms that do not provide accelerated OpenGL17:03
Kaleoit also simplifies the development of the shell UI quite a bit17:04
=== raju1 is now known as genupulas
Kaleoit is made up of 4 UI components17:04
Kaleo3 of which you can see on the following diagram:17:04
Kaleohttp://people.canonical.com/~kaleo/classroom/unity_2d_wireframe.png17:04
Kaleo- the app launcher on the left17:05
Kaleo- the top panel with the application menu and the indicators17:05
Kaleo- the dash that is a UI to essentially search for content17:05
Kaleo- and the one not in the diagram, the workspace switcher17:05
Kaleothe workspace switcher allows user to switch between workspace, applications and windows17:06
Kaleoright now these 4 components are separate programs that are displayed on top of every other windows17:06
Kaleothey are written with QML17:07
Kaleoand use APIs defined in C++/QObjects in a common library called libunity-2d-private17:07
Kaleoa lot of these APIs just wrap other libraries, such as wnck, bamf, dee, etc.17:08
Kaleoand made these functionalities easily accessible to QML uis17:08
KaleoI can go into the details of what each library provides us with17:08
Kaleoif anybody has questions about that17:09
Kaleothese 4 components are fairly window manager agnostic17:09
Kaleotoday Unity 2D ships with Metacity17:09
Kaleobut it should work equally well with others: compiz, kwin, xfwm..17:09
Kaleohistorically Unity 2D's development started last year towards the end of the summer17:11
Kaleoand grew into being the default interface for ARM based Ubuntu isos17:11
Kaleodevelopment happens on Launchpad17:11
Kaleogetting started for developers is straightforward17:12
Kaleoand documented https://wiki.ubuntu.com/Unity2D17:12
Kaleoat*17:12
Kaleoeach component (dash, launcher, etc.) has a separate directory in the source tree17:12
Kaleoand can be hacked on independently17:13
Kaleothe policy for trunk is that it has to be releasable at any point;17:13
=== sergio91pt_ is now known as sergio91pt
Kaleothat means, no regression when introducing no features and only landing features that are ready17:13
Kaleoautomated builds are produced every day17:14
Kaleoand released into a PPA: https://launchpad.net/~unity-2d-team/+archive/unity-2d-daily17:14
Kaleo(connection issues here)17:16
Kaleofor developers who want to play around with it (or fix bugs)17:17
Kaleothe required knowledge to get on the project is:17:17
Kaleo- QML and Javascript for the UI pieces17:17
Kaleo- C++ if you want to add features that require new data that our backend does not provide17:18
Kaleoone thing to remember is that we try to keep the list of features between Unity 2D and 3D to be synchronised17:18
Kaleoso if you have an idea about the UI, don't forget that it needs to be done in both17:19
KaleoI think that's enough for the general presentation.17:20
KaleoDo you guys have any specific question?17:20
Kaleolet me take Andy80's :)17:20
KaleoAndy80: we have a wrapper for indicators as well17:21
KaleoAndy80: it's a C++/Qt API that calls the API of the unity-panel-service17:21
KaleoAndy80: and essentially gives us a list of indicators to render17:21
ClassBotAndy80 asked: do we have a wrapper for indicators too or are we just calling the original methods?17:22
Kaleo(thanks ClassBot)17:22
Kaleoanybody else? :)17:24
ClassBotdpm asked: which libraries should an app developer wanting to interface his/her app with Unity 2D should know about?17:24
Kaleoso, dpm, the integration into Unity 2D is the same as the integration into Unity 3D17:25
Kaleoonce you have done it for one you have done it for both17:25
Kaleothe libraries concretely are libunity17:25
Kaleoyou can integrate with the launcher with that17:26
Kaleoyou can also create a lens to add content to the dash (for example the Gwibber lens)17:26
Kaleofinally you can also integrate with the top panel's indicators17:26
Kaleothe way Banshee is integrated for example17:26
Kaleoin the sound menu17:27
Kaleodoes that answer the question?17:27
ClassBotmohammedalieng asked: are there any plans to provide desktop gadgets, specially it is the default interface for ARM devices ?17:28
Kaleomohammedalieng: there are no concrete plans so far for desktop gadgets17:28
Kaleomohammedalieng: right now if one needs them I would personally recommend to use KDE's "gadgets"17:29
Kaleothat is the Plasma ones17:29
Kaleoit fits well technology wise with Unity 2D as it uses QML as well17:30
ClassBotAndy80 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 develo17:30
KaleoAndy80: I essentially agree with that17:31
Kaleoto add on that on a technical level17:31
Kaleothe visual possibilities of QML today are pretty advanced17:31
Kaleoespecially on the effects side17:31
Kaleothe only limitation today is on the 3D side of things17:31
Kaleoonly rudimentary 3D is available17:32
Kaleowhich is a gap that can be closed with Qt Quick 3D17:32
KaleoI have experiments of integrating 3D objects and scenes into the launcher and the dash17:32
Kaleoit works fairly well17:32
Kaleoon the performance side, we are already pretty good with the rendering engine we enforce the use of, raster17:33
KaleoUnity 2D also works with the OpenGL2 engine17:33
Kaleoand we are quite looking forward to migrating to QML217:33
Kaleothat will provide very nice performance improvements17:33
Kaleoby adding a better rendering model when it comes to OpenGL and modern GPUs17:34
Kaleothe important thing to remember here is that:17:35
Kaleo1) we are not limited by QML UI-wise (we can use Qt Quick 3D or even write our own OpenGL based QML ui elements)17:35
Kaleo2) the QML code we write today for QML1 will work in the future without changes with QML2 and QML3D17:36
KaleoAndy80: does that answer the question?17:36
KaleoAndy80 asks: "what are we waiting for?"17:37
Kaleowe are waiting for you :)17:37
Kaleothere is quite a lot of invisible work happening in Unity 2D17:38
Kaleothat takes quite a bit of our attention17:38
Kaleo(we are just 3 developers today)17:38
Kaleofor example, supporting multi monitor properly17:38
Kaleoright-to-left languages17:38
Kaleolanguages that need special input methods17:39
Kaleofixing important bugs :)17:39
Kaleoso, developers are of course always available17:40
Kaleoon freenode #ayatana17:40
Kaleoand for those lucky ones going to UDS17:40
Kaleothey will be happy to spend time with those interested17:40
Kaleowe will have a session as well planning for Ubuntu P17:41
ClassBotdpm asked: what are the issues with right-to-left languages? Is it a matter of QML not supporting them well?17:41
Kaleodpm: the issue was indeed that QML was not supporting them well17:41
Kaleodpm: so, we had a first shot at it working around that limitation17:41
Kaleobut now Qt 4.7.4 is out with Qt Quick 1.1 that supports natively RTL languages17:42
Kaleoso we are mostly in the clear now17:42
Kaleoin Oneiric we will support them decently17:42
Kaleoanother example of invisible work is accessibility support17:42
Kaleocritical for us as Unity 2D is becoming the default desktop on Ubuntu Oneiric where Unity 3D cannot run17:43
KaleoI like to see Unity 2D as the universal version:17:43
Kaleo- works everywhere17:43
Kaleo- works for everybody17:44
Kaleo(all machines, all cultures, all needs)17:44
Kaleothat's being a bit idealistic of course :)17:44
=== yofel_ is now known as yofel
Kaleothanks for the question dpm17:44
=== bulldog98_ is now known as bulldog98
ClassBotrsajdok asked: Is there the list of new feature which will be added to Unity-2d in future?17:47
Kaleorsajdok: 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 them17:48
Kaleorsajdok: https://bugs.launchpad.net/unity-2d/+bugs?field.tag=delta-with-3d17:48
Kaleorsajdok: 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+Committed17:49
Kaleofor those who want to start easy to learn how it works inside and implement something not too difficult17:49
Kaleowe use the bitesize tag17:49
Kaleohttps://bugs.launchpad.net/unity-2d/+bugs?field.tag=bitesize17:50
ClassBotThere are 10 minutes remaining in the current session.17:50
Kaleothanks ClassBot17:51
Kaleoalright folks, just a few minutes for more questions17:53
ClassBotAndy80 asked: are you aware if any other distro is interested in Unity/Unity-2d? This could bring more contributions to the project17:54
KaleoAndy80: I know somebody contacted us to package it up in OpenSuse17:55
Kaleobut that's the extent of my knowledge17:55
ClassBotrsajdok asked: Are there bugs in pure javascript?17:55
ClassBotThere are 5 minutes remaining in the current session.17:55
Kaleorsajdok: yes, it happens often that the issues can be fixed with a bit of QML + javascript17:56
ClassBotrsajdok asked: How find these bugs?17:58
Kaleorsajdok: unfortunately we don't have such a list readily available17:58
Kaleorsajdok: you will have to try I am afraid17:59
KaleoI think it's time for me to leave the stage to Curtis Hovey17:59
dpmThanks a lot for a great session Kaleo!18:00
Kaleo:)18:00
Kaleothanks dpm, thanks for the questions everybody18:00
=== 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: Making App Development Easy: Gedit Developer Plugins - Instructors: sinzui
dpmNext up Launchpad legend Curtis Hovey will talk about his developer plugins for Gedit18:00
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/09/06/%23ubuntu-classroom.html following the conclusion of the session.18:00
sinzui What is gedit?18:06
sinzuigedit is a simple text editor18:06
sinzui with support for syntax highlighting18:06
sinzui that can be extended for new uses18:06
sinzuiSee https://live.gnome.org/Gedit to see a full list of features18:07
sinzuigedit ships with plugins to help power-users18:07
sinzui The gedit-plugins package for provides tools to help developers18:07
sinzui Many developers provide extra plugins for specific development18:07
sinzuiSee http://live.gnome.org/Gedit/Plugins for a list of plugins supported by gedit 3.x18:08
sinzuiDevelopers will want to install a few packages from Ubuntu universe to get the set of plugins that I recommend and use.18:09
sinzuiUsing Software Center18:09
sinzuiSearch gedit plugins18:10
sinzuiShow technical items18:10
sinzuiinstall gedit-plugins, gedit-developer-plugins18:10
sinzuiEdge and bleeding edge archives provide fixes18:10
sinzuiand features several weeks ahead of Ubuntu18:10
sinzuiuniverse18:10
sinzuippa:sinzui/ppa for what I will propose for Ubuntu, and ppa:sinzui/gdp-unstable for what is being tested--can be dangerous18:11
sinzuiGedit must be configured for development and to use plugins18:12
sinzuiEdit > Preferences > View18:12
sinzui* View margin and line numbers18:12
sinzui* Highlight the line and18:12
sinzui* matching bracket18:12
sinzui* Disable text wrapping18:12
sinzuiEdit > Preferences > Editor18:13
sinzui* Set the tab width to 4 or 8 spaces per the project you are working on18:13
sinzui* Insert spaces instead of tabs18:13
sinzui* Enable automatic indentation18:13
sinzuiEdit > Preferences > Plugins18:14
sinzuiEnable: Bookmarks,18:14
sinzuiCode comment, Draw18:14
sinzuispaces, File browser,18:14
sinzuipanel, GDP Bazaar18:14
sinzuiintegration, GDP Find,18:14
sinzuiGDP Format, GDP18:14
sinzuiSyntax, Completer,18:14
sinzuiModelines, Snippets,18:14
sinzuiSort, Spell Checker18:14
sinzui^ that is only half of the plugins that are installed. There are others that you may want18:14
sinzuiThere are also competing and overlaping plugins. notably Word Completion, Snippets, and GDP Syntax Completer18:15
sinzuiThe Draw spaces plugin requires additional configuration to work18:16
sinzuiUse the Preferences18:16
sinzuibutton in the Plugins18:16
sinzuitab to set the kinds18:16
sinzuiof white-space you18:16
sinzuiwant to see:18:16
sinzuiEnable/disable the plugin using Menu > View > Show white space18:17
sinzuiGDP Syntax completer plugin18:17
sinzuiUse Alt+/ to view a list of candidates to replace the text being typed:18:17
sinzui* Python identifiers18:17
sinzui* Open or used xml tags18:17
sinzui* Words in the document18:17
sinzui^ Alt+/ is not convenient, but it avoids the conflicting accelerator issue upstream18:18
sinzuiGDP find and replace plugin18:19
sinzuiSearch multiple files within a directory Filter on sub-directory or file name fragment18:20
sinzui* Use regular expressions18:20
sinzui* Match case18:20
sinzui* Replace in multiple files (supports REs)18:20
sinzui* Save the list of matches18:20
sinzuiThe plugin appears in the right panel.18:20
sinzuiYou can show the side panel from using F9, or Menu > View > Side panel18:21
sinzuiThe find and replace actions are also in the Search menu18:21
sinzuiGDP formating and syntax/style checking18:22
sinzuiMenu > Tools > Check style and syntax reports errors and issues in one of more files being edited18:23
sinzuiThere is special support for Python, Javascript, and CSS18:23
sinzuiwhere syntax errors are reported18:24
sinzuiThere are actions under Menu > Tools to reformat CSS and doctest files18:24
sinzuiMenu > Edit > Format provides18:25
sinzui* text rewrapping18:25
sinzui* Fix line ending18:25
sinzui* tabs to spaces18:25
sinzui* regular expression inline reformatting18:25
sinzuiGDP Bazaar integration18:25
sinzui* Branch, edit, commit, and push bazaar projects.18:26
sinzui* bzr-gtk is used to visualize the files and tree18:26
sinzui* Work with SVN, HG, and git branches when the proper bzr plugins are installed18:26
sinzuiI also use Source Code Browser pugin: A source code class and function browser based on Exuberant Ctags18:28
sinzuiSee https://github.com/Quixotix/gedit-source-code-browser18:28
sinzui^ This, like my own gedit-developer-plugins is transitioning to Gedit 3.x plugin architecture18:29
sinzuiSome features of the plugins there are available in natty are not available at this moment in oneiric18:29
sinzuiIf you are using oneiric, you may have noticed that all plugins in gedit, totem, rhythmbox, and any other libpeas-based application were broken. This was fixed in the last 24 hours18:31
sinzuibzr-gtk is being updated the gtk3. We may see a package for testing this week18:31
* sinzui is doing the conversion18:32
sinzuiThe 4 gdp plugins are broken in oneiric with the libpeas fix. I have a fix and it will be released to my unstable ppa in a few hours18:33
sinzuiThe source browser plugin could do more. It shows the tags for the open file, but it does not yet allow you to search a tags file for a project.18:34
sinzuiThat is all I have to present. I know quite a bit about gedit, its underlying libraries, plugins, and bzr-gtk. I can answer question on these topics18:35
sinzuibulldog98: there is a vi mode plugin for gedit 2.x18:44
=== Andy80 is now known as Andy80-Owl
sinzuimohammedalieng: keyboard shortcuts can be enabled for ALL gtk applications by hacking a gconf/dconf config key18:45
sinzui The feature is essentially gtkrc accelerator configs files18:45
sinzuishazzner: gdp syntax completer will complete python and show the ptyhon help(). It needs refinement18:46
sinzuishazzner the display window is broken upstream (in the gtk source view complete code). I am working on a work around or an upstream widget fix18:47
sinzuidpm: gedit-developer-plugins has been in universe since natty and I update it when I see development break. It broke this morning. I already have a fix pushed. I will build and test the package today!18:49
sinzuiI think I have answered everyone's question18:49
ClassBotThere are 10 minutes remaining in the current session.18:50
sinzuibulldog98, gvim (gtk-version) uses gtksourceview2 (the gedit display lib).18:50
sinzuiThe core gedit app adds undo, find and replace, and plugin support to the core lib18:51
sinzuiSo gvim just marries gedit display rules with vim's editing rules18:52
sinzuishazzner: one other point. There is a tab/control+space accelerator conflict in Gedit. There is one completer module that other modules provide for, but there was not mechanism to manage which provider is activate.18:54
sinzuiI use GDP Syntax Completer and snippet, so I choose the awkward Alt+/ combination :(18:55
ClassBotThere are 5 minutes remaining in the current session.18:55
=== 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: Publishing Your Apps in the Software Center: the MyApps Portal - Instructors: achuni
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/09/06/%23ubuntu-classroom.html following the conclusion of the session.19:00
achuniok, I guess that's me :)19:00
achuniHi everybody, I'm Anthony Lenton19:01
achuniI work at Canonical, in ISD.  We're the team responsible for the development of Ubuntu SSO, Ubuntu Pay, and quite a few other smaller infrastructure-related systems19:01
achuniWithin ISD I'm leading the team that is in charge of the Software Center Server19:01
=== Andy80-Owl is now known as Andy80
achunithat includes ratings and reviews, the software center agent, and the MyApps portal19:02
achuni... for those of you that are unfamiliar with the MyApps portal, it's what sits at https://myapps.developer.ubuntu.com/19:02
achuniwe're currently in public beta, so you can create an account and play around with it19:02
achuni(please let us know what breaks! :) )19:02
achunialso, apologies up front if I incorrectly call MyApps "the devportal" or "the developer portal"19:03
achuniWe started clalling it that during development, hence the name of the project on Launchpad, https://launchpad.net/developer-portal19:03
achuniClearly *the* developer portal is developer.ubuntu.com, this awesome bucket of knowledge dpm and johnoxton are going to tell us all about right here on Thursday at 16UTC19:04
achuniMyApps is the part of developer.ubuntu.com that takes care of the submission workflow to get your apps published in the Ubuntu Software Center19:04
achuniso... my plan is to tell you a bit of the story of MyApps, and go over the current workflow19:04
achunithen tell you a bit about the most immediate milestones in our roadmap, and answer a few questions19:05
achuni(yay, none so far :) )19:05
achuniWe started with myapps after UDS-N, end of last year-ish, as a way to make it easier for developers to get their (paid) apps into USC19:06
achuniwe had already had for-purchase apps in USC for just over six months by then19:06
achuniand we still had only a bunch of (not quite 10 iirc) apps available for purchase19:06
achuniAdding new apps was a painfully manual process, for all parts involved.19:07
achuniContacting and arranging an agreement with the developer was done manually, they'd send us the app somehow and we'd manually package it up19:07
achuniA sysadmin would then manually make it available for sale.  Canonical's finance department would get a monthly report of sales and (manually!) send developers the right amount of money19:07
achuniWe knew if we wanted to make this scale to tens of thousands of apps, we would need to remove all or as many as possible of the manual steps in this process.19:08
achuniso, what's up on https://myapps.developer.ubuntu.com/ is what we currently have.  There's still quite a few of manual pieces involved19:09
achunibut the plan is to get it fully automated in the future19:09
achuniOnce you've created an account and accepted the terms of service on that site, you can go straight in and submit an application for review19:09
achuni(not sure if it's best for you to do that now, this was going to be a more of a hands-on session but in the end it's more of a talk-and-screenshots session :) )19:10
achunianyway...19:10
achuniThe submission workflow currently has five steps (or six, depending on how you count)19:10
achuni - basic details of your app (name, tagline, price, and upload the actual code)19:11
achuni- Finding your app (description, keywords, and in which USC department it belongs)19:11
achuni(  USC is Ubuntu Software Center there ^)19:11
achuni- Showing your app (Screenshot and icons)19:11
achuni- License and support (Type of license and support url)19:12
achuni(Ok, yes, these had no real reason to be together in the workflow)19:12
achuni- Getting paid (your paypal email, phone number and a postal address for contacting you at)19:12
achuniAfter that, the sixth step would be to just check the details and submit the app for review.19:13
ClassBotbulldog98 asked: when will it be possible to use a Qt based SSO19:13
achunibulldog98: hm you mean like the current ubuntu-sso-client that's gtk only? I don't know of a project that does that19:14
achunibulldog98: sso provides an api, the current gtk client was developed by U1 because it suited them best, but you can also use the API directly19:14
achunibulldog98: I'm not sure how the different bits ussoc does would map to Qt, but it shouldn't be impossible to write such a client at the moment already19:16
achunibulldog98: but I'm afraid I don't know of a project for doing that atm19:16
ClassBotshazzner75 asked: Any chance for alternate payment methods? Google Checkout, etc?19:16
achunishazzner75: for purchasing apps, or for paying developers?  there are plans to add new payment methods for both, but a bit longer term  :)19:17
achuninot sure if Google Checkout is on the roadmap19:18
achunianyway, this is what you'd see when you finish providing the details for your app:19:18
achunihttp://ubuntuone.com/6FfqFGgGnNucVS6PiBma7T19:18
achuniWhen you submit an app for review, application reviewers are notified via email currently.  They'll pick it up pretty soon19:19
achuniPackaging the app is still carried out manually at the moment19:19
achuniThough as jml mentioned yesterday, we're working on integrating pkgme that should automate most of that process19:20
achuniOnce the application has been reviewed and uploaded we do some basic QA to ensure that, if it's made public, purchases will go smoothly and the app will launch successfully when installed.19:20
achuniThis isn't intended to be QA of the application itself (beyond checking that some app actually launches), though very often we get feedback on the app itself during QA.19:21
achuniIf at any point the reviewer has some question, or there's some missing bit of information in the app, the app will be passed back to the developer as "Needs Information".  You can then modify your app with the right information, and resubmit for review19:21
achuniYou can always see the full review feedback history for an app in the "Feedback" tab19:22
achuni(screenshot coming...)19:22
achunihttp://ubuntuone.com/3bVuC7ZqIGEtTiXpe65zBb19:22
achuniSo, assuming the application passes review, the app is *still* not automatically published in USC.19:22
achuniIt's flagged as "Ready to publish", and you (the developer) can then decide when it actually goes public.19:22
achunihttp://ubuntuone.com/7b97CAI3581sVHg6XpIHw819:23
achuniWhen the developer clicks "Publish" it's made public immediately, except for caching in the api and USC.19:23
achuniBut it'll be really live and out there in USC worldwide in a few minutes.19:23
achuniThe developer can also decide to unpublish an app at will once it's made public.  This will remove the application from USC immediately so taht nobody else can purchase it19:24
achuniUsers that have already purchased *will* still be able to download and/or reinstall the app.19:24
achuniAlso, at any point, you can look at the sales information for your app in the "Metrics" tab19:24
achunihttp://ubuntuone.com/0bbI5tMJ11HSnWJOooxk5N19:24
achuniSo... upcoming features and things we're working on:19:25
achuni- Reviewer notes! At the moment you can't provide notes for the application reviewer along with the app19:25
achuniyep, silly, but we're on it :)19:25
achuni- pkgme integration.  This is the automated packaging that jml went into details about yesterday.19:26
achuniThat'll be *great* to have as packaging the app is one honking big piece of manual work that's still necessary19:26
achuniand we need to rely on the developer to provide packaging files, or the reviewer has to create them from scratch every time19:26
achuni- ARB integration.  In the future free (libre and gratis) apps that are currently being reviewed by the Application Review Board will also be submitted through MyApps.19:27
achuniThis will make things clearer, simpler and generally better for developers as you'll have a single place to submit your apps for publishing in USC.19:27
achuniStay tuned for stgraber's session about the ARB, coming up next :)19:28
stgraberyeah!19:28
achuni:D19:28
achuni- license key infrastructure.  ...19:29
achunithis is almost a topic for another talk, but in a nutshell, you'll be able to provide batches of keys for your app19:29
achunithose will be served up one per purchase, and stored in a file locally for your application to check19:29
ClassBotshazzner75 asked: how do updates work? ie. developer pushes out new version, will it be available immediately or next Ubuntu cycle? What about free/libre apps?19:30
achunishazzner75: so, we're still figuring out some of the details, but you don't need to wait for the next Ubuntu cycle19:30
achuniI mean, new versions are easier: they go through review as usual, and as soon as the reviewer uploads the fix, anybody that's purchased the app will get the update with the next batch of updates19:31
achuniwhen a new Ubuntu cycle comes along, the app will be repackaged for this new distroseries, and uploaded, so people that have purchased the app should still have it when they upgrade19:32
achuni(the bit that's tricky is apps that work in one version of Ubuntu but not in the next.  currently those users will be update-less until the app is fixed for the new release)19:33
achuniwow, and that's about it.19:34
achuniso, the upcoming plan is to fix bugs, polish and add awesomeness.19:35
achunibe sure to tune in for dpm's and johnoxton's session on Thursday about the general developer.ubuntu.com portal19:35
achuni...and jpugh's session on Friday for any questions about the business side of things.19:35
achuniQuestions?19:36
ClassBotshazzner75 asked: Can you specify things like system requirements? (like for 3d games)19:37
achunishazzner75: so, currently the only way to do this is to include a debian control file with your code19:38
achunishazzner75: the grand plan is to allow you to do that in a friendlier way that works well with pkgme19:39
achuniso pkgme will "guess" your system dependencies19:39
achuniah, you mean *system* dependencies19:39
achunihm... :)19:39
achuninot that I know of, not currently, but that would be quite interesting19:40
achuniI mean, software-center would need to perform the checks on the user's box, but it would make sense19:40
achunishazzner75: right, as in "at least so much RAM", or "these graphic cards aren't supported"19:41
achunishazzner75: so far we've seen comments about system requirements in the application descriptions19:41
achunishazzner75: but the system doesn't allow you to specify those in a more structured manner I'm afraid19:42
achuni(...yet! :) )19:42
ClassBotshazzner75 asked: since I'm asking questions here, is there any policy about android-like usage of user-data or resources? (notifications, email, connects to web, etc)19:45
achunishazzner75:  I'm not really aware of the android policy... I'd pop that question at jpugh on his Friday session19:46
ClassBotshazzner75 asked: another question, apologies if this has been answered, when submitting a proprietary app. So you submit it as a binary (like jar file) or as source code to be packaged?19:49
achunishazzner75: it hasn't been answered, and thanks for asking :)19:50
ClassBotThere are 10 minutes remaining in the current session.19:50
achunishazzner75:  you can submit it as a binary (jar file, elf or whatever), no need to submit the source code19:50
achunishazzner75: for proprietary apps that is19:51
achunishazzner75: for libre apps going in for ARB review I imagine they'll expect to see the source code available :)19:51
ClassBotThere are 5 minutes remaining in the current session.19:55
achuniok, I think we're done then.  thanks everybody for joining!  stay tuned for stgraber, coming up next, don't go far :)19:56
=== 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: Publishing Your Apps in the Software Center: The App Review Board - Instructors: stgraber
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/09/06/%23ubuntu-classroom.html following the conclusion of the session.20:00
stgraberHey everyone!20:02
stgraberI'm Stéphane Graber, one of the members of the Ubuntu Application Review Board (ARB).20:02
stgraberDuring this session I'll try to introduce you on what the Application Review Board does and how it can help you get your apps in Ubuntu.20:02
stgraberI'll also try to explain the difference with some of the other ways of getting your apps in Ubuntu.20:02
stgraberAs I don't expect to have enough content to entertain you for an hour, please don't hesitate to ask questions, I'll be glad to answer them!20:03
stgraberPlease note that my Internet is a bit laggy at the moment if I disconnect or don't react for a few minutes, that's "normal" :)20:03
stgraberLet's get started!20:03
stgraberSo, what's the Ubuntu Application Review Board?20:03
stgraberIt's a team of 4 community members, Allison Randal, Andrew Mitchell, Shane Fagan and myself.20:03
stgraberOur responsability is to review Apps that are submitted for a stable release of Ubuntu and that are open source and gratis.20:03
stgraberApps going through that process are usually small standalone apps, ideal examples are small apps made with Quickly.20:04
stgraberThe board offers assistance with the packaging of these apps, making sure they conform to our rules (such as installing in /opt) and once they are good to go, vote on them and get them into the Ubuntu Software Center.20:04
stgraberSome more details on what's needed for an App to go through the ARB process can be found at: https://wiki.ubuntu.com/AppReviews20:04
stgraberand some others at: https://wiki.ubuntu.com/AppReviewBoard/Submissions/Request20:05
stgraberThe current list of apps in the process can be found on Launchpad: https://launchpad.net/ubuntu-app-review-board20:05
stgraberSo far we had two apps going through the process and available for Ubuntu 10.10. News and Suspended Sentence20:06
stgraberIt's also worth noting especially after's achuni's session on MyApps that the ARB is now working on switching the process to using MyApps as the single entry path for post-release Apps.20:06
stgraberWe hope in the near future to drop Launchpad from our review process and have everything happen on MyApps and have all our documentation on the development portal.20:06
stgraberAny question so far?20:07
stgraberApparently not20:09
stgraberSo how's that different from the other ways of getting your software in Ubuntu?20:09
stgraberAs you may know, there are a lot of different ways of getting a software in Ubuntu, here are the few I can think of.20:09
stgraberFor Open Source / Free software (and gratis), you can have it enter the archive through:20:09
stgraber - Debian and then synced into Ubuntu during the development cycle (before the Feature Freeze)20:09
stgraber - Directly uploading to Ubuntu during the development cycle (before the Feature Freeze)20:10
stgraber - After the release by getting it in Debian or Ubuntu's development version and requesting a backport20:10
stgraber - Through the Application Review Board20:10
stgraberFor Proprietary apps, you can go with:20:11
stgraber - Canonical partner apps (my understanding is that it's case by case and only for gratis software)20:11
stgraber - For purchase apps in the Ubuntu Software Center.20:11
stgraberI'm only going to focus on what I know quite well which is the process for open source software.20:11
stgraberThe usual recommendation is for developers to get their package into Debian and either maintaing them themselves there or finding someone who can maintain them.20:12
stgraberThis is great because the maintainer is going to take care of most of the work and you can usually just focus on your "upstream" work.20:12
stgraberThis only works if you plan enough time ahead as you need to get your software into Debian, then synced in Ubuntu (happens automatically early in the cycle) and that's only available until the Feature Freeze.20:12
stgraberIf your package is specific to Ubuntu or you don't want to deal with Debian (or don't have the time to), you can get it directly in Ubuntu as long as it's uploaded before the Feature Freeze.20:13
stgraberMore details can be found at: https://wiki.ubuntu.com/UbuntuDevelopment/NewPackages20:14
stgraberIf you missed the Feature Freeze, you can still get your software in Debian so that it's available as soon as the next Ubuntu release opens. Or you can wait for the next Ubuntu release to open and get it uploaded directly to Ubuntu.20:14
stgraberOnce the package is in the development release, you can ask for it to be backported.20:14
stgraberMore details on backports are at: https://help.ubuntu.com/community/UbuntuBackports20:15
stgraberAnd finally, if you're just interested in quickly getting your app available post-release and want to be the one maintaining it, the ARB process is definitely for you.20:15
stgraberYou'll need to submit your app for every version of Ubuntu you want to support and will have to do the same for any update you want to push to your users.20:15
stgraberIt's also worth noting that we don't automatically upload your apps to a new version of Ubuntu, you need to re-apply for that.20:15
stgraberI guess that should give a pretty good overview of the possible ways of getting an app in Ubuntu.20:16
ClassBotshazzner75 asked: I remember before users had to add a certain repository to add in post-release apps, is that still the case? (I may be remembering this wrong)20:17
stgraberthe extras.ubuntu.com repository is automatically added at installation time20:18
stgraberI seem to remember there's a specific installation path where you don't get it though, but in most cases you should have it enabled20:19
stgraberit's worth noting that there currently aren't any app in Natty's extras.ubuntu.com repository20:19
ClassBotshazzner75 asked: Can we submit libre apps to be reviewed if we are not the owner? ie. small abandoned software under GPL?20:20
stgraberI don't think we ever got that case yet.20:21
stgraberOne of the difference from the other ways of getting your package in Ubuntu is that we won't maintain your software, you'll.20:21
stgraberand that's why we usually prefer to have the upstream do it as they're the one who're the most able to fix any bug or security issue in their software20:22
stgraberthat being said, if the app's upstream is dead and you want to "adopt" it and take care of any issue that might appear, I don't think it'd be a problem20:22
stgraberin the case where we get a security issue or other critical bug in a software that's in extras.ubuntu.com20:23
stgrabera board member will quickly try to fix it on a best effort basis, then contact the upstream to get a fix ASAP20:23
stgraberand if the upstream isn't responsive and it's a critical bug (remote execution comes to mind), then the app will be removed from the repository and from our users' system (by pushing an empty package with a changelog entry indicating what the problem was)20:24
stgraberthis is quite different from the other ways of getting a package in Ubuntu as you'd otherwise get the Ubuntu Security team or Ubuntu MOTU taking care of these issues20:25
stgraberany other question?20:25
stgraberok, so let's continue. I only have for a few more minutes of content, so don't hesitate to ask questions in #ubuntu-classroom-chat20:27
stgraberBefore I'm done talking, I just wanted to list some of the things the ARB is working on to make it easier for you to get your app in Ubuntu.20:27
stgraberWe noticed that our current process is quite long, has quite a few annoying bottlenecks and requires quite a lot of energy from our members.20:28
stgraberFortunately for us we haven't got too many submissions so it hasn't been much of a problem.20:28
stgraberStill we've been discussing of a few ways to get the whole process a lot more efficient so we can handle a lot more apps once we have a better infrastructure to attract app developers.20:29
stgraberAs achuni mentioned in -chat earlier, I'm the upstream of a tool called Arkose that allow easy containing of apps.20:29
stgraberIt can offer something quite similar to what you get on your Android phone with a list of actions that the app is allowed to perform.20:30
stgraberI'm currently investigating the use of that tool to make the reviews go a lot faster as we won't have to do a full code review.20:30
stgraberOur current review process includes a full code review of every app by a member of the ARB. This requirement means we're not able to review really complex apps or apps written in some languages.20:31
stgraberHaving Arkose or Apparmor (ideally I'll have apparmor supported in arkose soon) profiles for these apps mean that the ARB can just review the safety of the profile and do targeted code audit, avoiding the very long full audit.20:32
stgraberAnother tool I'm working on is a debhelper script that you can use to basically automatically package your app so that it's compliant with the ARB policy.20:32
stgraberIt basically makes sure everything is in /opt, adapts any .desktop file you ship and uses a small helper to make your app think it's running in /usr20:33
stgraberMy long term goal is to have everything done through MyApps, where you'd send a tarball of your code and a small build recipe.20:33
stgraberThen you'd be asked to set where your app stores its data, what DBUS APIs you need to access, physical devices, network, ...20:34
stgraberthat'd be used to generate an Arkose or Apparmor profile (or both)20:34
stgraberSend copyright information, description, screenshot and click Send.20:34
stgraberBased on that a package can be entirely automatically generated, reviewed in a few minutes by an ARB member and then made available to everyone in the Software Center.20:35
stgraberReducing the submission time from a few weeks (our current average ...) to a few hours.20:35
stgraberI believe this would work quite well for simple apps that don't need complicated packaging and would save the developer a lot of time that they could instead invest in improving their app.20:36
stgraberAnd I'm now officially done talking, so if you have any remaining question, please ask in #ubuntu-classroom-chat!20:37
ClassBotThere are 10 minutes remaining in the current session.20:50
ClassBotThere are 5 minutes remaining in the current session.20:55
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2011/09/06/%23ubuntu-classroom.html21:00
=== 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 ||
stgraberthanks everyone for attending today's sessions!21:02
=== medberry is now known as med_out

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!