/srv/irclogs.ubuntu.com/2012/08/29/#ubuntu-classroom.txt

=== apple is now known as Guest82349
conradinsolved the question of lickalot, but he gone now04:30
conradinwho is in here?04:30
TheLordOfTimejust us dead people :P04:30
TheLordOfTimesupport's in #ubuntu btw04:30
conradinsupport?04:31
conradinso what is this?04:31
TheLordOfTimethat was a mistype04:31
* TheLordOfTime directed to the wrong channel by accident04:31
TheLordOfTimethis is the classroom.  details at https://wiki.ubuntu.com/Classroom04:31
T_H_Xheads down thumb up04:31
conradinIma IRC newb havnt used since 200304:33
conradincept earlier today04:33
conradinwhats supposed to be going down in this room?04:33
conradinI like bash scripting, expect, tcl... stuff like that. and some pixel art.04:34
DarkStorm_conradin: there's actually an entire schedule of events (unfortunately they all conflict with school for me), do /topic04:46
cc11rocksHello #ubuntu-classroom. Where can I find the log's from today's sessions?04:56
chilicuilhi cc11rocks, at irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html04:56
cc11rocksThank you :)04:56
cc11rocksIs getting started/setup for finding/fixing/removing bugs covered here (in today's or in the next few days discussions/tutorial/etc)?05:02
cc11rocksI found this : "More specifically: To fix a bug in Ubuntu, you would first get the source code for the package, then work on the fix, document it so it is easy to understand for other developers and users, then build the package to test it."05:04
JoseeAntonioRcc11rocks: The topic is being covered today05:05
cc11rocksOkay, thanks. JoseeAntonioR : Will you be present for this particular topic?05:05
JoseeAntonioRcc11rocks: I'm sorry, but I won't.05:05
cc11rocksOkay, thanks. If anyone is and you want to, email me the relevant info at cc11rocks@yahoo.com ...If I don't receive an email, I'll look for it in the logs but I don't have a ton of time between work/school/etc (and I understand that everyone else has busy lives as well)05:07
JoseeAntonioRcc11rocks: You will need to search in the logs.05:10
cc11rocksOkay, thanks05:10
AndChat|489600 08:04
noxnoxhi09:05
noxnoxAhmed Kamal09:06
MohamedAlaa98Hi09:07
noxnoxwhen the classes starts09:22
noxnoxdoes anyone knows?09:23
mnemocnoxnox: tried looking at the url in the topic of the channel?09:24
=== sayan_ is now known as sayan
=== shiftingcontrol_ is now known as shiftingcontrol
=== Maddi is now known as HelvitisMaddi
=== helderc_ is now known as helderc
conradinsolved the question of lickalot, but he gone now12:25
conradinmaybe lickalot will return today12:26
eklokis not session going on?13:40
rajueklok: i think still one more  hour is there for the session13:44
ekloka fuck i messed it up again with the time difference13:50
=== Newbie is now known as Guest95470
=== voidHB is now known as skizobass
=== Goat is now known as Guest74254
=== norbi is now known as Guest78442
=== Dark is now known as Guest11466
=== Ubuntu is now known as Guest65990
=== irfan is now known as Guest68765
dholbachAlright, welcome everybody!14:55
Guest68765thankyou14:55
dholbachWe are about to start in 5 minutes, I just wanted to mention some organisational things first14:56
coalitiansGud to see you, dholbach14:56
coolbhavidholbach, thanks a lot!14:56
dholbach#ubuntu-classroom is used just for the sessions themselves, but you can use #ubuntu-classroom-chat to discuss everything and ask questions. So please make sure you join the channel as well.14:56
dholbachIf you want to ask questions, please make sure you prefix them with QUESTION:, so they are easier to spot14:56
dholbachie: QUESTION: What makes Quickly so great?14:56
dholbachAlso: all logs will be available at https://wiki.ubuntu.com/UbuntuDeveloperWeek - currently you can see all the logs from yesterday.14:56
dholbachThe channels are busy, so if you would like to stop notices about people joining and parting coming in, please review https://wiki.ubuntu.com/UbuntuDeveloperWeek/JoiningIn14:57
dholbachEnjoy UDW Day 2 and in a few minutes, mterry will be your host!14:57
dholbachThanks everyone!14:57
=== Guest68765 is now known as van
vanwhen it starts?14:59
=== peaches7_ is now known as peaches
coolbhaviin a minute van14:59
skroccoHello all15: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: Introduction to Quickly - Instructors: mterry
eklokhi15:00
nitvirushello15:00
skizobasshi!15:00
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2012/08/29/%23ubuntu-classroom.html following the conclusion of the session.15:00
mterryHello!15:01
mterryMy name is Michael Terry, and I'm a maintainer of Quickly15:01
mterryI usually give introduction to Quickly talks during App Developer Week, but I'm also doing one this week, let me know in ubuntu-classroom-chat if you'd like things to be more toward the technical details of Quickly or not15:02
mterrySo I'll start with a quick overview of Quickly and where we are now, what our plans are for 12.10 and 13.0415:02
mterrySo Quickly is at core a way to get started developing very quickly15:02
mterryAnd not have to worry too much about packaging or how to get your app into Ubuntu15:03
mterryWe make some opinionated choices (like Python, GTK+) that Ubuntu recommends, so that we can offer a better experience15:03
mterryBut there are plenty of other "templates" that Quickly offers to do other things (like HTML5 or flash)15:03
mterrySo why use Quickly or get involved with Quickly?15:04
mterryWell, I guess the reason to use it is for the above -- if you don't care about packaging and just want to get started  :)15:04
mterryIf you're interested in contributing to Quickly, ask questions in the chat room and I can answer and explain15:04
mterryAlways things to do, and we just started planning a bunch of work for 13.0415:05
mterrySo, in 12.04, there are three templates: the normal Python+GTK one, a command line interface one, and a flash game one15:05
mterryThere are also HTML5, Qt, Qt Quick, and a Unity Lens ones maintained by the community15:05
ClassBoteklok asked: can you work with Quickly via terminal and GUI?15:06
mterryRight now, it's designed to be used via the terminal only15:06
mterryBut Michael Hall worked on a GTK frontend for it15:06
mterryquickly-gtk I believe15:06
mterry https://launchpad.net/quickly-gtk15:06
ClassBotskizobass asked: Can you use Eclipse, PyDev for write a Python App with Quickly and then publish in the Software Center?15:07
mterryYes and no15:07
mterrySo we don't have integration with Eclipse or PyDev as such15:07
mterryBut you could write such an app and stick it inside of a Quickly project with a small amount of work, I believe15:07
mterryWhat Quickly gives you is a skeleton project15:08
mterryAnd if you threw away some of the code it gives you and stick yours in, you'd get most of the benefits of Quickly that way15:08
ClassBotben72 asked: ​ in 12.04 quickly is the package to get right?15:08
mterryYes15:09
ClassBotFlowRiser asked: What is the current workflow of Quickly ?15:09
mterrySo let's say you want to start a project15:09
mterryYou open a Terminal15:09
mterryYou run "quickly create ubuntu-application test-project"15:09
mterryThe ubuntu-application part there is choosing which template to use.15:10
mterryIn our case, we want the default-ubuntu-recommendation, which is Python+GTK15:10
mterryThen, it will create a skeleton project and launch it15:10
mterryClose it out, "cd test-project", and you're sitting in your new project15:10
mterryYou can now edit your code with "quickly edit" or package it with "quickly package".  I'll get to these commands in a bit15:11
ClassBotskizobass asked: Can you write and organize the code (classes, packages, etc) like Eclipse in Quickly?15:11
mterryI'm not sure how Eclipse is organized.  Hold on15:11
mterryThe default skeleton gives you one directory/Python-module for your code15:11
mterryAnd also one Python module that it owns with boilerplate code15:12
mterryYou put all your code in your module and Quickly's wrapper will call into it15:12
mterrySo, as above, if you wanted to import an existing project into Quickly, you would replace that one module with your code15:12
mterryBut as far as classes go, yes, Python and Quickly both encourage one-class-per-file15:13
mterryBut you can do anything you want.  It's not as strictly enforced as, say, Java15:13
ClassBotnja asked: ​ Will you be covering some Python in this session?15:13
mterryI hadn't planned to, no.  I think there are better resources than me for that15:13
=== irfan_ is now known as van
mterryOK, there are no more questions, so I'll start diving into using Quickly more15:14
mterryBefore I forget, Quickly also has a built-in tutorial15:14
mterryIf you don't want to listen to me blather15:14
mterryRun "quickly tutorial" in your project directory15:14
mterryBut let's continue with my blathering15:15
ClassBotFlowRiser asked: I see that most of the languages you use require no compiling of the code; is there any chance we'll see a Cpp and GTK template?15:15
mterryThat's certainly a possibility15:15
mterryBut not something we've done yet15:15
mterryQuickly's template system lets someone write such a template easily15:15
mterryIt just hasn't been done15:15
mterryWe had some progress on a Vala template, which is compiled15:15
mterryBut we've found in general, new users prefer non-compiled languages like HTML or Python15:16
ClassBotpeaceisin asked: For using quickly, one need to know how to program in python?15:16
mterryYes, at least for the default recommended template15:16
mterryActually, for all the shipped templates.15:16
mterryBut again, that's not necessarily true in the future15:16
mterryBut is now15:17
ClassBotcoalitians asked: Quickly is in python?15:17
mterryYes.  Both the skeleton project and Quickly itself15:17
ClassBotBebopSteve asked: On "quickly edit," is there anything special about that?  Or can you just use a text editor of your choice15:17
mterryYou can use the editor of your choice.  You can set either EDITOR or QUICKLY_EDITOR environment variables to change it15:17
ClassBotNickE asked: ​ Does Quickly support Python 3 development?15:17
mterryNot yet15:17
mterryWe want to support it, but it's looking like that will happen for 13.0415:18
ClassBotchilicuil asked: does quickly support all data bases?, or do I need to use libraries?15:18
mterryFor that, you don't need special Quickly support15:18
mterryJust import the appropriate Python modules and go crazy15:18
mterryQuickly doesn't limit your choices of how you write your app.  It's just a wrapper around it, to provide some integration support into Ubuntu15:19
mterryOK15:19
mterrySo another useful command to change your app, is "quickly design"15:19
mterryWhich will bring up Glade, a GUI editor15:19
mterryHow to use Glade is a whole 'nother talk, but it tries to be a point-and-click interface builder15:19
=== thotp_ is now known as thotp
mterryIt helps to understand GTK a bit when using it15:20
mterryBut the basic idea is that you can make new widgets in the pane on the left, place them in the middle, and adjust properties of widgets in the bottom right15:20
ClassBotchilicuil asked: Quickly is intent to produce desktop apps or Web ones?15:20
mterryRight now, desktop apps15:20
mterryWe do have an HTML5 template in the community bundle that kind of blurs that a bit15:21
mterryBut it15:21
mterryBut it's still designed for the desktop (runs Python underneath)15:21
ClassBotgreen7 asked: Do we need to know GTK to use Quickly?15:21
mterryYes, for the default template15:21
mterryLike for Glade15:22
=== Unknown12290 is now known as waa3
ClassBotnja asked: ​ Where would you recommend we learn Python?15:22
mterryDive Into Python is very good15:22
mterryhttp://www.diveintopython.net/15:22
mterryOK15:23
mterrySo let's say you're comfortable with Glade and have made some changes (and we can come back to it)15:23
mterryIf you want to see what your project looks like now, run "quickly run"15:23
mterryWhich will load all your edited files and show you the current project state15:24
mterryOne neat trick Quickly does is that when you add a widget, you frequently want to respond to user events on it15:24
mterryLike clicks or whatever15:24
mterrySo Quickly makes it easy15:24
mterryIf you add a widget named button115:25
mterryYou can just write a method in your window class called on_button1_clicked(self, widget, data=None)15:25
mterryAnd do what you need there15:25
mterryQuickly will notice that and hook up the widget to your method15:25
mterryYou need to use the on_WIDGETNAME_SIGNALNAME format15:25
mterryAnd the signature will change depending on the signal type15:26
mterrySee the GTK documentation for details on a given signal15:26
ClassBotgreen7 asked: Is there a difference between packaging and quickly run?15:26
mterryYes15:26
mterrySo quickly run is just a quick spot-check15:26
mterryIt runs all the files from where they are in your project directory15:26
mterryBut quickly package actually creates a Debian package file15:27
mterryWhich you can install into your system if you're root15:27
mterrySo let's say we ran 'quickly package' on our test-project program15:27
mterryIt would give us a file like ../test-project_0.1_all.deb15:27
mterryWe could then run "sudo dpkg -i ../test-project_0.1_all.deb" and install our new program15:27
mterryYou'd see it show up in the dash and everything15:28
=== yofel_ is now known as yofel
mterryBefore you seriously start packaging your app though, it's best to fill out some of the information in the 'setup.py' file15:28
mterryLike homepage and author15:28
mterryAnd to run "quickly license" to specify what the license of your program is15:28
mterryBecause that's all important information before you start distributing it to other people15:29
mterrySo let me talk about packaging a bit15:29
mterryLet's say we think this default app is amazing15:29
mterryAnd we want to distribute it to some friends15:29
mterryWell, first, you should test it locally with quickly package15:30
mterryMake sure that it installs fine15:30
mterryBut if you want to share with a wider community, you might want to set up a PPA15:30
mterryLaunchpad lets you have your own PPA where you can put packages and people can download them as you update the PPA15:30
mterryLet's say you've done that already (I can go into details if desired)15:31
mterryYou'll also need GPG keys set up15:31
mterryAnd SSH keys15:31
mterryLaunchpad has documentation on this15:31
mterryhttps://help.launchpad.net/YourAccount/ImportingYourPGPKey15:31
mterryhttps://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair15:32
mterryBut OK, let's say we've got our PPA set up15:32
mterryThen running "quickly share --ppa mterry/testing" will package up our project and upload it to my (mterry's) 'testing' PPA15:32
mterryquickly share will use a testing version like 0.1public115:33
mterryNot a nice version15:33
mterryBut it's because quickly share is best for uploading in-progress versions for wider testing15:33
mterryWhen you are ready to release for real, use "quickly release"15:33
mterryThis will put it in a PPA but update the version to something nice like 12.0815:33
mterryLet me pause for questions15:34
ClassBotnja asked: ​ What Python editor would you recommend?15:34
mterryI'm a luddite and like just simple gedit15:34
mterrySo I may not be the best person to ask15:34
=== marius is now known as Guest7295
mterryI'm not even sure what other people would recommend15:34
mterryChat room can help out I bet15:34
mterryOK, so I quickly covered share and release15:35
mterryWhich are the two ways Quickly offers to share your project around via a PPA15:35
mterryBut let's say you've finished really polishing your app and it's great now15:35
mterryYou want to get it into the Ubuntu Software Center15:36
mterryThen you can use "quickly submitubuntu"15:36
mterryWhich will also upload into a PPA15:36
mterryBut will make various packaging changes that are required for Ubuntu Extras packages15:36
mterryIf you want to test such changes locally, you can also run "quickly package --extras" to get a local Debian package file that also has those changes15:37
mterry(basically, it puts your application inside /opt instead of sprinkled around the filesystem like in /usr/bin and /usr/share)15:37
ClassBotgreen7 asked: Is Quickly recommended over usual PyGTK programming?15:37
mterryFor an app that you want to share with other Ubuntu users, yes15:37
mterryBut Quickly is really just a shell around usual PyGTK programming15:38
mterryIt helps with packaging and integration, and a little bit of magic like I mentioned between Glade and your code15:38
ClassBotironhalik asked: What's the backward compatibility situation like with Quickly and users using older Ubuntu releases? Are there any issues?15:38
mterryShould be small15:39
mterryQuickly injects a bit of code into your app (in, e.g., the test_project_lib/ folder)15:39
mterrySo that will stay constant as you backport your app to older releases15:39
mterryThe only thing that might cause problems is dependencies15:39
mterrySo if you depend on a newer version of a package, or a package that didn't exist in older releases, obviously that's going to be a problem15:40
mterryBut I believe Quickly itself should work well into the past.  12.04's version uses gobject-introspection for it's GTK/Python bindings15:40
mterryI don't know how far that goes back.  Like, I bet it doesn't work well in 10.0415:41
mterryBut it should for 11.10 at least15:41
ClassBotgigix asked: Does Quickly binds your app strictlty to Ubuntu15:41
mterryNo.  Not your app itself.15:41
mterryIt offers different ways of making your life in Ubuntu easier15:41
mterryLike making a Debian package file and uploading to PPAs15:41
mterryBut your code itself should not require Ubuntu features15:42
ClassBotFlowRiser asked: What are some good GTK resources ?15:42
mterryhttp://developer.gnome.org/ has some15:42
mterryhttp://developer.gnome.org/gtk3/stable/ is an API overview15:42
mterryAnd http://developer.ubuntu.com/resources/ has some15:43
ClassBotmarcosb asked: Ruby template is on schedule?15:43
mterryNope15:43
mterry:-/15:43
mterryI don't know who's working on one15:43
mterryBut it's not on my radar15:43
ClassBotben72 asked: ​ is there a way to make quickly work with python 3 manually even though it's not supported? Yesterday we learned python 3 is the way to go for new applications. :)15:44
mterryGood question15:44
mterryQuickly is unfortunately lagging here15:44
mterryI agree Python3 is the way to go15:44
mterryBut we couldn't get all our features working with it in time.  Notably, the packaging of your app15:44
mterrySo you can certainly start a new Quickly app15:45
mterryAnd then port it to Python15:45
mterry315:45
mterry(Should be real simple)15:45
mterryBut15:45
mterryYou'll lose the ability to run "quickly package", share, release, or submitubuntu15:45
mterry:(15:45
mterryBut you can take the Python2 packaging that Quickly would give you15:46
mterry(if you run quickly package before porting to Python 3)15:46
mterryThen modify the debian/ directory to work with Python 3 yourself15:46
mterryThen don't run "quickly package" youself...15:46
mterryYou'll at least have the benefit of not having to start from scratch15:47
mterryQuickly can give you all the Python2 packaging and code and you can update to work with Python315:47
mterryYou just can't use Quickly's packaging support going forward15:47
mterry:(15:47
mterryOK15:47
mterryQuickly has a few other neat features15:48
mterryLike "quickly save"15:48
mterryWhich will save all your changes into a version control system called bzr (bazaar)15:48
mterryKind of like checkpointing your code after a set of related changes15:48
mterryYou can use bzr directly (like "bzr diff") to see your current changes and such15:48
mterrybzr is great, and it integrates with Launchpad.  Like you can do "bzr push lp:~mterry/+junk/test-project"15:49
mterryTo push all your code into Launchpad (under my account -- obviously change for your account)15:49
mterry+junk is just a trick Launchpad has to let you upload without having to choose a project15:50
mterryIf you've registered your project in Launchpad, you can use it's name instead15:50
mterryBut anyway, that's all Launchpad stuff, not Quickly stuff!15:50
mterryJust wanted to mention quickly save15:50
ClassBotThere are 10 minutes remaining in the current session.15:50
mterryAnother neat trick is "quickly add dialog new-dialog"15:50
mterryLet's say you want to add a save dialog or error dialog or something like that.  A common enough operation that Quickly gives a little help15:51
mterryIt will create the code for you and add it to Glade (but you have to close Glade and relaunch with "quickly design")15:51
mterryAnd run "quickly edit" again to open up the new files15:51
mterryYou'll see your new dialog in code and in Glade15:51
mterryThen just import it in your main window with "from project_name.DialogName import DialogName"15:52
mterryAnd instantiate it with "d = DialogName()"15:52
mterryYou can use "quickly help" to see all the commands available and help for individual commands too15:52
mterryLike "quickly help save"15:52
ClassBotskizobass asked: When you create a new dialog with Quickly. How you separated the script from the main script?15:52
mterryQuickly will create a new python file in (e.g.) test_project/15:53
mterrySo if you ran "quickly add dialog hello"15:53
mterryIt will create a test_project/HelloDialog.py file15:53
mterry(I think I got that name right)15:53
ClassBotnja asked: ​ Is there anything like .toString() in Python?15:53
mterryYes15:53
mterrystr()15:54
mterryso let's say I have an object15:54
mterryo15:54
mterryI do str(o)15:54
mterryto get a string15:54
ClassBotskizobass asked: Quickly separate the code automatically for each dialog ?15:54
mterryYes, if you use the "quickly add dialog" command15:54
mterryYou don't have to do that yourself15:54
mterryYou can organize your code all you want when you write it15:54
mterryBut when Quickly makes them, that's what it does15:54
mterryOK, I only have a few minutes left15:55
mterryI know this was a little scattered, but hopefully you have a better idea what Quickly is15:55
mterryAnd why you might want to use it15:55
ClassBotThere are 5 minutes remaining in the current session.15:55
mterryAgain, I recommend "quickly help" and "quickly tutorial" for exploring on your own15:56
mterryAnd http://developer.ubuntu.com/resources/app-developer-cookbook/all-recipes/ has some neat things you can do15:56
mterryAs does all of  http://developer.ubuntu.com/resources15:56
=== norbi is now known as Guest81889
mterrySeems like no more questions.  Thanks everyone!15:57
ClassBotnja asked: ​ In python, is it possible to have the same constructor with different arguments?15:58
mterryYes and no15:58
mterryYou'd use the same method15:58
mterryBut you can have optional arguments like __init__(option1=None, option2=None)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: Ubuntu Developer Week - Current Session: Getting help to start with Ubuntu Development The developer advisory team and beyond - Instructors: coolbhavi
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2012/08/29/%23ubuntu-classroom.html following the conclusion of the session.16:00
coolbhaviAlright then16:03
coolbhaviHello all! I am Bhavani Shankar a 25 year old ubuntu MOTU developer and I’ll be taking a session today on the new initiative we launched in the previous cycle called the developer advisory team in short DAT :)16:03
coolbhaviIn this session I am going to to show you how we can help you to get involved in ubuntu development if you are interested :)16:04
coolbhaviso lets get started16:04
coolbhavi:)16:04
coolbhavi== Why are we; the DAT here? ==16:04
coolbhaviThe developer advisory team is a bunch of people who make ubuntu development more social in general with an aim to reach out to contributors of varied kinds (with emphasis on new contributors and help them to get around the ubuntu development world)16:05
coolbhavi== Our general process ==16:05
coolbhaviOur process consists of mainly 4 parts:16:06
coolbhaviFirst part is we reach out to interested people by email (by spotting them through various ways for instance, spotting them via the number of uploads they have done this cycle or anyone who expresses interest in ubuntu development and have got their first upload into ubuntu and so on).16:06
coolbhavi(PS: Chances are that if you are a new/experienced contributor, you might have got an email from the DAT too :) )16:07
coolbhaviSecond part is where we interview interested candidates about their experience of development in the Ubuntu world and about their aim as to what they wish to achieve in ubuntu development through questionnaires in the email.16:07
coolbhaviThird part is where we provide pointers ( _not to be confused with one on one mentoring_ ) and track the progress using our own internal trackers.16:07
coolbhavi(Ok lets slow down a bit if m fast)16:08
=== Are is now known as Guest42852
coolbhaviLast part is once the candidate feels he is ready after some contributions we will help setup his application for interview with the developer membership board (DMB)16:09
coolbhaviAny questions are welcome before I move ahead16:09
coolbhavito the next stage :)16:10
ClassBotnja asked: ​ What benifits do you get for being on the DMB?16:11
coolbhavinja, I'm afraid I might not be the right person to ask as I donot serve on the DMB16:11
ClassBotNickE asked: ​ so your main mission is to help people go from beginners / casual contributors to formally-recognised ubuntu devs?16:12
coolbhaviNickE, exactly thats our mission for people who are interested to contribute to ubuntu development16:13
ClassBotBebopSteve asked: Do you or do you plan on having a website with information and various references to help those new to the scene?16:13
coolbhaviBebopSteve, I'll be covering it in later part of the session :)16:14
coolbhaviok lets move on then :)16:14
coolbhaviok next question which might crop up in your mind is I'm interested so how can I start16:16
coolbhavi?16:16
=== keffie_jayx is now known as effiejayx
coolbhaviour answer would be simple if you are interested we are there to help you out :)16:17
coolbhavimoving on :)16:18
coolbhavi== Do you personally mentor me in any way? ==16:18
coolbhaviUnfortunately, the answer is “no”. We only provide pointers (for instance in the form of weblinks or introducing you to the team which you might be interested in contributing in (Like the desktop team, the security team, etc)16:19
coolbhavi(In case you get stuck in your ubuntu development related adventure you can always get in touch with the Ubuntu MOTU devs on #ubuntu-motu on irc.freenode.net or ubuntu-motu@lists.ubuntu.com)16:19
ClassBotFlowRiser asked: What is my skillset isn't that advanced or wide ?16:19
coolbhaviFlowRiser, you need not have to worry not everyone will start as hardcore programmers/coders :)16:20
coolbhavi== Can you provide me any pointers now to get started into ubuntu development? ==16:21
coolbhaviGetting started is pretty straightforward. You can have a look at the packaging guide for a start http://developer.ubuntu.com/packaging/html/ and to get involved one can have a look at the bug fixing initiatives for a start https://wiki.ubuntu.com/UbuntuDevelopment/BugFixingInitiative16:21
ClassBotNickE asked: ​ Can you remind me what "MOTU" stands for?16:21
coolbhaviNickE, MOTU stands for Masters of the Universe the team which takes care of universe and multiverse component in ubuntu16:23
ClassBotskizobass asked: is necessary some certification for make part of the community?16:23
coolbhaviskizobass, not required :) as I said earlier only interest is required :)16:24
coolbhaviok moving on :)16:25
coolbhavi== What sort of people we reach out for? ==16:25
coolbhaviWe reach out to new contributors and to experienced contributors who do not yet have upload rights to the ubuntu archives alike, also to people who have gone inactive to see if there’s anything we can do for them.16:25
coolbhavi== I am an existing contributor for “x” months and wish to apply for upload rights. Can you help? ==16:26
=== thisfred_ is now known as thisfred
coolbhaviDefinitely :) (but the general requirement of the DMB is minimum 6 months of sustained contributions to apply for upload rights). Also a good idea is to reach out to your sponsors and ask them to add comments to your application.16:26
coolbhaviAny questions anyone please feel free to ask :)16:27
ClassBotBebopSteve asked: What is the difference between contribute and upload?  Don't you have to upload to contribute?16:28
coolbhaviBebopSteve, yes but until you get upload rights to the archive you contribute your changes to a bug for instance and a person who has access to the archive uploads the change on your behalf16:30
ClassBotFlowRiser asked: What do you mean by sponsors ? We do this for free :D16:31
coolbhaviFlowRiser, The process of uploading a change by someone who has archive access on behalf of you is called sponsoring a package in debian/ubuntu world and the devs who do that are called sponsors16:33
ClassBotskizobass asked: Is necessary be a python developer? What other work do the contributors?16:33
coolbhaviskizobass, its not absolutely mandatory but experience in python development helps you to work much quicker on your favourite python stuff in the ubuntu world :)16:35
ClassBotFlowRiser asked: Is it possible to list domains of activity (apps, GUI, kernel,modules, etc ) we can contribute to, in order of difficulty or skillset requirment ?16:35
coolbhaviFlowRiser, yes you can have a look at the TEAMS page or the MOTU page on the ubuntu wiki for a start on different teams and how to contribute16:36
ClassBotNickE asked: ​ So if you gain the trust of sponsors by doing good work, you eventually achieve the same status as them, yes?16:37
coolbhaviNickE, yes :) you gain archive access and become a dev yourself :)16:37
ClassBotTheLordOfTime asked: Are devs automatically sponsors, and vice versa?16:39
coolbhaviTheLordOfTime, yes as they can upload your changes into the archive they can sponsor you and in debin/ubuntu world to sponsor something you need to have necessary upload rights16:40
coolbhavimoving ahead then :)16:41
coolbhavi== This sounds like an interesting initiative, how can I help out? ==16:41
coolbhaviIf you find this is an interesting initiative you can always help us to improve in the future with your feedback to us which is really valuable to us.16:42
coolbhavi(Please find the feedback report of the last cycle here: http://fridge.ubuntu.com/2012/04/17/developer-advisory-team-report-12-04-feedback-from-new-contributors/ )16:42
coolbhavi== Alright! Who are the current members of the team and how to get in touch with them? ==16:43
coolbhaviThe team in its full might is shown here: https://launchpad.net/~ubuntu-developer-advisory-team/+mugshots16:43
coolbhaviFor any feedback/rants please feel free to get in touch with any team member :)16:43
coolbhaviThats it I am done then :) Since time is left over anyone can ask me questions if any regarding the same :)16:45
ClassBotNickE asked: ​ Do members of your team have special skills in particular areas or can you all help with anything?16:47
coolbhaviNickE, yes some of our team members do have I believe but we can help you out with anything thats related to ubuntu development16:48
ClassBotskizobass asked: If I write apps & games with Python… Where I can submit me?16:48
coolbhaviskizobass, we have the Application review board for reviewing apps in ubuntu and you can submit your app there16:50
ClassBotThere are 10 minutes remaining in the current session.16:50
ClassBotmarcosb asked: the application review board is for all softwares or just softwares for ubuntu software center "pay area"?16:51
coolbhavimarcosb, the ARB is for reviewing free apps there is a separate commercial team to review commercial apps16:52
ClassBotstadtfeld asked: Do you only provide help to current contributers or to anyone who is willing to get started as well?16:53
coolbhavistadtfeld, we provide help for new and experienced contributors alike16:54
ClassBotalucardni asked: can I apply for upload rights if I've been contributing to Debian?16:54
ClassBotThere are 5 minutes remaining in the current session.16:55
coolbhavialucardni, yes based on the impact it has got on ubuntu and you can apply for PPU I think to upload your packages16:56
coolbhavialright then thanks everyone for turning up!16:57
coolbhaviyou can catch me on facebook at facebook.com/bshankar or on google+ too16:58
coolbhaviUntil next time bye to all!16:58
tumbleweedHello everyone17:00
tumbleweedthanks coolbhavi, hope you all enjoyed is session17: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: Fixing small bugs and forwarding the patches upstream - Instructors: tumbleweed
tumbleweed*his17:00
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2012/08/29/%23ubuntu-classroom.html following the conclusion of the session.17:00
tumbleweedeveryone having a good Ubuntu Developer Week?17:01
tumbleweedLet's get an idea of how many people are here: please say hi in the chat channel17:01
tumbleweedthat's #ubuntu-classroom-chat, which is also the place to ask questions. Please start them with QUESTION: so the bot can pick them up17:01
tumbleweedIf you have any questions with any of this, when you go home and do this, afterwards17:01
tumbleweedI suggest sticking your nose into #ubuntu-motu and asking there17:01
tumbleweedit's full of friendly ubuntu developers17:01
tumbleweed\o/ Glad to see such good attendance at these talks17:01
tumbleweedso, I'm Stefano Rivera, an Ubuntu Developer and a Debian Developer17:02
tumbleweedI live in (the not quite so sunny at the moment) South Africa17:02
tumbleweed(and right now, I'm in a friends flat, with a laptop, in the corner, on a 3G connection. So hopefully I won't unexpectedly vanish)17:03
tumbleweedI'm here to talk about dealing with upstreams17:03
* tumbleweed sees a few familiar faces here :P17:03
tumbleweedWhat do I mean by an upstream?17:03
tumbleweedwell, Ubuntu is made up of ~20 000 source packages, (which build ~40 000 binary packages)17:03
tumbleweedus Ubuntu Developers don't write all of those ourselves. We only authored a tiny handful of them17:03
tumbleweedeverything else came from other projects17:04
tumbleweedsome of these are big projects like GNOME and KDE, which produce hundreds of packages17:04
tumbleweedmost are tiny little projects with one, or maybe half a dozen active contributors17:04
tumbleweedthese projects are our upstreams17:04
tumbleweedthey release new versions of their software, and we package it, make a few tweaks to get it to work nicely with the rest of Ubuntu, and ship it to users17:04
tumbleweedthen we are on the front-line of incoming bug reports, and have to forward the relevant ones back to the upstreams17:04
tumbleweedsounds like fun, right :)17:04
tumbleweedOK, I lied a bit there17:05
tumbleweedI assume you all know that Ubuntu is derived from Debian17:05
tumbleweedin fact, about 75% of packages in Universe are entirely unmodified from Debian17:05
tumbleweedthat's a very good thing17:05
tumbleweedthere's no need for those packages to be modified in Ubuntu17:05
tumbleweedthe vast majority of bugs that we'd encounter in them are relevant to Debian, Ubuntu, and (if except for packaging bugs, the original upstream)17:05
tumbleweedSo Debian is also an upstream of Ubuntu. A very special upstream which we care a lot about17:05
tumbleweedWe contribute a lot back to Debian (as much as possible)17:06
tumbleweedhttps://wiki.ubuntu.com/Debian/ForUbuntuDevelopers17:06
tumbleweedI can go into some more specifics of dealing with Debian, later17:06
tumbleweedbut, now, let's talk about upstreams in general17:06
tumbleweedit makes sense to fix bugs them as close to the source as possible17:06
tumbleweedthat means the least duplication of effort, and shares the benefit as widely as possible17:07
ClassBotmarcosb asked: please tell us about packages nameclature, like hello_1.1-1ubuntu1.deb hello_1.1-1upstream1.deb etc.17:07
tumbleweedsure17:07
tumbleweedall .deb files are named package_version_arch.deb17:08
tumbleweedthe version can give some idea of the package's ancestory17:08
tumbleweedpackages that were written in Debian, only for Debian (and derivatives) have a version that looks like 1.0.017:09
tumbleweedthere's no '-1' at the end17:09
tumbleweedif a debian developer packages an usptream version 1.0.0, her package will be versioned 1.0.0-117:09
tumbleweed-1 meaning first upload to Debian17:09
tumbleweedif we modify that package in Ubuntu, the version would be 1.0.0-1ubuntu117:09
tumbleweedif we jumped to 1.0.1 in Ubuntu, before Debian got there, we'd call it 1.0.1-0ubuntu117:10
tumbleweedetc.17:10
tumbleweedof course, not everyone follows these rules, but almost all the time, they are relevant17:11
tumbleweedso, I was talking about why we should work with upstreams:17:12
tumbleweedif we submit a patch to the upstream developers, and they release a new release containing our bug fix, it benefits everyone:17:12
tumbleweedusers of other linux distributions, cygwin and macports users, people who installed this package themselves from scratch, etc.17:12
tumbleweedand the upstream can probably give you useful review of your bug fix17:12
tumbleweednobody knows the code like they do17:12
tumbleweedI hope at this point, you are aware of some the advantages of working well with our upstreams17:13
tumbleweed(and that I might have written up some of this beforehand, for pasting) :P17:13
tumbleweedHow can you find a bug to work on?17:14
tumbleweedWe've tried to put a good collection of things for new developers to work on here:17:14
tumbleweedhttps://wiki.ubuntu.com/UbuntuDevelopment/BugFixingInitiative17:14
tumbleweedThe first batches there are Ubuntu-only issues, which won't require any forwarding to anyone17:14
tumbleweedSo they're a good place to start if you Ubuntu Development is something you want to get into17:14
tumbleweedThe later batches affect more than just Ubuntu, and the patches for them will need to be sent upstream17:14
tumbleweed(which is what we are really here to talk about today)17:14
tumbleweedAnother good way to get into Ubuntu Development is to find a package that you care about, that needs work17:15
tumbleweedSomething with a few (or even lots of) open bugs that really just needs someone to go through them17:15
tumbleweedmaybe we've even fixed a few bugs in it, and not sent the patches upstream17:15
tumbleweedUbuntu developers can be naughty and lazy :)17:16
tumbleweedThere are *lots* of packages like that in the archive17:16
tumbleweedIn Debian, every package has explicit Maintainers who are looking after them17:16
tumbleweedBut in Ubuntu, most packages don't have anyone paying any attention to them17:16
tumbleweedI've tried to collect a list of especially neglected packages that aren't in Debian, here:17:16
tumbleweedhttp://qa.ubuntuwire.org/neglected/17:16
ClassBotAmberJ_ asked: Quoting you from #ubuntu-classroom "if we modify that package in Ubuntu, the version would be 1.0.0-1ubuntu1" ... what if we don't modify Debian package in Ubuntu?17:16
tumbleweedthen it keeps the same version as Debian17:16
tumbleweedas I said much earlier, most of the archive is entirely unmodified debian17:17
tumbleweedwe have a slightly different toolchain that'll build things a little differently17:17
tumbleweedbut most packages don't have modified source17:17
tumbleweedHow do you fix the bug?17:18
tumbleweedThat's a hard question to answer. It depends entirely on the bug17:18
tumbleweedAll I can really tell you about is how to get your hands on the source code and what to do once you've fixed it17:18
tumbleweeddholbach will have covered the first part o fthat, yesterday17:18
tumbleweedbut let me remind you17:18
tumbleweedinstall the packaging-dev package, it'll give you lots of useful tools17:19
tumbleweedyou can grab the source for an Ubuntu package by running: pull-lp-source PACKAGENAME17:19
ClassBotmarcosb asked: I learn how create patches in this session?17:20
tumbleweedsure, that sounds like a useful thing to talk about17:20
tumbleweedthere are two common ways of dealing with source packages in Ubuntu. The traditional debian tools, and bzr17:20
tumbleweedI'm going to mostly talk about the traditional tools because they are more widely applicable, and I find them faster17:21
tumbleweedso, you've downloaded and extracted a source package with pull-lp-source17:22
tumbleweednow, you see something obvious to fix17:22
tumbleweedat this point, there could be several different things you need to do, thanks to a few different ways of packaging things17:23
tumbleweedyou can run the "what-patch" command to see how the package represents patches17:23
tumbleweedlet's assume that the package uses quilt patches, they are the most common these days. Hopefully the other systems will fade away17:24
tumbleweedyou'd run: quilt new MYPATCHNAME17:24
tumbleweedthen quilt edit FILENAME17:25
tumbleweedthen quilt refresh, which will build the patch17:25
tumbleweedand you can find it in debian/patches17:25
tumbleweedmost of the time, when working on debian packages, that's how you'll be generating the patches17:26
tumbleweedthat patch you generated, you can now send to the upstream project17:27
tumbleweedhow do you find where they are?17:27
tumbleweedwell, let's start with Debian17:27
tumbleweedevery You can see more information about the package at http://packages.qa.debian.org/$PACKAGENAME17:28
tumbleweederr ignore the every17:28
tumbleweedso, for the hello package, go to http://packages.qa.debian.org/hello17:28
tumbleweedat this point, I'm talking about source packages, not binary packages17:28
tumbleweedas developers, we're almost entirely working with source pcakages17:28
tumbleweedthe binary packages are just smoething that'll be built when we are done17:29
tumbleweedon that packages.qa.debian.org page (called the PTS, package tracking system)17:29
tumbleweedyou'll find a list of the debian bugs, in the top rigth corner17:30
tumbleweedyou can see who the debian maintainer is in the top left17:30
tumbleweedand see the upload history in the middle17:30
tumbleweedso, now we'd look through the debian bugs17:31
tumbleweedthere's currently only one17:31
tumbleweedbut if we saw the bug we were working on, there, we'd go and have a look at it, and see what progress there has been17:31
tumbleweedmaybe there's a patch on it? maybe it's been forwarded to the upstream17:32
tumbleweedwe can see that the bug there (bugs.debian.org/621716) has been forwarded upstream17:32
tumbleweedwe don't have a link to the upstream bug, though, it was just forwarded to an e-mail address17:32
tumbleweedsome usptream projects don't have formal bug trackers, and the best we can do is say "we mailed the author"17:33
ClassBotmarcosb asked: there's another patch mechanisms or just quilt?17:33
tumbleweedyeah, I'm afraid so. there are two other common patch systems: dpatch and cdbs-simple-patch (but both are declining in popularity)17:34
tumbleweedand some packages have no patch management system at all17:35
tumbleweedthat means that all the patches that debian & ubuntu have applied to the package are mixed together in one big diff17:35
tumbleweedthat's really easy to work with, but hard to understand what's going on in the patch17:35
ClassBotcalmi asked: is there a system that helps to avoid duplicates?17:37
tumbleweedyes, look before you file new bugs17:37
tumbleweedlaunchpad's bug filing interface is actually really good at this17:37
tumbleweedafter you've entered a title, it finds you similar bugs17:37
tumbleweedthe standard bug filing tool for Debian, reportbug, also presents a list of all open bugs for you to review, before filing yoru bug17:38
ClassBotmarcosb asked: Can you tell how generate packages with dpatch and dbs-simple-patch?17:38
tumbleweedI won't cover those now, they are rare enough that we don't need to worry about them (I think)17:38
tumbleweedlet's rather just talk about packages that don't have any patch system at all17:38
tumbleweedthe easiest way to get a patch out of them17:39
tumbleweedis to make your change, add a new changelog entry with dch (I assume dholbach covered that earlier)17:39
tumbleweedand build a source package17:39
tumbleweedthen you can diff the old package to the new one with the "debdiff" tool17:39
tumbleweedso, debdiff foobar_0.1-1.dsc foobar_0.1-1ubuntu1.dsc17:40
tumbleweedand you'll get a patch that shows the difference between 0.1-1 and 0.1-1ubuntu117:41
tumbleweed(sorry, lost 3g signal for a minute, there)17:42
tumbleweedback to what I was saying before:17:42
tumbleweedso, we've been looking at the debian bug tracker, and we don't see a bug that describes the issue we ware working on17:43
tumbleweednow, we make a decsion: is the bug I'm working on a debian packaging bug?17:43
tumbleweedif so, we'd better forward it to debian17:43
tumbleweedis it an upstream bug, but something that's important enough that we should fix it in Debian while we wait for the upstream to fix it17:44
tumbleweedor it affects a debian stable release, and is serious enough that they'd want to cherry-pcik the fix for the stable release17:44
tumbleweedif so, we'd also forward it to debian17:44
tumbleweedif we don't have a reason to forward it debian, we are just looking for the upstream authors17:45
tumbleweedwe can find them in a few ways17:45
tumbleweedmost packages helpfully have a Homepage field in the control file, tha ttells us where the upstream project is17:45
tumbleweedif there is such a tag, you'll see a link to the homepage on the right side of the PTS17:45
tumbleweede.g the hello package has such a link: http://packages.qa.debian.org/hello17:46
tumbleweedtaking us to http://www.gnu.org/software/hello/17:46
tumbleweedand that page tells us that the hello bugtracker can be found on savannah http://savannah.gnu.org/projects/hello/17:46
tumbleweedeventually, we got there.17:46
tumbleweednow, we can file a bug with them (after seeing if it's already there, or been fixed already) and giv them the patch we created17:47
tumbleweed\o/ success17:48
ClassBotjsjgruber-l85-p asked: Might not the upstream ask us things we don't know about how the original bug reporter found the bug, etc.?17:48
tumbleweedthat's very likely17:48
tumbleweedmany upstreams aren't particularly interested in linux distributions that ship "ancient" versions of their packages to users17:48
tumbleweedso, the most useful thing you can do is see if the the current development version of their package still has the issue17:49
tumbleweedhow you do that will depend entirely on the project17:49
tumbleweedI generally find it useful to reproduce the bug myself17:49
tumbleweedthen I know if I've fixed it or not, for a start17:49
tumbleweedand I can place myself in the same position as the original reporter17:50
tumbleweedand write a good bug report for the upstream17:50
tumbleweedif only every bug was easily reproduced, though :P17:50
tumbleweedany more questions? we have 10 mins left17:50
ClassBotThere are 10 minutes remaining in the current session.17:50
tumbleweedoh, snap, ClassBot17:51
* tumbleweed gives ClassBot a cookie17:51
tumbleweedok, well in that case, let me spend a few minutes talking about the debian bugtracking system17:52
tumbleweedI'll happily be interrupted by questions, though17:52
ClassBotjsjgruber-l85-p asked: What can you do if the Debian/upstream developer doesn't get back to you?17:52
tumbleweedwe can fix the issue in Ubuntu, and get on with lifet17:53
tumbleweed*life17:53
tumbleweedif the upstreams aren't responding, to anything, though, that may be a sign that they are no longer usefully maintaining their package17:53
tumbleweedif they stop responding at all, and stop producing new releases, after a while, we'd remove the package from debian/ubuntu17:53
tumbleweed(unless someone else takes over the upstream development)17:54
tumbleweedso, I still have a couple of minutes, back to the BTS17:54
tumbleweeddebian's bug tracker (the BTS) lives at bugs.debian.org17:54
tumbleweedthe easy links for you are: bugs.debian.org/PACKAGE, and bugs.debian.org/BUG17:55
ClassBotThere are 5 minutes remaining in the current session.17:55
tumbleweedyou'll notice that there aren't any forms for adding comments or filing bugs17:55
tumbleweedthat's because the whole thing is driven by email17:55
tumbleweedyou may find that a little archaic, but it works fairly well17:56
ClassBotben72 asked: ​ When the patch is very small, does it make sense to just post it as a comment in the bugtracker?17:56
tumbleweedwell, yes17:57
tumbleweedthat's pretty much how we forward patches17:57
tumbleweedhopefully the bug trackre has some way of attaching a patch to a comment17:57
tumbleweedbut sometimes you just have to include the patch inline in the comment17:57
tumbleweedand sometimes the patch is so trivial, that you just have to describe it and don't need a patch17:57
tumbleweedif your patch is too big: you are probably better of breaking it up into multiple patches17:58
tumbleweedsplit into logical ideas17:58
ClassBotmarcosb asked: after a add changelog entry and patch with quilt, i generate new source (debuild -us -uc) and thendebdiff?17:58
tumbleweeddebuild -uc -us -S17:58
tumbleweedthen debdiff17:58
tumbleweednote the -S which builds a source package only, no binary packages17:59
tumbleweed(it's *much* quicker to not build binaries)17:59
tumbleweedok, I guess I'm out of time17:59
tumbleweedthanks everyone17:59
tumbleweedhope to see you all getting involved, soon17: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: libmessagingmenu - Instructors: larsu
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2012/08/29/%23ubuntu-classroom.html following the conclusion of the session.18:00
larsuhi everyone18:01
larsuI'm Lars, I'll talk a bit about the changes we've made to the messaging menu this cycle18:01
larsumost importantly: libmessaging-menu, the new API for applications to integrate with the messaging menu18:02
larsuplease don't hesitate to ask questions anytime18:02
larsuall the changes we've made have just landed in quantal a couple of days ago18:03
larsufor those of you already running quantal: that's the reason some apps show up in the menu right now ;)18:03
larsulet me just give a very short overview of the messaging menu18:04
larsuI assume most people here will be familiar with it18:05
larsuit's this little icon that sits in your panel, notifying you about incoming messages from various applications18:05
larsualso, it let's you set a global chat status for all apps at once18:05
larsuand it provides a way to launch messaging-related applications18:06
larsuup until now, three apps were always shown in the menu (Chat, Mail, and Broadcast)18:06
larsustarting from quantal, this will not be the case anymore: if no application is configured to show up in the menu, the menu will simply disappear18:07
larsualso, all applications will be referred to by their "real" name and icon, so Chat --> Empathy, Mail --> Thunderbird and Broadcast --> Gwibber18:07
larsuand ubuntu1 is gone from the messaging menu. It's not a messaging app anyway18:08
larsuif you're interested in why the menu works the way it is, there is a design specification with all the rationale at https://wiki.ubuntu.com/MessagingMenu18:09
larsuof course, we encourage application authors to integrate their apps with the menu18:10
larsu(where it makes sense of course ;) )18:10
larsu!Q18:11
ClassBotironhalik asked: With the new messaging menu, what's the situation with backward compatibility with Precise and older releases? Should I develop with Quantal or Precise in mind for largest userbase?18:11
larsugood question: the messaging menu in quantal is not backward compatible with the one in precise18:12
larsuwe pondered keeping that, but it was more work than it was worth18:12
larsuto reach the biggest audience, you probably want to develop for precise, since that is the current release and it is an lts18:13
larsuif you think you have cutting edge users that will mostly be on the new version of ubuntu, I recommend going with the new API18:14
larsuit's much easier to use I am told ;)18:14
larsuironhalik, does that answer your question?18:14
larsuso, each application gets a section in the messaging menu, which contains 3 types of items18:16
larsu(1) the application launcher itself, with a litte triangle next to it if the application is running18:16
larsu(2) shortcuts to commonly used actions (for example thunderbird has "Compose New Message" and "Contacts")18:17
larsu(3) the most important one: message source (for example, Thunderbird will add a menu entry for each mailbox that has new messages)18:17
larsu(1) and (2) are completely controlled by the applications .desktop file and cannot be changed while the application is running18:18
larsuto make the shortcut actions (2) that you have defined in the .desktop file appear in the messaging menu, the "TargetEnvironment" or "OnlyShowIn" keys must contain "Messaging Menu"18:19
larsuthis is exactly the same way quicklists are handled for the launcher18:19
larsuso, let's go ahead with a concrete example of how to use libmessaging-menu18:20
larsuI'll paste a small python program line-by-line and explain what each line is doing18:21
larsufirst: you need the gir1.2-messagingmenu-1.0 package, which is installed by default in quantal18:22
larsuas usual with gobject introspection, the first line of python is:18:22
larsu>>> from gi.repository import MessagingMenu, GLib18:22
larsuwe'll need GLib later for the mainloop18:23
larsuas an aside: nothing will get send to the messaging menu until you run the main loop18:23
larsunext, you need to create a MessagingMenuApp object, which represents one application section in the menu18:24
larsu>>> mmapp = MessagingMenuApp(desktop_id="thunderbird.desktop")18:25
larsuyou pass a desktop file id into the constructor, from which the items (1) and (2) I talked about earlier will be created18:25
larsuin this case, we're pretending to be thunderbird18:25
larsuto notify the messaging menu that our application is running, we call18:26
larsu>>> mmapp.register()18:26
larsuthis does two things: if the application has never been in the menu before, a section will be created for it18:26
larsuand secondly, the application will be marked as "running" (with the little triangle next to it)18:27
larsuokay, now let's add a message source to the section:18:28
larsu>>> mmapp.append_source_with_count("inbox", None, "Inbox", 3)18:29
larsuthis will append a new item with the label "Inbox" with a count of 3, which is shown on the right side of the menu item18:29
larsuthe first parameter of this call is a unique identifier, the second one an optional icon (or None if you don't need one)18:30
larsuthe third one is the label, and the fourth a count18:30
larsuanalogous, there's also append_source_with_time, which you can pass a time stamp18:30
larsuthe messaging menu will display the amount of time passed since that timestamp for these items18:31
larsu(for example, empathy uses that for incoming instant messages)18:31
larsuif you want the messaging menu envelope in the panel to turn blue, because the received notification is an important one:18:32
larsu>>> mmapp.draw_attention("inbox")18:32
larsuyou just pass that function the id that we used to create the item18:32
larsunow, we want to get notified when the user selects the source and - for the sake of this example - simply print which source was activated18:34
larsuso we first need a small function18:34
larsu>>> def source_activated(mmapp, source_id): print id18:34
larsusorry, that's "print source_id" of course18:34
larsunow, we can connect to the mmapp's "activate-source" signal18:34
larsu>>> mmapp.connect("activate-source", source_activated)18:35
larsuthe source will be automatically removed when the user clicks on it18:35
larsuto try this out, let's spin up a main loop:18:36
larsu>>> GLib.MainLoop().run()18:36
larsuthe messaging menu will automatically mark your application as "not running" when it stops running, no need to do anything18:37
larsuhowever, if you want to completly remove the application from the menu, call18:38
larsu>>> mmapp.unregister()18:38
larsuyour application should remove any sources from the menu when the user gets to them in some other way18:39
larsufor example, when thunderbird is opened from the launcher and the user reads all messages that way18:40
larsucall mmapp.remove_source("inbox") to do this18:40
larsuthere's not much more to it :)18:40
larsuunfortunately, I didn't manage to upload the API documentation in time for this talk, but it will appear on developer.ubuntu.com soon18:41
larsuand since it's a gobject-based library, your favorite programming language is most likely supported18:41
larsuhm, I've been talking all this time: are there any questions?18:41
larsuI've pasted our little example here: http://pastebin.ubuntu.com/1174375/18:43
ClassBotThere are 10 minutes remaining in the current session.18:50
ClassBotThere are 5 minutes remaining in the current session.18:55
ClassBotmarcosb asked: can i implement this example in ruby?18:55
larsumarcosb, to be honest, I'm not sure if there is gobject-introspection for ruby (ruby doesn't seem to be very popular amongst linux desktop programmers)18:56
larsuif there is, then you can implement this example in ruby18:57
larsua quick google search seems to suggest that they exist18:57
larsuwell, not many questions: hope you enjoyed it anyway. Bye!18:58
ClassBotironhalik asked: Regarding the compatibility with Precise - If I was developing on 12.10 machine, how can I take the API differences into account to stay compatible with Precise?19:00
=== Alexander is now known as Guest11820
=== 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 Juju Tips and Tricks - Instructors: m_3
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2012/08/29/%23ubuntu-classroom.html following the conclusion of the session.19:00
m_3thanks larsu19:00
m_3hi all19:00
m_3I'll be talking about some fairly new tools we've recently added to Ubuntu Server19:01
m_3I've got notes and a demo session set up at the following URL:19:02
=== sayan_ is now known as sayan
m_3http://ec2-107-22-155-155.compute-1.amazonaws.com/19:02
m_3you can either go there in a browser or just ssh directly in19:02
m_3the username and password are both 'guest'19:02
m_3I've got a little overview of where we are in the talk and then a demo session open as well19:02
m_3ok, so Juju!19:03
m_3juju's a set of tools that help out when you're managing services involving multiple servers... real or virtual19:04
m_3in fact... we're really trying to shift the way people think about configuring services on ubuntu server19:04
m_3instead of thinking about configuring _servers_19:04
m_3you configure the _services_ themselves19:04
m_3let's look at some simple examples first19:04
m_3(dragging heels a bit here to let peeps get connected to the demo site)19:05
m_3so if we think about a simple stack of services... wordpress for example19:05
m_3if you're putting this together on servers, you've got a bit of a pain in waiting for one server to reach a certain point of the install, then going to the other one... adding some config... then waiting again19:06
m_3this really is a synchronization problem or what we like to call "service orchestration"19:07
m_3well juju solves that problem well19:07
m_3we can use a handful of really simple examples to deploy a stack of services19:08
m_3I'll deploy some in real-time while we're chatting19:08
m_3and that's really it... we just need to wait for those instances to start up19:09
m_3first question to ask is where are these starting up at?19:09
m_3these are spun up using a "local" provider (note the addresses)19:10
m_3ok, well no addresses yet19:10
m_3:)19:10
m_3it's building out little ubuntu server instances using lxc containers19:10
m_3well local provider is only one type19:10
m_3we can use juju to control services on ec2 cloud, hp cloud (openstack in general)19:11
m_3as well as orchestrate services on bare metal with MaaS (metal-as-a-service)19:11
m_3I'll show a couple of examples of providers as we go19:11
m_3it's worth noting that this is somewhat of a "toy" example19:12
m_3but don't be fooled by that...19:12
m_3we can do more sophisticated stacks... consider the mature mediawiki stack for a second19:13
m_3we'll cover more details here, but I just want to point out that we can use juju to manage a real production-grade stack of services19:13
m_3mysql with read-only replicas19:14
m_3multiple wikis19:14
m_3each with heads fronting multiple nodes19:14
m_3all attached to the databases with monitoring and caching19:14
m_3etc19:14
m_3it's pretty cool from that regard19:14
m_3so let's back up to our simple example19:14
m_3so the services we can deploy are numerous19:15
m_3the template sorta things we use to deploy services are called "charms"19:16
m_3we've got lots of them already as we saw in the more complex example19:16
m_3jujucharms.com shows lots more19:16
m_3ok, let's check in on the simple stack we spun up a sec ago19:16
m_3ok, we're golden19:17
m_3note that we have two service units... mysql/0 and wordpress/019:17
m_3yes, the /0 implies that there could even be a /100019:17
m_3multiple "units" of the same "service"19:17
m_3juju scales really well, but we'll get back to that in a big19:17
m_3s/big/bit/19:18
m_3ok note that these services have ip addrs19:18
m_3well they've each got dedicated lxc containers19:18
m_3we could... for instance... ssh into one of them19:18
m_3so I've ssh'd to a local instance inside of this one19:18
m_3similarly, if we look at the same stack up on somewhere like ec219:19
m_3(I spun this up before the talk)19:19
m_3node the addresses19:19
m_3and familiar service units19:19
m_3mysql/019:19
m_3etc19:19
m_3we can verify that the charm is up and running properly...19:21
m_3which is as expected once wordpress is up19:21
m_3note that when we're working on the local provider things respond a bit faster than when using remote cloud providers19:22
m_3ok, so charms are the templates we use for deploying services19:23
m_3and we've seen a little bit of the local provider's usefulness19:23
m_3I'll leak a couple of other tips early here... charmtools19:23
m_3ok, so a charm is pretty simple19:24
m_3it's capturing the community's best practice for how to deploy and scale a service19:25
m_3but it does it through a fairly simple structure19:25
m_3the hooks/ are the magic19:25
m_3they're called by juju at the right time19:25
m_3_that_'s what provides the synchronization / orchestration19:25
m_3the metadata for each charms shows how the "plug" together19:27
m_3note the provides and requires19:27
m_3tic tock19:28
m_3here we can see how the ones we deployed earlier fit together19:28
m_3a couple more things about charms19:29
m_3the hooks are just scripts19:29
m_3then can be written in any language with an ubuntu runtime19:29
m_3or even compiled19:29
m_3they've just gotta play nicely with shell exit codes for juju to know if they errored out or not19:30
m_3ok, so the talk's supposed to be about tips-n-tricks and not just all about charms19:30
m_3before I move on, are there any questions about juju in general or charms and the basics of how they work?19:31
m_3ok, so tips19:32
m_3we already saw "local provider"19:32
m_3basics are... use it first and it's a lot quicker19:32
m_3it really makes for a somewhat production-realistic dev environment19:32
m_3concurrency issues'll show up earlier here than other local dev methods19:33
m_3and boom19:33
m_3now I've caused all sorts of problems for development if the code doesn't handle scaling or concurrencly19:34
m_3it's cheap and easy for developers to test that out now... _before_ it gets into production19:34
m_3we see haproxy is pending19:34
m_3and that we now have a second unit of wordpress19:35
m_3if you're having troubles with ajaxterm, please just ssh directly into the instance19:35
m_3there's a limit to how many peeps can connect to ajaxterm at once in this incarnation of the byobu-classroom charm19:35
m_3and yes, we _are_ eating dogfood here :)19:36
m_3ok, so local providers cool19:36
m_3next tip is about managing environments in production19:36
m_3so juju manages security and access to nodes via ssh19:37
m_3if you don't tell it otherwise, it injects the cli user's default ssh keys19:37
m_3well in order for either a.) me to manage the env from multiple machines, or b.) multiple people to manage the environment19:37
m_3then you've got to either share the private side of that key19:38
m_3um... don't do that...it's bad :)19:38
m_3or you set juju up with a list of additional keys to inject into everything19:38
m_3juju is configured with an environments.yaml file in ~/.juju/environments.yaml19:38
m_3I'll show you a sanitized version19:39
m_3I've got three providers in here... local, ec2, and hp's openstack cloud19:39
m_3the way to add other users to manage an environment is just the `authorized-leys` tag19:40
m_3we can take a peek in the local mysql19:40
m_3sorry, local provider sometimes behaves a little differently19:41
m_3but we see the keys we asked it to inject19:41
m_3the last one is for that instance we're controlling from19:41
m_3ok, so next tip19:41
m_3when we deploy like this...19:42
m_3we were deploying straight from the ubuntu charmstore19:42
m_3where you'll get the latest and greatest19:42
m_3juju caches the version of the charm it deploys with, but only for the lifetime of the service19:43
m_3that's so I can add extra units later (like we did with wordpress) and it'll use the same version as the first one19:43
m_3but in general, in production it's a good idea to deploy services you care about from local repos19:43
m_3note the `--repository` in the second script19:44
m_3that's going to use the local one19:44
m_3what I recommend here is that for infrastructure services like haproxy or mysql19:44
m_3things you'd never really tweak that much except for the (extensive) config they offer19:44
m_3deploy those services from the store19:45
m_3custom charms or charms for things that're critical to your infrastructure.... deploy from local repositories19:45
m_3it's fine to mix and match within a single environment19:45
m_3now our local env has some charms from the store and some from local19:46
m_3you can tell from the namespace 'cs' -vs- 'local'19:46
m_3ok, next tip for production19:46
m_3I usually set up a dedicated "client" environment to manage a production environment19:47
m_3we leave a tmux session up that has the right views into the infrastructure19:47
m_3then people can attach/detach at will19:47
m_3I've found this easier to manage than to make sure every ops person in the mgmt group has the right cli setup19:48
m_3ok, just noticed the time...19:48
m_3there's some cool ones left19:48
m_3juju ssh takes args19:48
m_3so...19:48
m_3that's really useful19:50
m_3ok, so next trick19:50
ClassBotThere are 10 minutes remaining in the current session.19:50
m_3jitsu is short for 'juju-jitsu'19:50
m_3it's pretty much just a set of juju plugins19:50
m_3lets you pipe juju status to gource19:50
m_3(can't demo this here... but if you haven't seen gource, google it it rocks!)19:51
m_3lets you do things like http://www.youtube.com/watch?v=Jfnxl1Kh9SY&feature=g-upl19:51
m_3the coolest19:51
m_3and I mean paradigm-shifting coolest thing in this talk19:52
m_3is the ability to export and import between environments19:52
m_3that means between _providers_ even19:52
m_3I can slurp my data out of one region and into another19:52
m_3we'll do A->B b/c it's simple19:53
m_3and yes, that worked19:54
m_3here's vid of local->hp http://www.youtube.com/watch?v=Jfnxl1Kh9SY&feature=g-upl19:54
m_3and vid of ec2->hp http://www.youtube.com/watch?v=HUtR3_YlKXU&feature=g-upl19:55
m_3sorry they're pretty raw (dry), but they were backup videos for a demo in case we lost networking at oscon19:55
ClassBotThere are 5 minutes remaining in the current session.19:55
m_3note that this doesn't move data19:55
m_3we'd have to do something like the 'juju ssh -e ec2-A mysqldump | juju ssh -e ec2-B mysql'19:56
m_3ok, that's all folks19:56
m_3I'll hang around and answer questions in #ubuntu-classroom-chat19:56
m_3but we live in #juju during mostly west europe and us hours19:57
m_3thanks!19:57
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2012/08/29/%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 ||
=== keffie_jayx is now known as effiejayx
momo23:25
=== mo is now known as Guest26045

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