/srv/irclogs.ubuntu.com/2013/01/30/#ubuntu-classroom.txt

=== retrograde is now known as void
=== void is now known as res
=== res is now known as __-_
=== __-_ is now known as _-_
=== _-_ is now known as Guest66797
=== Guest66797 is now known as __--
mofiumHey there, I'm doing the yesterdays first session atm wonder what's the difference between changelog.dch09:32
mofiumand the normal changelog file09:32
mofiumby running "dch -i" the first time it created and opened changelog.dch, but after building the package the changelog sais the last edit was done by  holbach although I left my log09:34
mofiumrunning the dch-i again resultes in the following error09:35
mofiumdch: fatal error at line 757:09:35
mofiumThe backup file debian/changelog.dch already exists --09:35
mofiumplease move it before trying again09:35
=== yofel_ is now known as yofel
=== Dragan is now known as Guest41797
=== dpm_ is now known as dpm__
=== dpm__ is now known as dpm
tuxfan_No work today waiting for next class!Hi everybody!14:48
IdleOnestarting in 11 minutes14:49
smartboyhw10 minutes!14:50
JoseeAntonioRhey guys, we're starting in a short while!14:50
Marinhello all :)14:50
wei2912JoseeAntonioR, great :D14:51
wei2912i've been idling here waiting for a class to start14:51
* rick_timmis waves14:51
rick_timmisBRB, Just go grab a coffeee14:51
tuxfan_and RIM is presenting BB10 right now :)....14:53
wei2912:)14:53
wei2912btw, i'm curious about what will happen during the class?14:53
tuxfan_Is it app development today?14:53
wei2912should be.14:54
wei2912should be starting soon, How to write apps for Ubuntu.14:54
wei2912(great coincidence that this is the class i was planning to listen to)14:54
tuxfan_4 mins to go :)14:56
wei2912tuxfan_, do we just listen to the class, or can we ask our questions while the class is ongoing?14:56
IdleOnewei2912: you can ask questions in #ubuntu-classroom-chat14:57
JoseeAntonioRWELCOME EVERYBODY!14:57
JoseeAntonioRThis is day 2 of Ubuntu Developer Week and if you're completely new to the the event, you might want to check out https://wiki.ubuntu.com/UbuntuDeveloperWeek to review the schedule. This is also the place where logs and links to videos will be posted after the sessions.14:57
wei2912IdleOne, thanks14:57
JoseeAntonioRIf you want to ask questions and join the conversation about the sessions, please make sure you also join #ubuntu-classroom-chat14:58
JoseeAntonioRWhen you ask questions, please make sure you prefix them with QUESTION: otherwise they will not be picked up.14:58
* rick_timmis waves14:58
wei2912great...14:58
JoseeAntonioRWe're starting in just a couple seconds! Have fun today!14:59
wei2912have fun everyone14: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: Ubuntu Developer Week - Current Session: How to write apps for Ubuntu - Instructors: dpm
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html following the conclusion of the session.15:01
dpmhi everyone!15:02
dpmWelcome to this introductory session on writing apps for Ubuntu15:02
dpmaka the first step to becoming a full-blown Ubuntu App Developer :)15:02
dpmFor those of you who don't know me, I'm David Planella,15:03
dpmand I work as the Ubuntu App Development Liaison in the Community team at Canonical.15:03
dpmIn the past I've work as Ubuntu Translations Coordinator as well,15:03
dpmbut these days I'm more focused on our App Developer story.15:03
dpmApp Development is an exciting territory, and I hope you enjoy it as much as I do :)15:04
dpmWhat we are going to see today is a very gentle but quick-paced introduction to15:05
dpmwriting apps for Ubuntu, both on the desktop and for the phone.15:05
dpmThe idea is to get you familiar with the tools and processes to use and to follow throughout your app's lifecycle, which hopefully will whet your appetite for more :)15:05
dpmI'll be focusing on the desktop story for now, but I will talk a bit about app development for the phone with our preview SDK at the end.15:06
dpmThis is an area that you all probably have heard about, and you probably also know that it's changing, evolving and getting defined very rapidly, but I'll give you the lowdown of the tools available to app devs today.15:07
dpmI'll also be directing you to the right places to ask for help15:07
dpmThe way the session will be structured will be a bit like the developer journey on the app developer site at developer.ubuntu.com,15:07
dpmso it will be similar to a tour through the site,15:08
dpmwhich is the place you'll generally go to whenever you need more information or whenever you submit an app to ultimately be published in the Software Centre.15:08
dpm 15:08
dpmSo something like:15:08
dpm 15:08
dpm1. Get started15:08
dpm2. Resources15:08
dpm3. Publish15:08
dpm4. Community15:08
dpm 15:08
dpmOh, and the developer site is, of course, at http://developer.ubuntu.com :)15:09
dpmGo and check it out :)15:09
=== sabayonuser3 is now known as geryon6
dpmThe time is limited, so we'll go into more detail into the more practical step of getting started, which is more fun,15:09
dpmand we'll just say a few words on the other steps.15:09
dpmIf you've got questions during the session, feel free to ask at any time!15:10
dpmjust do it on #ubuntu-classroom-chat and prepend them with QUESTION:15:10
ClassBottuxfan_ asked: mobile application too?15:10
dpmYes, we'll see a bit about mobile apps too :)15:10
dpmSo,15:11
dpmlet's roll!15:11
dpm 15:11
dpmDeveloping apps on the desktop15:11
dpm==============================15:11
dpm 15:11
dpmThe tools15:11
dpm---------15:11
dpm During the first part of the session I'll be talking about Quickly.15:11
dpmThis is what we'll use to create Ubuntu desktop apps. At the technical level,15:12
dpmQuickly is nothing else than a command-line utility which acts as a wrapper around the tools we chose to be part of the Ubuntu app developer story.15:13
dpmIt provides a set of commands to act as shortcuts to the key actions a developer most usually needs while writing a piece of software.15:13
dpmThey are quite handy, and they really make life easier for you.15:13
dpmHere are some examples of such commands:15:13
dpm 15:13
dpm$ quickly edit # To open your code files in an editor of your choice15:14
dpm$ quickly debug # To start debugging your application graphically15:14
dpm$ quickly package # To automatically package your app for you15:14
dpm 15:14
dpmAs you see, very easy to use15:14
dpmNote that you don't have to use Quickly commands if you are already familiar with the underlying tools it invokes.15:15
dpmQuickly just provides the glue and a few handy shortcuts.15:15
dpmSo for instance using 'quickly save' is the same thing as 'bzr commit' (the command to commit files to the Bazaar distributed revision control system).15:16
dpmYou can see a nice overview of those underlying tools and the commands to activate them here:15:16
dpm 15:16
dpm    http://developer.ubuntu.com/get-started/quickly-workflow/15:16
ClassBotwei2912 asked: do you mind providing some examples? :)15:16
dpmYes, we'll get into the examples in a minute :)15:17
ClassBottuxfan_ asked: Quickly provides a command adding new Dialogs(GTK.Dialog) how about new Windows (Gtk.Window)?15:17
dpmindeed it does. Right now there is no command to automatically generate the code to create new windows for you, but as you've rightly noted, we do have a dedicated command for the more usual operation of creating a dialog15:18
ClassBotbobweaver asked: do you know if there are other options besides just gedit ? like quickly edit <IDE goes here> as gedit is not a Pure IDE and I sometimes have trouble with it15:19
dpmThere are plenty indeed. We're just making an opinionated choice to provide guidance and to concentrate on a set of tools we can support15:20
dpmSo while we recommend Gedit, you can use any other programmer's editor such as Vim, Emacs, Geany... etc.15:20
dpmIf it's your first time writing apps for Ubuntu and you want to try something else than Gedit, Geany might be a good option15:21
=== gaurav_ is now known as Guest84335
=== Guest84335 is now known as GauravButola
dpmIf you want to go for a full-blown IDE, you can try Eclipse with the Python dev plugin, or Ninja IDE, etc15:22
ClassBotwei2912 asked: could you go indepth into how the application is packaged, as a DEB file or?15:22
dpmsure, let me go through the example app and then talk a bit about packaging15:22
dpmOk, so moving on...15:23
dpmThe technologies you'll see today are Python, Glade and a bit of Bazaar and Debian packaging, although those two will rather be working in the background15:23
dpmThe other nice thing about Quickly is that it installs all the packages you'll need to get started hacking on Ubuntu.15:23
dpm(as in hacking a new app)15:23
dpmSo if you want to follow along and create your first desktop app, go ahead and:15:23
dpm 15:24
dpm* Install quickly by opening http://apt.ubuntu.com/p/quickly on your browser15:24
dpm 15:24
dpmIn principle, you can use any combination of tools and programming languages for Ubuntu apps.15:24
dpm It's just that we simply cannot support every single combination under the sun, so we made a set of oppinionated choices on the tools we think are best and are best supported in Ubuntu and put them together with quickly15:24
dpmSo if you create apps with quickly, they'll be easier to create, review and publish in the Software Centre15:25
dpmok, let's finally move on to the fun part :)15:25
dpm 15:25
dpmStep 1: Get started15:25
dpm-------------------15:25
dpm 15:25
dpmThis is the stage we get straight to business and put on our developer hats for some hacking fun.15:25
dpmAt this point we generally have an idea of the type of app we want to write and go for the implementation.15:25
dpmIn this case, we'll be writing a very very simple 'Hello world!' type ofapp, but with a twist: ours will be an 'Ubuntu rocks!' app.15:26
dpmThere is also a video tutorial you can watch the later at http://developer.ubuntu.com/get-started/, it's detailed but quick to the point,15:26
dpmbut for now, and given that we've already installed the tools, we'll start writing some code.15:27
dpmOr rather, we'll be writing a minimum amount of code and let Quickly do the heavy lifting for us :)15:27
dpmOk, enough talk, now let's get onto it:15:27
dpm1. Open a terminal (press the Ctrl+Alt+t key combination)15:27
dpm2. Run the following command (again, don't type the leading "$", it's just to mark that it's a command):15:28
dpm   $ quickly create ubuntu-application ubuntu-rocks15:28
dpm   -- This will create the boilerplate code for your app, and a first saved revision, so you can concentrate on other more important things :)15:28
dpm3. Enter the folder where the code lives now, by running:15:28
dpm   $ cd ubuntu-rocks15:28
dpm   -- You'll see all the files Quickly created there. Don't worry too much about them for now, but you can examine them with the file browser later on (e.g. typing 'nautilus .' to fire up the file browser in the folder)15:29
dpm4. Next up, we'll modify the AUTHORS file to indicate we're the authors of the code. This is needed by some commands later on. Now type the following:15:29
dpm   $ gedit AUTHORS15:29
dpm5. On the text editor window, add your name and e-mail using the format in the example in there (you'll just need to replace it), then you can save and close the file15:30
dpmIt seems we've got some questions, let me try to answer them quickly15:30
ClassBotwei2912 asked: what editor do you mostly use?15:30
dpmI use both Gedit and GVim, the graphical version of Vim, depending on the mood and on the task that I'm working on :)15:31
ClassBottuxfan_ asked: So that would be quickly edit <path to eclipse>?15:31
dpmQuickly currently only provides support for text editors, so while you could use Eclipse for code editing, there wouldn't be direct integration with Quickly15:32
dpmThat is, you could still use the commands, but not within Eclipse (unless you manually add them as external commands to invoke)15:33
ClassBotJumpLink915836 asked: Is it planned to support more languages with Quickly?15:33
dpmgood question. The way Quickly is designed, it can already support almost any language through its modular design based on templates15:34
dpmbut at the core we focus on Python and a basic Ubuntu GUI app15:35
dpmThere is a community project for those interested in providing templates for app types or different languages for Quickly: https://launchpad.net/quickly-community-templates15:35
ClassBotxkernel asked: "quickly create ubuntu-application" by defaults create Python app, what if I want to use C or C++?15:36
dpmI believe the above should also answer this question too :)15:36
dpmOk, let's continue15:36
dpm6. In order to keep our work, it is good practice to save revisions from time to time. Now it's as good a time as ever. You can do that now by typing:15:36
dpm   $ quickly save "Updated authors file"15:37
dpm   -- Now there is a revision identified by a number and the message you passed quickly saved under revision control. You can always come back to it if you like. This command will effectively invoke bzr, the distributed version control system15:37
dpm7. Now let's have a look at the code, fire up the text editor to open all the project files:15:37
dpm   $ quickly edit15:37
dpm   -- Generally you will be modifying the UbuntuRocksWindow.py file, do not worry about the others for now.15:37
dpm8. Ok, now that you know how to edit code, we'll modify the UI a bit to give you a taste of UI design. Fire up glade, the GUI designer:15:38
dpm    $ quickly design15:38
dpm    -- What you see are the widgets that are part of your app's main window. You can modify them visually with Glade.15:38
dpm9. Go to the widget tree on the top right-hand side, expand the ubuntu_rocks_window until you find 'label1' and select it.15:38
dpm10. Now go to the properties dialog below the widget tree and find the 'Label:' property. Change it to something like: "Ubuntu rocks!"15:39
dpm11. Check out that the app runs with your UI changes:15:39
dpm    $ quickly run15:39
dpmVoilà, your first Ubuntu app, congrats! :-)15:39
dpm12. Save the final version of your app:15:40
dpm    $ quickly save "Modified the GUI with a note"15:40
dpmAt this point I'll leave it up to you to experiment with Quickly and let your imagination run wild with your apps :)15:40
dpmUnfortunately, we're running out of time, so I'll have to be brief on the packaging command15:41
dpmHowever, it works almost magically, just try it:15:41
dpm    $ quickly package15:41
dpmand it will package your app automatically for you, which is rather awesome :)15:41
ClassBottuxfan_ asked: Why do you put a string after the save command?15:42
dpmgood question. That string will be used as a comment next to the version Quickly (via bzr) will commit. That will help you reviewing history and remembering what you did at each point while developing your app15:43
dpmyou can see such comments using the 'bzr log' command, or any visual revision history viewer15:43
ClassBotxkernel asked: quickly package raised this error "(setup.py:27328): WARNING **: Couldn't register with accessibility bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken"15:44
dpmThis looks more like a warning than an error to me. Have a look at whether Quickly generated the package or not15:44
dpmif it didn't, I'd suggest trying to get help on Ask Ubuntu: http://askubuntu.com/questions/tagged/application-development15:45
dpmwhich is an awesome resource for all your questions related to Ubuntu, including app development15:45
dpmI've asked questions there and got answers for the most obscure development topics there, so it's worth checking out15:46
dpmOk, so let's move on to mobile, but let me quickly point you to a few useful resources15:46
dpmhttp://developer.ubuntu.com/resources/15:46
dpmDo check out the tutorials in there!15:46
dpmAlso: http://developer.ubuntu.com/community/15:47
dpmThere you'll find all the info you need to get support, and if you like to get involved in the app developer community15:47
dpm 15:47
ClassBottuxfan_ asked: Does that mean i can use the string provided to roll in a previous version?15:47
dpmah, let me answer the questions quickly before moving on...15:47
dpmThe string (or comment) is used as a description only (as a human, you are better equipped to understand the description of what you were doing rather than the revision number where you did it). For rolling in previous version you'll use the bzr revision number to which the comment is attached to15:49
ClassBotyellabs-r2 asked: will future bring integration into glade ?  Or an standalone version for apps development15:49
ClassBotThere are 10 minutes remaining in the current session.15:50
dpmQuickly is already integrated with Glade in the sense that it invokes it, but tighter integration through an API is planned via the Quickly Reboot project15:51
ClassBotspav asked: Ok. quickly use gtk+ for UI we can use also Qt witch will use phone version of ubuntu UI15:51
dpmWe're not yet using Quickly for our developer story, as we've just released a preview of our SDK. The Ubuntu SDK preview uses QML for creating mobile apps15:52
dpmOk, let's talk more about mobile15:52
dpm 15:52
dpmDeveloping apps for the phone15:52
dpm=============================15:52
dpm 15:52
dpmThe part that you should get familiar with today is the Ubuntu UI Toolkit, which is part of the Ubuntu SDK preview.15:52
dpmThis is being developer as a separate story from the desktop for now, but you'll gradually see more and more parts converging in our master plan for Ubuntu world domination  :)15:52
dpmYou will find all of the details on how to install the Ubuntu SDK preview and get started here:15:53
dpm 15:53
dpmhttp://developer.ubuntu.com/get-started/gomobile/15:53
dpm 15:53
dpmJust try to go through step 1 in the process to install everything while I talk about the UI toolkit for a bit..15:53
dpmEssentially, the UI Toolkit provides developers with a set of carefully (and beautifully, I shall say) designed standard GUI components15:53
dpmto use as the building blocks for all user interaction. As such, you'll find labels, buttons, text boxes... all of the standard elements necessary to create a consistent and intuitive app.15:53
ClassBotJumpLink asked: will it be possible to develop mobile apps with gtk? That would make it easier to port some apps.15:54
ClassBotThere are 5 minutes remaining in the current session.15:55
dpmRight now we're basing our development toolkit on QML, so while technically possible, I'm not sure what kind of support there will be for developing GTK+ apps for the phone. We're focusing our efforts on developing apps on the QML toolkit only, as it's proven to scale well to different form factors on different devices15:55
ClassBottuxfan_ asked: go-mobile recomends 12.10...can it be installed in 12.04 too?15:56
dpmIt can now, but the level of support might not be the same as on 12.10. I believe installing on 12.04 should work already, but if you've got issues, try searching on ask ubuntu for instructions from folks who've already installed it15:57
dpmThe next step in the process is to run the tutorial to get a taste for a real-world working example and having you wanting to get more :)15:57
dpmBut as we're running out of time, what I'll do is to point you to it and let you run through it on your own time:15:57
dpm 15:57
dpmhttp://developer.ubuntu.com/resources/app-developer-cookbook/mobile/currency-converter-phone-app15:57
dpm 15:57
dpmWhat's been really overwhelming is that our community has already been creating lots apps with the Ubuntu SDK preview, which is pretty amazing when you think there still isn't a device for Ubuntu for phones available to them yet!15:58
dpmHave a peek:15:58
dpmhttps://plus.google.com/u/0/communities/111350780270925540549/stream/7914b6fd-cb15-485c-a50a-cd18b7768c2d15:58
dpmThey all look stunning15:58
dpmAs a taster, also have a look at this full-fledged Podcast client written by our friend Stuart Langridge (aquarius) in just a few lines of code15:58
dpmhttp://paste.ubuntu.com/1564468/15:58
dpmYou can save it as a .qml file and run it with qmlscene filename.qml once you've installed the SDK preview15:59
dpmAnyway, time to go,15:59
dpmIf you want to learn more, join Michael Hall and myself next Friday at 15:00 UTC in a public developer hangout, where we'll be talking in detail and answering all of your questions about this project and the phone developer story15:59
dpmthank you for your time and questions!15:59
dpmNext up, the awesome Bhavani Shankar will be talking about the Ubuntu App Review Board16: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: Ubuntu Developer Week - Current Session: Ubuntu App Review Process Explained - Instructors: coolbhavi
dpmcoolbhavi, the floor is yours!16:00
coolbhavi:) thanks dpm16:00
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html following the conclusion of the session.16:00
coolbhavifor the cool session16:00
coolbhaviAlright. Hi All and welcome to my session on introduction to ubuntu app review board, who are we and what we do16:01
coolbhaviHere is a short intro on me (for those who dont know me :)): I am Bhavani Shankar a Ubuntu developer, currently serving on the Application Review Board and LoCo council in Ubuntu.16:01
coolbhavi== Who is the Ubuntu App review board and why are we here? ==16:02
coolbhaviThe Application Review Board (ARB) is the team governance council for assessing post-release applications in ubuntu and releasing them into the software center through -extras repository.16:02
coolbhavi== Our Process ==16:02
coolbhaviOur process mainly consists of 3 main parts:16:03
coolbhaviFirst, when someone uploads their app into myapps portal (https://myapps.developer.ubuntu.com/dev/) we do the following checks primarily:16:03
coolbhaviWe check for the contents of the app as per arb guidelines, check if the app runs as expected, packaged as per arb guidelines. (and vote on them)16:03
coolbhaviSecondly, Once the compliance checks above are complete we do a qa check after uploading to extras repository.16:04
coolbhaviThirdly we publish the app if everything is fine wrt step 1 and 216:04
coolbhaviAny questions?16:05
ClassBotanish1307i asked: arb guidelines ?16:06
coolbhavianish1307i, I am going to explain the same in detail as the session goes on :)16:06
ClassBotjierro asked: how many dudes are in ARB?16:07
coolbhavijierro, currently there are 5 members on the ARB https://launchpad.net/~app-review-board/+members#active16:08
coolbhaviso moving ahead...16:08
coolbhavi== Seems interesting? Here is a bit more info on the process ==16:09
coolbhavi== Our general goal ==16:09
coolbhaviOur focus is on lightweight apps. To give you a general idea, we're looking for the kind of apps that could be reviewed for functionality and security in about an hour reading through the code. We'll also do a licensing and packaging review.16:09
coolbhaviSubmissions should be applications, not stand-alone documentation or media (image bundles, fonts, movies) and we review only free apps16:10
coolbhaviApps should not be forks or updates of existing applications in the Ubuntu archive (main/universe/etc).16:11
coolbhaviApps should be well integrated into the desktop, working well with the Dash and Launcher. The ARB reviews graphical apps, not command-line apps.  (for the sake of simplicity in reviewing)16:11
coolbhavi== Content ==16:12
coolbhaviContent must be suitable under the terms of the Ubuntu Code Of Conduct16:12
ClassBotbobweaver asked: with more and more developer's every day has there been a movement at all to get more then just X amount of people to ARB ?16:13
coolbhavibobweaver, thats the precise reason we are working on automating the review process which I ll come to at a later stage16:14
ClassBotjincreator asked: If ARB review only free apps, then who review non-free apps?16:14
coolbhavijincreator, there is a separate queue for commercial apps handled by the myapps team in a separate queue16:15
ClassBotjierro asked: and who review heavyweight programs?16:16
coolbhavijierro, if you want some app with a lot of features and code functionalities and other functionalities included which is beyond the scope of lightweight apps defined by the ARB, one could go through the normal sponsorship queue in ubuntu16:18
coolbhaviApplications must be Free/Libre/Open Source software. We follow the Ubuntu Licensing Policy. (http://people.canonical.com/~cjwatson/ubuntu-policy/policy.html/ch-archive.html#s-ulp)16:18
coolbhaviApps should be useful or interesting to a general audience.16:19
coolbhaviApps must be able to be built with tools & libraries in the Ubuntu archive. Apps may bundle additional libraries they depend on, but may not include new versions of already packaged libraries.16:19
coolbhavi== Running of the app ==16:20
coolbhavirunning of the app on a machine covers the below points:16:20
coolbhaviApplication runs correctly16:20
coolbhaviMajor features operate as expected16:21
coolbhavimost importantly, Does not perform any malicious actions (like accessing/modifying system files)16:22
coolbhavi== Packaging of the app ==16:22
coolbhaviThe application is well packaged using the Debian packaging system16:22
ClassBotjierro asked: what is going on with apps from "Ubuntu App Showdown", that are still not in Software Centre?16:23
coolbhavijierro, due to the transition from manual reviews to automated reviews, and since most people contribute in their free time, reviews are going on at a slow pace and we are trying our level best to speed up reviews and include the apps into USC16:25
=== megha is now known as firewall
coolbhaviwhich we will definitely do in due course of time16:26
coolbhaviThe application is well packaged using the Debian packaging system16:26
coolbhaviAll correct dependencies are met16:26
coolbhaviApplication installs cleanly16:27
coolbhaviApplication can be removed cleanly16:27
coolbhaviIncludes suitable copyright and licensing content16:28
coolbhaviApplication integrates into the desktop, with appropriate Launcher or menu entries16:28
ClassBotJumpLink asked: the same applies for a new (developer) library instead a app?16:29
coolbhaviJumpLink, I'll cover the packaging requirements in detail next as its pretty strict16:29
coolbhavi== A bit more info on packaging guidelines which is pretty strict ==16:30
coolbhaviWe greatly prefer source tarballs with a standard versioning scheme, such as foobar-1.2.3.tar.gz or foobar_1.2.3.orig.tar.gz, that unpacks into a directory named foobar-1.2.3.16:30
coolbhaviThe version for your package in debian/changelog should use the format <upstream>-0extras<ubunturelease>.<packagerev> where packagerev starts at 1 with the first upload. Example: 1.2.3-0extras11.10.1 for the first upload of a package with the upstream version 1.2.3. [Note: This is different from the standard requirements for Debian/Ubuntu packages]16:31
coolbhaviwherein we use 0ubuntu1 and target it at the main repositories for instance16:32
coolbhaviyou need to have just one entry for each version that's published to Extras.16:33
coolbhavi(in debian/changelog)16:33
coolbhaviMake sure the target distro in debian/changelog is the current release of Ubuntu, not an older version, or the development version that hasn't been released yet.16:34
coolbhaviYour package should install most files in /opt/extras.ubuntu.com/<packagename>. This includes all libraries, binaries, and configuration files, much as a part of avoiding namespace conflicts if any, with extras16:35
coolbhaviHowever there are a few exceptions:16:35
coolbhavicopyright, changelog, and other example files pertaining to the app is allowed to be installed in /usr/share/doc/<packagename>16:37
coolbhaviThe .desktop file is allowed to be installed in /usr/share/applications with the only condition that it should have a extras prefix to it16:38
coolbhaviExample: extras-foobar.desktop for a package named foobar.16:38
coolbhaviSame condition goes with any lenses too which are allowed to be installed in their standard locations  but with an extras prefix to the service16:40
coolbhaviAs a side note: this link provides info on some of the awesome apps we received during the app showdown: http://www.omgubuntu.co.uk/2012/08/ubuntu-app-showdown-winners-announced16:41
coolbhavi== Seems bit too complex? ==16:42
coolbhaviThere is no need to worry as we are automating the process above (as a  after result of our wildly successful recent app developer showdown http://developer.ubuntu.com/showdown/apps/ wherein we reviewed 133 cool apps in a single week)16:43
coolbhaviThe whole spec is here: https://wiki.ubuntu.com/AppDevUploadProcess16:43
coolbhavion which we have started working (Presumably lengthy for a first read)16:44
coolbhaviWe hope to have everything in place for 14.04 (and on a personal note, have contributed creation of a lintian profile to check arb-package compliance towards the same)16:46
coolbhaviand any help in implementing the spec or help in manual reviews as of now (As more hands speed up the review process and the voting process which is a +2 votes currently for an app to get through) You can join the app review contributors team here: https://launchpad.net/~ubuntu-app-review-contributors16:49
coolbhaviand start reviewing apps which come on the ARB queue16:50
ClassBotThere are 10 minutes remaining in the current session.16:50
coolbhaviand of course our eternal gratitude will be there with you for your offer of help :)16:52
coolbhaviThats it pretty much from my side and the floor is open to any questions.16:52
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html16:53
=== 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 || No Sessions Currently in Progress
coolbhaviJumpLink,  basically you ll need to use the software in the ubuntu archives but it can be allowed if it runs in your program as expected16:56
coolbhaviOriginal question was <JumpLink> QUESTION: E.g. the JavaScript environment Node.js is not in the Ubuntu archive, is it allowed to use node.js if I install it to /opt / extras.ubuntu.com / <packagename>?16:58
ClassBotThere are 10 minutes remaining in the current session.16:58
ClassBotThere are 5 minutes remaining in the current session.16: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: Ubuntu Developer Week - Current Session: Ubuntu App Review Process Explained - Instructors: coolbhavi
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html following the conclusion of the session.16:59
ClassBotThere are 10 minutes remaining in the current session.17:00
ClassBotThere are 5 minutes remaining in the current session.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: Ubuntu Developer Week - Current Session: [On Air] Finding Memory Leaks - Instructors: achiang
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html following the conclusion of the session.17:00
JoseeAntonioRHey, guys! You can check the next session at www.ubuntuonair.com17:01
achianghttp://pad.ubuntu.com/9J5hd9GmQK17:04
achiangIf you are on raring, simply:17:08
achiang$ sudo apt-get install apport-valgrind17:08
achiangIf you are on an older release, create a raring chroot and then:17:09
achiang$ apt-get source apport-valgrind17:09
achiangAlternatively, download the following:17:09
achianghttps://launchpad.net/ubuntu/+archive/primary/+files/apport_2.8-0ubuntu2.diff.gz17:09
achianghttps://launchpad.net/ubuntu/+archive/primary/+files/apport_2.8-0ubuntu2.dsc17:09
achianghttps://launchpad.net/ubuntu/+archive/primary/+files/apport_2.8.orig.tar.gz17:09
achiangAnd extract with:17:09
achiang$ dpkg-source -x apport_2.8-0ubuntu2.dsc17:09
achiangYou will also need a newer valgrind, which can be obtained:17:09
achianghttps://launchpad.net/~jtaylor/+archive/jtaylor17:09
achiangYou will also want:17:09
achiang$ sudo apt-get install ctags cscope17:09
ClassBotThere are 10 minutes remaining in the current session.17:50
ClassBotThere are 5 minutes remaining in the current session.17: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: Ubuntu Developer Week - Current Session: Testing with Autopilot - Instructors: balloons, thomi
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html following the conclusion of the session.18:00
balloonsHello everyone18:02
balloonsMy name is Nicholas Skaggs, I'm the QA community coordinator..  Recently, we've taken up using autopilot to help meet our automated testing needs. So today I'll be talking about what autopilot is, how it works, and how you might be able to use it yourself for your application18:03
balloonsWith me today is Thomi, I'll let him introduce himself as well18:03
* thomi waves18:04
thomiI'm THomi Richards - I work for Canonical on a number of different projects focused around the desktop & automated testing. I'm here because I'm one of the main authors of autopilot, so hopefully I can help answer any questions you might have....18:04
thomiit's also really early in New Zealand, so if I don't make sense, I probably just need more coffee18:04
balloonsyes, do thank thomi for getting up early to hang out with us :-)18:04
balloonsso let's begin shall we18:04
balloonsfirst of all, what is autopilot exactly?18:05
balloonsWell, as eluded to, autopilot is an automated testing tool, originally developed by the unity team for testing unity.18:05
balloonsThe goal of autopilot tests is to provide higher level application and functional testing. The tests are written in python and can be user executed or scripted via a test runner such as UTAH or jenkins to run and publish results automatically.18:05
balloonsSo what can it do? Well, autopilot can be used to perform functional testing of an application.18:06
balloonsPractically, this means you can simulate user input and drive your application just like a human would. If you have unit tests and build tests for your application, adding autopilot tests will help you to ensure the application actually executes properly when interacted with by a user.18:06
balloonsThis allows you to add that final level of what might be called acceptance testing of your application in an autmated way18:07
thomiRight - autopilot provides a very high-level test. The goal is to simulate user input, and verify that your application does what's expected of it.18:07
balloonsNow, this all sounds good, so you might be asking how this is different from other testing tools18:08
balloonsI'll let thomi pitch in here as well, but.. The unique part of autopilot is that it doesn’t rely on doing screengrabs to interpret application interaction. Instead, the autopilot team has implemented dbus introspection to allow you to machine read the data driving the application interface instead.18:08
balloonsThis allows you to read the values being displayed by the application without having to visually look at them. The upsides of this are the ease of maintenance and writing the test. The potential downside is that it does not verify how the application actually appears, since it is not “looking” at it. (Though I will posit you could probably add an assertion to do this, haha!)18:08
thomiRight - autopilot relies on having code execute inside the application under test. This is easy for the Unity shell (since we wrote it), and for Gtk & Qt applications we have our own autopilot plugin that we persuide the application under test to load for us. THese plugins export internal application values over DBus, for your autopilot tests to read.18:10
thomiballoons: correctly identified that you cannot verify how something actually looks on the monitor with autopilot. However, hopefully your GUI framework of choice (Gtk+, Qt) contains those sorts of tests. In practise, we haven't missed this functionality at all.18:11
balloonsSo, how do you get it? Well autopilot is in the repository since precise I believe..18:11
balloonsbut I’d encourage you to get the latest upstream version by installing from the ppa. Upstream development is still happening fast, so it’s nice to use the latest and greatest ;-)18:11
balloonssudo add-apt-repository ppa:autopilot/ppa18:11
balloonssudo apt-get update && sudo apt-get install python-autopilot18:11
thomiballoons: not sure about precise. Quantal & onwards I believe. The application plugins are in the autopilot PPA, so you may want to add 'ppa:autopilot' to your system in order to get them18:13
thomiIf you're running raring, autopilot is released almost daily into the OS, so... yay!18:13
balloons^^ :-)18:13
balloonsSo, before we delve into the details of how this works, let me show you an example testcase from unity so you can see how a testcase looks18:14
balloonshttp://bazaar.launchpad.net/~unity-team/unity/trunk/view/head:/tests/autopilot/unity/tests/test_home_lens.py18:14
balloonsfor those of you familar with xunit tests, you'll feel right at home here18:15
thomiAutopilot is built on top of the standard python test tools, so we try and keep the structure as simple as possible18:16
balloonsyou can probably follow along with what's going on inside the testcase... you have a setup and teardown step which is run before and after each test respectively, and then (in this case) one test function defined18:16
balloonsWe'll talk more about writing these testcases in a few mins.. for now, I'd like to ask thomi to talk a little bit about the technical side of autopilot18:18
balloonsplease, feel free to ask question as we go.. just prefix your question with 'QUESTION:' in the chat18:18
thomisure. I won't go into too much detail, because test authors don't need to know too much about how things work under the hood, but...18:18
balloons:-)18:18
thomias an example, another unity test suite: http://bazaar.launchpad.net/~unity-team/unity/trunk/view/head:/tests/autopilot/unity/tests/test_spread.py18:18
thomithis one tests the spread functionality of the launcher icons.18:19
thomierr, I mean "application windows"18:19
thomiin the AP test, where we access a python attribute like "self.window_manager.scale_active", we're actually causing a DBus round-trip to the application under test18:19
thomiso under the hood, autopilot is creating a query that asks unity to provide updated state for the WindowManager object18:20
thomiwhen autopilot gets that new information back, it can then pass the new value to python, and the test can be evaluated.18:20
thomiTo run autopilot tests, you can use any standard python test runner18:21
thomiso, nosetests, testtools, unittest, whatever. *or*, you can use autopilot itself18:21
thomiautopilot gives you a number of features that other test runners don't, including:18:21
thomi * You can record videos of failed tests. We use this *a lot* for the Unity tests. They're run automatically on a jenkins machine, and failed tests appear both as a test result inside jenkins, and as a video/build artifact.18:22
thomi  this makes it really easy to 'see' why a test is failing on the test machine.18:22
thomi * We can also save test results to Junit XML file format, which makes jenkins integration much easier18:23
thomiSo... I'm sure I've forgotten things - any questions about the technical side of autopilot at ths stage?18:24
balloonsif not, let's talk a bit about writing the cases18:25
balloonsI want to mention some resources available to everyone for help18:25
balloonsThis friday we’re having a hackfest were we’re encouraging people to come out, learn about autopilot (and autopkg) automated testing, and to contribute some tests. https://wiki.ubuntu.com/QATeam/AutomatedTesting/Hackfest. We’ll give a demo and be on-hand to guide you through contributing and writing tests.18:25
balloonsIf your interested in learning to write testcases, attending the session is an excellent place to start. If your not able to attend, the videos will be available afterwards and #ubuntu-quality is always a good place to get help. The autopilot guys as well as myself and other testwriters all idle in the channel.18:26
balloonsIn the meantime, please do check out the resources available to you. The official autopilot documentation is a great place to start.18:27
thomialso, people should feel free to ping me on IRC and ask questions - I might not be awake, but I'll answer them when I see them18:27
balloonsHere's the links to the docs:18:27
balloonshttp://unity.ubuntu.com/autopilot/18:27
balloonsNote that the website is still missing docs (build error :-(, we’ll get it fixed), but once you’ve installed autopilot you have a full documentation set locally on your machine. I would encourage you to use this documentation.18:27
balloonsfile:///usr/share/doc/python-autopilot/html/tutorial/getting_started.html18:27
balloonsFinally, there is a set of tutorials I have written on my blog that guide you through writing your first autopilot testcases:18:27
balloonshttp://www.theorangenotebook.com/2012/11/getting-started-with-autopilot.html18:28
balloonshttp://www.theorangenotebook.com/2012/11/our-first-autopilot-testcase.html18:28
balloonshttp://www.theorangenotebook.com/2013/01/introspecting-with-autopilot.html18:28
balloonsI owe thomi getting this into the official documentation ;-)18:28
balloonsLast bits of the last session, hang in there everyone :-) Let's talk a bit more now about how ubuntu uses autopilot as an example of how it can help contribute to your application development and release process18:29
balloonsAs mentioned, the unity team originally created autopilot to solve their needs for automatically functionally testing unity. This allowed them to test and assure that the designed and coded features actually performed as expected when interacted with by the user. Being a primarily user interaction application, the need for something like autopilot to test was vital.18:30
thomiRight - this was for the precise release. We needed a way to automatically detect when we'd broken a feature.18:31
balloonsI would encourage you to read a bit about how autopilot plays a role in there release process by reading the excellent articles didrocks has posted on the subject (Unity: release early, release often… release daily!) http://blog.didrocks.fr/18:31
balloonsIn addition, we as a ubuntu quality community team are utilizing autopilot to help with our testing efforts. Currently, we’re focused on getting tests for our desktop applications, with the goal of also using autopilot to automate image installations and do other useful tests :-) There is a project page for our work here:18:32
balloonshttps://launchpad.net/ubuntu-autopilot-tests18:32
balloonsIf your interested in helping, please do come out to the hackfest this friday.18:32
balloonshttps://wiki.ubuntu.com/QATeam/AutomatedTesting/Hackfest18:32
balloonsthomi, if you would like to say anything more about how unity uses ap, jump in now ;-) Then we'll field questions18:32
thomisure18:33
thomiso we've been building a test suite since precise18:33
thomiRight now we have pretty good coverage we have....786 tests in the unity test suite18:33
thomiwhich takes over an hour to run right through18:34
thomiwe test all of the main unity components - the dash, launcher, panel, etc...18:34
thomiwe *require* a new feature branch to have an autopilot test before it gets merged18:34
thomisince the precise release, autopilot has helped us catch *lots* of regressions before we release Unity18:35
thomiresulting in a more stable & usable development release.18:35
thomiWe also run the unity AP tests over a selection of different hardware18:35
thomiincluding machines with ati, nvidia, and intel gfx chipsets, to help catch issues where nux has some bad interactions with the graphics drivers18:36
thomiwe also test with both the free and proprietary drivers18:36
thomiso... I think the best thing now is to answer questions you may have18:36
ClassBotmanavakos asked: how do we get autopilt? simple apt-get?18:37
thomiyup - simple apt-get - if you're in raring. Even then, it's best to have the autopilot PPA added. We're hoping to make sure everything is released into Ubuntu proper before too long18:37
balloonsThe autopilot ppa is sudo add-apt-repository ppa:autopilot/ppa18:38
ClassBotmanavakos asked: so autopilot is a tool for testing ANY kind of code or of a specific language (python)?18:38
thomiautopilot is still in very active development, so things change all the time, so the PPA really is your best bet. If you have any problems, ping myself or balloons18:38
thomiAutopilot can test any Qt4, Qt5, or Gtk+ application (or Unity), but your tests must be written in python18:39
balloonsthomi, so I can't write my tests in smalltalk?18:39
balloons:-p18:39
thomiso a typical application will have a C++ component for the actual application, and a python component for the tests18:39
thomismalltalk..... no.. just.. no18:39
ClassBotepikvision asked: What's a unit test and a build test?18:40
balloonsI think this is a good question we can address actually.. So we are saying autopilot fits in the testing strategy as a functional or acceptance testing tool18:40
thomiright - A unit test is a test that verifies a single unit of code - hopefully a single function. It's written in the same language as the application itself18:41
thomiso unit tests are about testing very low level functionality - you care about a certain function working as it should...18:41
thomiautopilot tests, on the other hand, are very high-level tests - we care about the functionality of the applicaton, rather than any specific piece of code18:42
thomiyou need both levels (and a few in-between) in order to have any confidence in your application18:42
thomiso Unity also has unit tests, written in C++ and using the gtest framework18:42
thomi...but that's a discussion for another day :)18:42
balloonsindeed :-) It's important to have tests addressing the different levels to help ensure your application is performing correctly18:43
thomiWe picked python as the language for autopilot because Canonical, and the Ubuntu community in general have many python testing experts.18:44
thomiso we've got a great body of knowledge around how to write good tests in python :)18:44
thomicompared to say.. ruby...18:44
balloonsI won't spout on too much about this, but if your curious, google and wikipedia are your friends -- try looking at release and testing methodologies to see a more complete picture of generically how the levels work18:44
=== dustubot is now known as dustu-homesick
=== dustu-homesick is now known as dustu-sick
balloonsalright, any other questions?18:45
thomiAMA :)18:45
ClassBotballoons asked: Do I need to modify my application to use autopilot?18:46
=== geryon6 is now known as geryon7
thomiderp derp18:47
thomias long as you haven't prevented Qt/Gtk from loading plugins, then you don't need to modify your application to load the autopilot plugin18:47
thomihowever18:47
thomiit helps *a lot* if the objects in your application have sensible names18:48
thomiyou use these names in your test to retrieve the objects you care about18:48
thomiso please - Qt authors, name your objects!18:48
thomi(I'm sure you do this already)18:48
thomibut apart from naming your objects sensibly, No: autopilot doesn't require you to change / rebuild your application18:48
thomi(which is kind of cool) :)18:49
thomiany other questions?18:49
* thomi glares at balloons18:49
* balloons smiles18:50
balloonsalright, thanks everyone for coming out (and/or reading this log)18:50
ClassBotThere are 10 minutes remaining in the current session.18:50
thomiI'd encourage people interested in contributing to Ubuntu to help balloons out and start writing AP tests. It's a great way to get involved without having to learn the application internals18:50
thomiI'm on IRC 24/7, but only awake some of the time. I'm more than happy to help people out when they have questions18:51
balloonsAn for application developers, it's a great way to bridge your testing needs easily18:51
balloonsLet's leave some contact information in case you'd like to follow-up18:51
balloonsfor myself, I'm balloons on IRC, ping me anytime.. My launchpad page is here and it has other forms of contact info like email as well18:52
balloonshttps://launchpad.net/~nskaggs18:52
balloons#ubuntu-quality is the place to be if you have questions18:52
thomiI'm also in #ubuntu-quality, and my contact details are listed here: https://launchpad.net/~thomir18:52
* thomi waves18:53
ClassBotepikvision asked: Is it recommended to do ap on raring?18:54
thomiyes18:54
thomi:)18:54
thomiwe update AP all the time, and those new features are only released to raring18:55
balloonssame here if you want to contribute tests to the community project18:55
balloonsraring is our focus for testing18:55
balloonsplus ap has the goodies on raring18:55
ClassBotThere are 5 minutes remaining in the current session.18:55
ClassBotmanavakos asked: what kind of help can we provide, could you be a bit more specific??18:55
balloonshopefully this answers it for you, but you can do a couple things18:55
balloons1) if your an app developer, adopt autopilot and write some tests for your app.. We'll thank you and your users will too :-) not to mention, you'll thank yourself for easier debugging and regression prevention ;)18:56
balloons2) If your interested in contributing to ubuntu, learn to write autopilot tests.. We need tests for ubuntu default applications, image installation, and other things we probably haven't thought of yet18:57
balloonsWe are happy to take your contribution and help you learn about writing tests.. it's a great way to be invovled18:58
=== 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: Ubuntu Developer Week - Current Session: Unity Integration - Instructors: mhall119
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html following the conclusion of the session.19:00
mhall119hello everyone19:01
mhall119for this session I'm going to be talking about how to integrate applications with the Unity desktop19:01
mhall119which means using the available APIs to add information about your app (or an existing app) to the Unity launchper, indicators, and notifications19:03
mhall119I'm going to start off with the simplest things you can do to improve how an application looks and works on Ubuntu19:04
mhall119first of all, provide a hi-resolution icon for the app19:04
mhall119Unity shows larger icons than Gnome 2.x used in many places, the dash, the launcher and the apt-tab switcher19:05
mhall119if the app only provides smaller bitmap images, they will be up-scaled to fit, and that doesn't look very good19:05
mhall119providing large bitmaps (128x128) helps improve the look of the app in Unity19:05
mhall119SVG icons are even better, as they can be scaled to exacly the right size while staying perfectly clear19:06
mhall119secondly, there are some easy things you can do with the application's .desktop file to improve it's integration, without any code changes19:07
mhall119the first of these is the Keywords field19:07
mhall119Unity uses this field when searching in the Dash, along with the name and description fields19:07
mhall119so if you have a text editor, it should include "Text" and "Editor" in the Keywords19:08
mhall119and any other keywords you think a user might search for when they want your application19:08
mhall119the second thing you can do with the .desktop file is add actions19:09
mhall119Actions are a new addition to the XDG specification: http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#extra-actions19:09
mhall119in Unity, these actions become Quicklist entries in the launcher, which can be accessed even when the application isn't running19:09
mhall119Actions can be anything that you can trigger from the command-line19:10
mhall119again, this does not require any code change, just changes to the text in the .desktop file19:10
mhall119alright, those are the easy ones, any questions so far?19:11
ClassBotmanavakos asked: can you give an example of an "action"? what yould one write on the command line?19:11
mhall119an Action is represented as a sub-section in the .desktop file19:11
mhall119a common one is to start a new window of an app19:12
mhall119so you'd create a new section at the bottom of the .desktop called:19:12
mhall119[Desktop Action NewWindow]19:12
mhall119and inside that you would have:19:12
mhall119Name=Open a New Windows19:12
mhall119Exec=yourexecutable --new-window19:13
mhall119assuming your application takes a --new-window flag19:13
=== Quintasan_ is now known as Quintasan
mhall119you can see more examples of this here: http://developer.ubuntu.com/resources/technologies/launcher/19:13
mhall119and also the XDG specification link I pasted earlier19:14
mhall119alright, now let's get into what you can do inside the application itself19:14
mhall119the Actions mentioned above are called "static" Quicklist actions, because they can be accessed even when your application isn't running, but they don't change19:15
mhall119you can also have a "dynamic" Quicklist, which can be updated from the application's code itself19:15
mhall119if you scroll down a little bit further on the above link, you will see python examples of how to do this19:16
mhall119but basically you create a new LauncherEntry object for your .desktop file, then attach a DBusMenu to it19:16
mhall119unlike static quicklists, you can add or remove entries from this dynamic menu19:16
mhall119you can also use different menu entry types, such as a checkbox or radio selection19:17
mhall119and of course you connect these menu items to callback functions in your code19:17
mhall119in addition to dynamic quick lists, you can also add status information to your LauncherEntry that will be displayed on your application's Launcher icon19:18
mhall119For example, you can set the "count" property, which will show a number in the upper-right corner of your icon19:18
mhall119this is used to indicate new messages in Thunderbird, for example19:19
mhall119you can also set the "progress" property, which will draw a progress bar across the middle of your application's icon19:19
mhall119and finally, you can set the "urgent" propery, which will make your application's icon wiggle and catch the user's attention19:20
mhall119any questions on Launcher integration?19:20
mhall119ok, moving on19:21
mhall119if your application deals with messaging at all, then you probably want to integrate it with the Messaging Menu19:21
mhall119this is useful to let the user know when they have new messages, or how long ago a message was received19:22
mhall119now the API for this changed with 12.10, but the way it works is essentially the same19:23
mhall119you create a new MessagingMenu object with your application's .desktop file19:24
mhall119which, like the Launcher, is where it gets the icon and name to display19:24
mhall119from there you can add as many "sources" as your application needs19:24
mhall119for example, Thunderbird uses a source per mail folder19:25
mhall119Empathy uses a source per user19:25
mhall119you can give your source either a count, or a time19:25
mhall119the Count is simply displayed as it is, next to the source label19:26
mhall119the time, however, is show as the amount of time between it and the current time19:26
mhall119so Unity handles updating that as time passes19:26
mhall119you can also tell the Messaging Menu whether or not to get the user's attention, which wil change the icon's color19:27
mhall119your sources can also be given a callback function that is executed when the user clicks on it in the MessagingMenu19:27
mhall119any questions on the MessagingMenu?19:28
mhall119documentation on that can be found here: http://developer.ubuntu.com/resources/technologies/messaging-menu/19:28
mhall119and the new API docs are here: http://developer.ubuntu.com/api/ubuntu-12.10/python/MessagingMenu-1.0.html19:28
mhall119alright, moving on to the Sound Menu19:29
mhall119this is a little less common for apps to integrate with, but it's useful if you are doing anythign with multi-media playback19:29
mhall119once again, the process begins by using your application's .desktop file to create a new MusicPlayer instance19:30
mhall119this will put your application, along with it's icon, into the Sound Menu19:30
mhall119you can also connect callbacks for play/pause, previos and next, allowing the user to control your app from within the sound menu itself19:31
mhall119and, if your application has some concept of Playlists, you can add those to the Sound Menu as well19:31
mhall119documentation on all of this is available here: http://developer.ubuntu.com/resources/technologies/sound-menu/19:32
mhall119something new that was introduced in 12.10 is Unity Webapps integration19:32
mhall119what this does is exposes all of the APIs I've mentioned, the Launcher, MessagingMenu and SoundMenu, to javascript in the browser19:33
mhall119this lets any website that wants it, to integrate with your desktop to provide you with information19:33
mhall119these APIs are write-only, so you don't need to worry about website gaining information about you or your system19:33
mhall119but it means you can, for example, get gmail inbox counts without installing a separate script, or change tracks in Grooveshark without switching away from your code editor19:34
mhall119more information about integrating webapps can be found here: http://developer.ubuntu.com/resources/technologies/webapps/19:35
mhall119any questions before I move on?19:35
mhall119guess not19:36
mhall119ok, next up are Application Indicators19:36
mhall119these sit alongside the Messaging and Sound menus in the top Unity panel19:36
mhall119any application can add their own indicator19:36
mhall119as you would expect, this starts with your .desktop file, and creating a new AppIndicator object19:37
mhall119your indicator has 3 possible states, Active, Passive, and Attention19:37
mhall119both Active and Attention can have separate icons, Active being the default and Attention for when you want the user to do something19:38
mhall119When your AppIndicator is in the Passive state, the icon is not displayed on the Unity panel, but your AppIndicator code is still running19:39
mhall119And of course you can attach a Menu to your indicator19:40
mhall119These menus can contain either action entries, which just run a callback function19:40
mhall119the can also contain Checkbox and Radio entries, as well as separators19:40
mhall119Lastly we have Notifications19:41
mhall119Unity uses notify-osd to display unobtrusive message bubbles19:41
mhall119To create these, you would use the XDG Nofify API, which can support multiple back-end implementations, such as notify-osd19:42
mhall119the notification can contain an icon, a short title, and a longer body19:43
mhall119the background color, like other parts of Unity, is determined by the user's wallpaper19:43
mhall119notify-osd supports three different methods for notifications19:44
mhall119the first, and most common, is simply creating a new notification19:44
mhall119these are queued and displayed one at a time to the user19:44
mhall119you can also update a notification you have already sent, and if it is still being displayed Unity will swap out the text and icons for the new ones19:45
mhall119finally you can append body text to an existing message, which is helpful if more information becomes available while it is being displayed, but you don't want to completely replace the old information19:46
mhall119more information and examples for using Nofications is available here: http://developer.ubuntu.com/resources/technologies/notification/19:46
mhall119and those are the major integration points that are available to applications in Unity19:46
mhall119any questions about any of these areas?19:47
=== Amoz_ is now known as Amoz
mhall119all of these APIs communicate over DBus to the Unity Shell, and can be implemented in a way that won't break the application if it's running in something other than Unity19:47
mhall119it's also worth pointing out that these APIs will be identical on all formfactors support by Ubuntu, which includes the desktop, TV, and the recently announced Phone19:48
mhall119so even if they may be visually different in the way they are displayed, from a developer's perspective you won't have to worry about where it is being run19:49
mhall119all of the documentation for these areas, as well as API docs for each, can be found on the Ubuntu Developer Portal, which I have been linking to throughout this session: http://developer.ubuntu.com/resources/19:50
mhall119and if there aren't any further questions, we'll call it a wrap for the day19:50
ClassBotThere are 10 minutes remaining in the current session.19:50
mhall119thank you everybody for coming, and thanks to the volunteers who are coordinating these sessions and helping us instructors19:50
mhall119Be sure to come back tomorrow for the last day of UDW19:51
ClassBotThere are 5 minutes remaining in the current session.19:55
JoseeAntonioRThanks everyone for being here today, we'll be back tomorrow at 15UTC! Make sure to not miss it!19:55
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/30/%23ubuntu-classroom.html20: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 || No Sessions Currently in Progress
=== jorge_ is now known as odarelaeze
=== odarelaeze is now known as odarbelaeze
=== firewall is now known as megha

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